找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 16201|回复: 54

关于Padavan中mtk_esw命令、VLAN设置的问题

[复制链接]
发表于 2017-10-26 19:52 | 显示全部楼层 |阅读模式
K2P设置vlan需要用mtk_esw命令,具体用法见老毛子官网
https://bitbucket.org/padavan/rt ... 2%D1%87%D0%B5%D0%BC其中55、64命令
55 [MASK] [PORT]   #Override port matrix mask
64 [MASK] [DATA]   #Create VLAN entry
中的[MASK]计算公式为((untag & 0xFF) << 16) | (member & 0xFF)
member来源SWAPI_PORTMASK_*
#define SWAPI_PORTMASK_LAN1         (1<<0)
#define SWAPI_PORTMASK_LAN2         (1<<1)
#define SWAPI_PORTMASK_LAN3         (1<<2)
#define SWAPI_PORTMASK_LAN4         (1<<3)
#define SWAPI_PORTMASK_WAN          (1<<4)
#define SWAPI_PORTMASK_CPU_LAN          (1<<5)
#define SWAPI_PORTMASK_CPU_WAN          (1<<6)
#define SWAPI_PORTMASK_INIC         (1<<7)


[DATA] 计算公式为((fid & 0x0FFF) << 16) | (vid & 0x0FFF)。
一直看不懂怎么算,求大神指点。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-8 20:01 | 显示全部楼层
也在看这个问题。不过我是newifi y1s刷的padavan。坐标魔都,还在探索中。
https://www.right.com.cn/forum/f ... &highlight=iptv
里面有些说明。

点评

谢谢!一致没研究明白,后来就改用梅林,就没怎么关注了。  详情 回复 发表于 2018-4-3 16:42
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2018-4-3 16:42 | 显示全部楼层
xujie3sina 发表于 2017-12-8 20:01
也在看这个问题。不过我是newifi y1s刷的padavan。坐标魔都,还在探索中。
https://www.right.com.cn/forum ...

谢谢!一致没研究明白,后来就改用梅林,就没怎么关注了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-5-8 13:04 | 显示全部楼层
本帖最后由 13062678135 于 2018-5-9 13:55 编辑

mtk_esw 64 [MASK] [DATA]   
MASK计算公式((untag & 0xFF) << 16) | (member & 0xFF) :
#define SWAPI_PORTMASK_LAN1         (1<<0)
#define SWAPI_PORTMASK_LAN2         (1<<1)
#define SWAPI_PORTMASK_LAN3         (1<<2)
LAN1就是1向左移0位,结果1。
LAN2就是1向左移1位,结果10。
LAN3就是1向左移2位,结果100。
untag & 0xFF 就是2数做相位或运算,

[DATA] 计算公式为((fid & 0x0FFF) << 16) | (vid & 0x0FFF):
假设IPTV的vlan是85,那么fid=vid=85。
fid & 0x0FFF
000001010101
111111111111
结果:000001010101
再左移16位,得到:10101010000000000000000
vid & 0x0FFF的结果和刚才的fid & 0x0FFF是一样的:000001010101
最后2数做相位或运算:
10101010000000000000000
00000000000000001010101
得到结果:10101010000000001010101,转换成16进制得到:0x00550055
所以最后得到的命令:
mtk_esw 64 0x0000001F 0x00550055

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-9-5 16:46 | 显示全部楼层
应该可以直接配置吧?
什么情况下用自己算?

点评

我也有这个疑问 因为我测试一下,用mtk_esw这样写出来的, 和用 switch vlan set 1 2 00001011 0 0 ----u-tt 这样的命令写出来的,最后用 switch vlan dump 的时候看都是一样的。 说明,switch vlan set  详情 回复 发表于 2018-11-21 18:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-21 18:18 | 显示全部楼层
footlog 发表于 2018-9-5 16:46
应该可以直接配置吧?
什么情况下用自己算?

我也有这个疑问

因为我测试一下,用mtk_esw这样写出来的,
和用 switch vlan set 1 2  00001011 0 0 ----u-tt
这样的命令写出来的,最后用
switch vlan dump 的时候看都是一样的。

说明,switch vlan set 命令也起了上述计算的作用。

但是,现在的问题是,做好的VLAN的Trunk端口不能整正常工作
该端口复用的时候,对于本征VLAN的unTag数据能够很好地传播出去,
但是,对于该端口所在的非本征VLAN(以tag标记的那些VLAN)无法传播。

甚头疼,在padavan的源码里也没找到switch这个命令的详细说明。
已经郁闷了三四个月了。

点评

设置端口为trunk命令为 lan4 0 lan3 1 lan2 2 lan1 3 switch reg w 2x10 81***0  发表于 2021-12-3 10:18
我现在基本上研究的能用了, 你还有啥疑虑?  详情 回复 发表于 2018-11-22 13:33
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-22 13:33 | 显示全部楼层
gaze 发表于 2018-11-21 18:18
我也有这个疑问

因为我测试一下,用mtk_esw这样写出来的,

我现在基本上研究的能用了,
你还有啥疑虑?

点评

嗯,多谢高人, 就是,比如vlan10的端口接了个设备, 理论上,从trunk端口出来的该mac地址的数据包应该是vid==10的, 但是目前,从trunk口出来的数据包里,该mac地址对应的数据包是vid==1。 这也就是意味着vla  详情 回复 发表于 2018-11-22 16:45
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-22 16:45 | 显示全部楼层
footlog 发表于 2018-11-22 13:33
我现在基本上研究的能用了,
你还有啥疑虑?

嗯,多谢高人,

就是,比如vlan10的端口接了个设备,
理论上,从trunk端口出来的该mac地址的数据包应该是vid==10的,
但是目前,从trunk口出来的数据包里,该mac地址对应的数据包是vid==1。
这也就是意味着vlan的Trunk端口功能没有起作用,
无法把vlan1(通常是LAN)的数据和其他vlan的数据混合着(单线复用)跑到另一个交换机去。

总觉得,应该是还有什么命令用来设置一个端口成为真的Trunk口,
而不仅仅是用 "switch vlan set......" 这一个命令就能确定某端口是Trunk端口。

点评

呵呵,高人不敢当啊 没像你这么用过,我划vlan都是在交换机内部划的 确实还有一个命令是和vlan相关的 reg,直接写寄存器,定义到论坛里搜一下吧,不少 我的例子: switch vlan set 9 0011010 0 0 --uu-t-  详情 回复 发表于 2018-11-23 09:22
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 09:22 | 显示全部楼层
本帖最后由 footlog 于 2018-11-23 09:36 编辑
gaze 发表于 2018-11-22 16:45
嗯,多谢高人,

就是,比如vlan10的端口接了个设备,

呵呵,高人不敢当啊
没像你这么用过但是感觉问题不大啊,单臂复很多人都在用

确实还有一个命令是和vlan相关的
reg,直接写寄存器
switch reg w 0x2204 0x002c0003  #port 2 3
switch reg w 0x2304 0x002c0003  #port 3 3





点评

嗯,是, 在下的用法比较特殊 是用两个MTK7620的padavan当做2个纯vlan交换机使用, 毕竟一个vlan交换机要100元了,而一个7620路由器才20-30元。 您所说的这个reg写入参数的方法我也尝试过,也没有成功。 主要  详情 回复 发表于 2018-11-23 09:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 09:44 | 显示全部楼层
footlog 发表于 2018-11-23 09:22
呵呵,高人不敢当啊
没像你这么用过
确实还有一个命令是和vlan相关的

嗯,是,
在下的用法比较特殊
是用两个MTK7620的padavan当做2个纯vlan交换机使用,
毕竟一个vlan交换机要100元了,而一个7620路由器才20-30元。

您所说的这个reg写入参数的方法我也尝试过,也没有成功。
主要是在于MASK的计算,大家都是语焉不详的,多是照搬,
比如fid是多少?为何要左移16bits?

以及,最重要的是,为何写入地址是0x2004、2204、2304、、、、等等?
--》不一样的固件,这个写入的寄存器的位置是一样的吗?
--》这些寄存器对应的网卡口,和vlan set 命令里的8个(或7个、6个)接口的顺序是一样的吗?

还有就是,这个reg写入命令,对于vlan设置而言,是做什么用的?
是设置vlam的成员? vlan号码?端口的pvid? 还是最重要的---》端口的工作方式?

padavan的主页上没有说明,,,
我目前还在其他的N56u的项目里查找,,,

其实,我现在用switch vlan set 已经可以分隔各个VLAN里,

现在的问题就是解决,作为Trunk的端口,不能工作在Trunk模式的问题
(目前是,无论进来什么数据包,都变成了vid==1,所以只有vlan1能通过Trunk口,
而其他的vlan的数据,都被drop掉了,,,)

点评

设置端口为trunk命令为 lan4 0 lan3 1 lan2 2 lan1 3 switch reg w 2x10 81***0  发表于 2021-12-3 10:18
还有一个方法 openwrt支持你的用法 不? 如果支持,可以wrt好分析一些。  详情 回复 发表于 2018-11-23 10:13
reg这个要查清楚,得查mtk的文档了 可能trunk的问题,也得找mtk的文档 这个不一定好找。 但是顺序还是能找出来的,k2p的就是0x2?04 ,顺序就是0-7,lan4,3,2,1, wan , cpu wan , cpu lan k2的没试过,主要  详情 回复 发表于 2018-11-23 10:05
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 10:05 | 显示全部楼层
gaze 发表于 2018-11-23 09:44
嗯,是,
在下的用法比较特殊
是用两个MTK7620的padavan当做2个纯vlan交换机使用,

reg这个要查清楚,得查mtk的文档了
可能trunk的问题,也得找mtk的文档
这个不一定好找。

但是顺序还是能找出来的,k2p的就是0x2?04  ,顺序就是0-6,lan4,3,2,1, wan , cpu wan , cpu lan

k2的没试过,主要是switch vlan就能满足我的要求了

点评

多谢指点 目前就是没有资料,所以无从下手, 知道一个事情,要明白其原理,才能灵活应用, 否则都是照猫画虎,学到别人的表象,而当自己有不同的需要的时候,就傻眼了 我现在就是这样, 所以努力在找关  详情 回复 发表于 2018-11-23 10:17
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 10:13 | 显示全部楼层
gaze 发表于 2018-11-23 09:44
嗯,是,
在下的用法比较特殊
是用两个MTK7620的padavan当做2个纯vlan交换机使用,

还有一个方法
openwrt支持你的用法 不?

如果支持,可以wrt好分析一些。

点评

哈哈哈,刚才没看到这条回复。 嗯嗯,是的, 在openwrt上,设置VLAN非常方便,可以设置成各式各样的多vlan方式, 最多可以把一个5口的路由器设置成4个端口VLAN+一个Trunk端口。 这个也是我所喜欢的方式,  详情 回复 发表于 2018-11-23 10:26
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 10:17 | 显示全部楼层
footlog 发表于 2018-11-23 10:05
reg这个要查清楚,得查mtk的文档了
可能trunk的问题,也得找mtk的文档
这个不一定好找。

多谢指点

目前就是没有资料,所以无从下手,

知道一个事情,要明白其原理,才能灵活应用,
否则都是照猫画虎,学到别人的表象,而当自己有不同的需要的时候,就傻眼了

我现在就是这样,

所以努力在找关于switch vlan set 、以及mtk_esw 的详细说明。
以期搞定Trunk端口的打标、解标的问题。

另一个思路就是,
在openwrt上的switch设置vlan非常容易,
设置好vlan成员、设置好端口的pvid,就解决了问题。
那么,研究一下openwrt是如何操控mtk底层寄存器的,
就给padavan下面的操作提供了解决的方法,
准备同时去通读openwrt的switch配置方式。
再掉回头来解决padavan的。

点评

这个可能离你要的差的不远了  详情 回复 发表于 2018-11-23 10:27
http://download.villagetelco.org/hardware/MT7620/MT7620_ProgrammingGuide.pdf 找了一下,还真找到一个 我不是专业搞这个的,看着有点吃力 你研究研究吧  详情 回复 发表于 2018-11-23 10:21
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 10:21 | 显示全部楼层
gaze 发表于 2018-11-23 10:17
多谢指点

目前就是没有资料,所以无从下手,

http://download.villagetelco.org ... rogrammingGuide.pdf

找了一下,还真找到一个
我不是专业搞这个的,看着有点吃力
你研究研究吧

点评

多谢大神,,,,我下载了好好看一下。  详情 回复 发表于 2018-11-23 10:27
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-23 10:26 | 显示全部楼层
footlog 发表于 2018-11-23 10:13
还有一个方法
openwrt支持你的用法 不?

哈哈哈,刚才没看到这条回复。

嗯嗯,是的,

在openwrt上,设置VLAN非常方便,可以设置成各式各样的多vlan方式,
最多可以把一个5口的路由器设置成4个端口VLAN+一个Trunk端口。

这个也是我所喜欢的方式,

本来以为padavan也是如此简单,划分vlan,设好端口pvid就行了,
然后,并非如此,,,,
所以头疼了很久。

其实还就是:如何把系统的switch设置命令,
转化为mtk7260、ar9341等等底层芯片的命令的问题。

看来还是需要去找mtk7620的手册才行。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-23 14:33

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表