对双STA-双连接的一些思考

近期做这个开发,因为要和硬件同事合作,花了很多功夫和他们解释为什么双连接提升不了吞吐
实际上,我自己也对这个特性有很多不懂的地方,实在头痛,这里整篇文章,把自己最近的困惑写一下
基本都是口语化,没什么逻辑

吞吐是负提升的

双STA要做,基本就是要在支持 MIMO + DBDC 的wifi chip上去做,比如MTK的mt6635,mt6635x,mt6637x等

在不支持MIMO的wifi chip上能不能做?当然也能做,比如mt6631,SISO,一根天线,我们也可以强行去创建两个连接(同频段或者不同频段),但是实际发生数传业务时就需要分时了,也就是我们常说的MBO(Multi Band Operation),天线一会要切到频段1去tx/rx,一会要切到频段2上去tx/rx,总体上的效率会很差,没有多大实现的意义

回到正题,总的来说,做的前提就是 两个RF模块(直白点说,两根天线) + 两个PHY处理模块

对于双STA来说,我们假设实现了 wlan0与ap0的连接,拿到了ip0,用的是ant0;wlan1与ap1的连接,拿到了ip1,用的是ant1,实际上注册到ConnectivityService中的只有一个WifiNetworkAgent发挥作用(供上层app发起网络请求),即 DefaultNetworkAgent,简单来讲,谁评分高谁来做,谁来干活。这个时候,wlan0(ip0)和wlan1(ip1)只有一个能工作,无法并行,退化成SISO,相比MIMO来说,吞吐是降低的!

双STA的优势在哪里?

我设想的理想使用场景是 用户家中有多个路由器(注意不是单个双频路由),用户可以使用这个特性,始终保持两个连接,离哪个近就用哪个路由对应的ip,不至于出现 “离哪个远了哪个就断,进而要等一会才能自动连接上最近的那个” 的情况

所以双STA的优势体现在更流畅的网络体验

说到这个,需要思考和看源码求证,在ConnectivityService中两个WifiNetworkAgent的打分,谁来做干活的哪个?在framework中主辅wifi的切换(CMM ClientRole的切换)可以直接影响到前面的打分吗?我不清楚

最操蛋的是,ConnectivityService上了mainline,我无法去做一些自己的修改。

driver做的一些事情

前几天给MTK提了这样一些疑问

想再确认一下,假设我建立了 wlan0->ap0  wlan1-> ap1的这种连接
虽然可以强行iperf灌流
但实际用户场景下无法支持wlan0和wlan1 同时传输数据,只能保证wlan0和wlan1 同时连接,都具备传输数据的能力,但是同时只能使用一个接口传输数据
wlan0和wlan1都注册一个WifiNetworkAgent给ConnectivityService,实际发挥作用的只有一个。如果像Android R那样重新引入MtkConnectivityService,貌似有实现两个NetworkAgent工作的可能?

 双连接下,敝司的设计是不让不发挥作用的那个连接断开,针对这个连接,一些省电机制是否同样适用?
有哪些log可以帮忙确认?有针对 AIS0/AIS1 的 setsuspendmode 之类的接口吗?

结果到现在还没有回复我。。。

从kernel log看,AIS0和AIS1·的事件处理貌似是混乱的
这点我需要去看下mtk wlan driver的处理

总的来说,这个特性在用户的路由支持MIMO的时候,是牺牲吞吐性能去获取 always has internet

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值