找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
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.
也在看这个问题。不过我是newifi y1s刷的padavan。坐标魔都,还在探索中。
https://www.right.com.cn/forum/f ... &highlight=iptv
里面有些说明。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

本帖最后由 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.
回复

使用道具 举报

应该可以直接配置吧?
什么情况下用自己算?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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这个命令的详细说明。
已经郁闷了三四个月了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

gaze 发表于 2018-11-21 18:18
我也有这个疑问

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

我现在基本上研究的能用了,
你还有啥疑虑?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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端口。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 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





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

使用道具 举报

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掉了,,,)
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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就能满足我的要求了

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

使用道具 举报

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

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

如果支持,可以wrt好分析一些。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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的。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

gaze 发表于 2018-11-23 10:17
多谢指点

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

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

找了一下,还真找到一个
我不是专业搞这个的,看着有点吃力
你研究研究吧
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-5-6 20:18

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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