WiFi buffer的管理

wifi msdu可以32级聚合,mpdu可以256级聚合。聚合后的最大长度mpdu是11000kB左右。

既然都是聚合,为什么还要分成两级呢? 各有好处呀。 前者聚合只需要各自加上RA TA LENGTH就可以了,为什么除了LENGTH之外还需要RA,TA呢。毕竟recv端只需要LENGTH解析出分段就可以交给网络层了。这里有个规定:MSDU的分片必须RA和TA以及TID都相同,我想这是避免不同RA,TA和TID的MSDU聚合影响了收端的数据分发效率。聚合的时候加上RA,TA就可以方便MAC层判断MSDU是否满足聚合条件,RECV端方便check。

后者就必须整个HEADER都给加上(为什么?)。 所以前者效率高。但是呢,前者我无法分片重传?为什么?

聚合后发出去,对与RECV端来讲,需要的buffer数量如何计算? 实际应该看RECV端的转存机制是如何的。

msdu是逐个写入主存呢,还是缓存为一个多包的msdu整体再写入呢? 由于接收端的buffer容量要以最大可能的msdu为单位,所以逐个写入,虽然写入的数据少,但不能因此减少缓存数量。不过依次写入应依然可以提升系统吞吐效率。

mpdu是逐个写入主存呢,还是一次写入呢?和msdu情况类似,逐个写入,能够加快流水,减少数据滞留的时间。

因此对于支持双聚合的RECV,应该以max{mpdu, msdu},也就是mpdu的长度作为最小缓冲。

猜你喜欢

转载自blog.csdn.net/reekyli/article/details/108269602