Atheros 如何在驅動中禁用ACK

2022-07-06 22:42:15 字數 1704 閱讀 7650

禁用ack主要分為三部分:

1. 在傳送端設定不等待ack回來就繼續傳送;

2. 在接收端設定收到資料幀之後不返回ack;

3. (可選)有些地方針對不等待ack的情況會有warn等處理措施,把它們去掉。

下面分別來看,首先在傳送端設定不等待ack就繼續傳送,開啟net/mac80211/tx.c,在ieee80211_tx_prepare函式中有這樣的判斷:

if (is_multicast_ether_addr(hdr->addr1))  

else

tx->flags |= ieee80211_tx_unicast;

這兒是說,如果當前的目標位址是多播位址,則去掉單播的標誌位,並設定不等到ack,因為多播廣播是不需要ack的嘛,如果不是多播,則加上單播的標誌位,所以要在單播的時候也不等待ack,只需要在else裡面也加上ieee80211_tx_ctl_no_ack就可以了:

if (is_multicast_ether_addr(hdr->addr1))  

else

還有乙個地方也有類似的控制,在net/mac80211/wme.c的ieee80211_set_qos_hdr中,設定qos頭的時候有判斷:

if (is_multicast_ether_addr(hdr->addr1) ||sdata->noack_map &bit(tid))

同樣是多播情況下設定禁用ack,這裡把if這個條件去掉,無論是不是多播都設定這兩行就可以了。

2. 第二步,在接收方設定不返回ack幀,開啟drivers/net/wireless/ath/ath9k/hw.c,在ath9k_hw_reset函式中找乙個位置設定:

reg_set_bit(ah, ar_diag_sw, ar_diag_ack_dis);

3. 這一步可選,有很多地方對沒有ack的情況做了特殊處理,影響有大有小,先來看乙個影響比較小的,net/mac80211/tx.c的ieee80211_tx_h_rate_ctrl函式中有:

if (warn_on_once((info->control.rates[0].count > 1) &&(info->flags &ieee80211_tx_ctl_no_ack)))

info->control.rates[0].count = 1;

如果禁用了ack並且傳送速率的最大嘗試次數大於1,則置為1,這裡比較煩人的是這個warn_on_once,本身它只列印一次堆疊資訊,對效能影響不大,但是占用dmsg的輸出,而且有時候看著有警告什麼的特別煩,所以還是把這裡刪掉,最起碼把warn_on_once去掉。

再來看乙個,在速率調整演算法獲取傳送速率的時候,也就是get_rate函式開頭的位置,都會呼叫net/mac80211/rate.c的rc_no_data_or_no_ack_use_min函式,當然了,一旦禁用了ack,速率調整演算法就不能用了,不過有時候我們固定mcs傳送的時候可能被這裡困擾,因為在這個函式裡:

return (info->flags & (ieee80211_tx_ctl_no_ack |

ieee80211_tx_ctl_use_minrate)) ||

!ieee80211_is_data(fc);

如果禁用了ack,就會直接用傳統的低速率傳送,根據當前修改驅動的目的,可能會被這個問題耽誤,注意一下就行,需要的時候把標紅的部分刪掉。

如何在Mac上禁用iCloud驅動器?

icloud drive是一項非常有用的功能,通過自動在裝置之間同步和複製檔案,您可以輕鬆地在自己的裝置 包括其他mac,iphone,ipad 之間共享檔案和文件,因此只有在不啟用icloud drive的情況下,才應禁用它。那麼如何在mac上禁用icloud驅動器呢,有需要的朋友歡迎參考!請注意...

如何在Linux中禁用Caps Lock鍵?

linux提供了乙個名為 xmodmap 的命令來啟用和禁用caps lock鍵功能。坦白說,我不了解禁用caps lock鍵有什麼好處,可以避免意外按下它嗎?禁用大寫鎖定鍵 xmodmap e remove lock caps lock 有效的caps lock鍵 xmodmap e add lo...

如何在Windows 10中禁用自動更正

無論您在哪個平台上使用自動校正,它都是一種愛恨交加的事情。在windows 10中,它的工作原理與在其他平台上相同,可以自動替換拼寫錯誤的單詞 如果它們在詞典中 並在根本找不到該單詞時應用紅色下劃線。問題是,windows 10中的自動更正的實用性實際上取決於您使用的是哪種裝置。儘管有時它聲稱是系統...