【Openwrt】高通qsdk6.10修改WAN/LAN网口定义-ipq4019

概述

高通提供的qsdk6.10中,对于IPQ4019系列芯片,其switch交换芯片管理的网口定义是写在DTS设备树文件中的。如果需要对相关方案产品进行胖瘦一体支持,就需要自定义WAN、LAN网口区域。

本文参考:https://www.right.com.cn/forum/thread-956683-1-1.html

为何需要修改DTS文件呢,根据上述贴文描述,IPQ4019中,ESS 驱动接管了部分 VLAN 设置,所以不太好通过设置ethX.X这种划分VLAN的方式来进行WAN、LAN隔离。(并非完全无办法)

1、确定DTS文件

修改目标设备的dts文件,例如:qca/src/linux-3.14/arch/arm/boot/dts/qcom-ipq40xx-ap.dk04.1-c1.dts

2、确定WAN、LAN区域内的网口,计算出修改值

首先确定需要隔离的交换端口port。
例如下面的switch交换芯片有7个port(不一定全有使用),其中1,4,5端口接入的物理网口,而0口是连接CPU的端口。
目前需要4,5端口做LAN,1口做WAN口。其它口硬件未使用。

#7口 6口 5口 4口 3口 2口 1口 0口(CPU口)
 0   0   0   0   0   0   0   0
 
#LAN区域
#每位表示一个口,1表示加入该组
#7口 6口 5口 4口 3口 2口 1口 0口(CPU口)
  0   0   1   1   1   1   0  1
#二进制转换十六进制
# 00111101 = 0x3d
  
#WAN区域
#7口 6口 5口 4口 3口 2口 1口 0口(CPU口)
  0   0   0   0   0  0   1   0
# 00000010 = 0x02

计算好WAN、lan区域对应的十六进制值,就可以开始修改DTS了

3、修改设备树文件,UCI配置

找到设备树中的ess-switch定义,按下面方式修改。gmac也要一并修改。

ess-switch@c000000 {
        switch_cpu_bmp = <0x1>;
        //LAN区域隔离值
        switch_lan_bmp = <0x3d>; /* lan port bitmap */
        //WAN区域隔离值
        switch_wan_bmp = <0x02>; /* wan port bitmap */
};

edma@c080000 {
        gmac0 {
                local-mac-address = [000000000000];
                qcom,poll-required = <0>;
                qcom,poll-required-dynamic = <1>;
                //定义LAN区域的vlan标签,对应接口eth1
                vlan-tag = <2 0x02>;
        };  
        gmac1 {
                local-mac-address = [000000000000];
                qcom,poll-required-dynamic = <1>;
                //定义WAN区域的vlan标签,对应接口eth0
                vlan-tag = <1 0x3d>;
        };  
}; 

同时修改uci的network配置,与DTS定义保持一致

#/etc/config/network
config switch
	option name 'switch0'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '0t 1'

config switch_vlan 'lanport'
	option device 'switch0'
	option vlan '1'
	option ports '0t 2 3 4 5'

修改好后,就可以开始编译系统。

4、系统中WAN、LAN不同网桥隔离

编译进入系统后,通过操作eth0和eth1两个接口,就相当于操作这两个区域各自的port口集合。
如果需要实现瘦模式,将两个接口加入一个网桥中即可。

通过命令swconfig dev switch0 show可以查看switch芯片的配置。
在这里插入图片描述

不修改DTS文件下实现WAN、LAN隔离

此方法具有局限性,目前测试发现存在间歇性失效问题,没有修改DTS的稳定。

通过给lan区域网口设置pvid实现(没执行这些命令前,相当于网口都是LAN)。重启失效,且有时候会出现LAN口数据不通问题,此时重复执行一遍即可,原因未知。

好处是不影响高通QSDK的组播增强特性(组播转单播),改DTS方案的组播会很卡

	# 命令本体,假设端口定义和上述一致
	swconfig dev switch0 port 5 set pvid 0
	swconfig dev switch0 port 4 set pvid 0
	swconfig dev switch0 vlan 0 set ports '0t 1t 4 5'
	swconfig dev switch0 set apply

	swconfig dev switch0 port 5 set pvid 127
	swconfig dev switch0 port 4 set pvid 127
	swconfig dev switch0 vlan 127 set ports '0t 4 5'
	swconfig dev switch0 set apply
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值