当前位置: 代码迷 >> Wireless >> 请问:wifi接收数据的有关问题
  详细解决方案

请问:wifi接收数据的有关问题

热度:1260   发布时间:2013-02-26 00:00:00.0
请教:wifi接收数据的问题
目前在看marvell 8686 wifi的驱动代码,在接收数据的时候不太明白,代码如下

C/C++ code
case IF_DATA_PKT:               //051107 Coverity chagne to mainstream //060407               if( pRxBufVM != NULL)               {                   if((*((UCHAR *)((ULONG)pRxBufVM + 14)) == 0xaa ) &&                                (*((UCHAR *)((ULONG)pRxBufVM + 15)) == 0xaa ) &&                              (*((UCHAR *)((ULONG)pRxBufVM + 16)) == 0x03 ) &&                              (*((UCHAR *)((ULONG)pRxBufVM + 20)) == 0x88 ) )                      {                            if ( (*((UCHAR *)((ULONG)pRxBufVM + 21)) == 0x8e ) ||                                  (*((UCHAR *)((ULONG)pRxBufVM + 21)) == 0xc7 ) )   // fix pre-auth                            {                                usLength -= 8;                                NdisMoveMemory((PUCHAR)((ULONG)pRxBufVM + 12),(PUCHAR)((ULONG)pRxBufVM + 20), (usLength-20));                               }                      }               }


目前看代码可以看出,底层固件是不是把802.11帧转化为了802.3 SNAP帧,所以才会判断是不是0xAA,0x03。。。
我不明白的是oxAA,AA,03后面的,为什么是0x88,根据tcpip详解,偏移20字节的是类型域,里面只有ip(0800),arp(0806)和rarp(8305)的,没有个内容是0x88的。这是什么意思呢?

还有就是偏移21个字节,判断是不是0x8e或0xC7,这又是什么意思?

说的不太清楚,请高手指点。


另外,感觉wifi小端口传到协议层中的数据包,就是一个14字节的802.3MAC域+38~1492的数据域和CRC域。不知道是不是这样的、、、??

------解决方案--------------------------------------------------------
这个芯片没有用过,估计前面是去掉了部分头部字段的,正常应该是偏移30个字节才是SNAP头部

------解决方案--------------------------------------------------------
看样子确实有点像转换成802.3MAC的了
刚刚去IANA查了一下没有找到888e的类型
880B PPP [IANA] 
8847 MPLS [RFC5332]
8848 MPLS with upstream-assigned label [RFC5332]
8A96-8A97 Invisible Software [XEROX]
 34915 8863 - - PPPoE Discovery Stage [RFC2516]
 34916 8864 - - PPPoE Session Stage [RFC2516]
  相关解决方案