- 求職 : 通訊/電信開
- 論壇徽章:
- 2
|
本帖最后由 九陽神功愛喝茶 于 2015-12-01 19:13 編輯
下面的代碼是路由器的無線網(wǎng)卡ath9k接收中斷處理部分的代碼,其中函數(shù)ieee80211_rx(hw, skb);將數(shù)據(jù)報文從驅(qū)動傳遞到MAC層。在進(jìn)入MAC層之前,我加了個函數(shù)tdma_set_slot_param來設(shè)置驅(qū)動的參數(shù)。- int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
- {。
- struct ath_rxbuf *bf;
- struct sk_buff *skb = NULL, *requeue_skb, *hdr_skb;
- [color=Red]//added by shenlei 2015 11 30
- u8 *macaddr = common->macaddr;
- tdma_set_slot_param(skb,macaddr[5]);[/color]
-
- ieee80211_rx(hw, skb);
- return 0;
- }
復(fù)制代碼 實驗是在通過發(fā)送特定格式的數(shù)據(jù)到AP,AP的驅(qū)動直接通過讀取用戶數(shù)據(jù),來設(shè)置參數(shù)。我遇到的問題是:
1)802.11頭部比較復(fù)雜分別有三地址和四地址模式以及是否有QOS控制字段,對應(yīng)的報頭長度分別為32 30 36 24 ,我不是很清楚這兩個參數(shù)的具體作用和使用場景,忘大神講講。
2)每次我都直接發(fā)送udp廣播報文,數(shù)據(jù)四個字段是0x88 0x6a 0x01 0x02;通過AP下的另一個電腦的無線網(wǎng)可以看到,接收數(shù)據(jù)完全正確,但是由于我的網(wǎng)卡和驅(qū)動的問題只能看到以太網(wǎng)的幀格式,無法看到802.11幀格式,所以無法確定在AP的驅(qū)動中的skb的結(jié)構(gòu)來獲得數(shù)據(jù)報文。還請各位前輩指導(dǎo)一下,萬分感激。- int tdma_set_slot_param(struct sk_buff *skb,u8 localmacaddrlastbyte){
-
- /*8==sizeof(udphdr)
- 32==sizeof(ieee80211_hdr) try 32 30 26 24
- 20==sizeof(iphdr)*/
- //printk(KERN_ERR"INTO tdma_set_slot_param");
- u8 *data = skb->data+24+20+8;
- if(*data==0x88){
- printk(KERN_ERR"SATISFY flag bytes");
- data++;
- }
復(fù)制代碼 |
|