Hi Adrian, It really works! When adding the REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_ACK_DIS) after ath9k_hw_process_ini(), Wireshark monitors no IEEE ACK any more.
There is another question. It is found the transmission rate is really low even with UDP packets after disable the ACK. Does it mean some related setting/code is needed in the transmitter side to cooperate the receiver's no ACK? Thank you. Best, Leon On Thu, Jun 9, 2011 at 10:05 PM, Adrian Chadd <[email protected]> wrote: > I'd likely slide it in somewhere after ath9k_hw_process_ini() in > ath9k_hw_reset(). > > Good luck! > > > Adrian > > On 9 June 2011 21:54, Liang <[email protected]> wrote: > > Hi, > > There are three functions where AR_DIAG_SW is set with REG_SET_BIT(), but > > I'm not sure in which function I should add REG_SET_BIT(ah, > > AR_DIAG_SW, AR_DIAG_ACK_DIS). Do you have any suggestions? > > function1: ath9k_hw_abort_tx_dma() > > REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH); > > function2: ath9k_hw_setrxabort() > > REG_SET_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); > > function3: ath9k_hw_abortpcurecv() > > REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_ABORT | AR_DIAG_RX_DIS); > > Thank you. > > Best, > > Liang > > > > > > On Thu, Jun 9, 2011 at 4:07 PM, Adrian Chadd <[email protected]> wrote: > >> > >> Best thing to do is look at the code that disables ACK in the TX > >> descriptor and set that. > >> > >> There's also the DIAG register, as mentioned. For ath9k: > >> > >> reg.h:#define AR_DIAG_SW 0x8048 > >> reg.h:#define AR_DIAG_ACK_DIS 0x00000002 > >> > >> Find where AR_DIAG_SW is set in the ath9k code (it's fiddled with in a > >> few places) and call the REG_SET_BIT() appropriately. > >> > >> Do the same for ath5k once you find the right register/field definition. > >> > >> HTH, > >> > >> > >> > >> Adrian > >> > >> On 9 June 2011 15:03, Liang <[email protected]> wrote: > >> > Hi Adrian, > >> > Thank you. May I ask how to set these registers to disable the ACK in > >> > the > >> > ath5k/ath9k driver? > >> > Best, > >> > Leon > >> > > >> > On Thu, Jun 9, 2011 at 2:32 PM, Adrian Chadd <[email protected]> > wrote: > >> >> > >> >> No, retry doesn't stop ack's, it just stops the hardware from > retrying > >> >> a packet if it hasn't heard an ACK. > >> >> > >> >> You can fiddle with the diag register, or you can just ensure that > the > >> >> relevant bit in the TX descriptor isn't set. > >> >> > >> >> fgrep NOACK ath9k/*.h > >> >> mac.h:#define ATH9K_TXDESC_NOACK 0x0002 > >> >> > >> >> fgrep NOACK ath5k/*.h > >> >> > >> >> fgrep NOACK *h > >> >> desc.h:#define AR5K_2W_TX_DESC_CTL1_NOACK_5211 0x00800000 /* > >> >> [5211] no ACK */ > >> >> desc.h:#define AR5K_4W_TX_DESC_CTL1_NOACK 0x01000000 /* > >> >> no > >> >> ACK */ > >> >> desc.h:#define AR5K_TXDESC_NOACK 0x0002 /*[5211+]*/ > >> >> > >> >> There's likely some API you can use at a higher level to signify to > >> >> the TX code that no, you don't want an ACK for the packet. > >> >> > >> >> Eg, look at ath9k/setup_tx_flags(): > >> >> > >> >> struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); > >> >> ... > >> >> if (tx_info->flags & IEEE80211_TX_CTL_NO_ACK) > >> >> flags |= ATH9K_TXDESC_NOACK; > >> >> > >> >> HTH, > >> >> > >> >> > >> >> Adrian > >> >> > >> >> On 9 June 2011 13:55, Liang <[email protected]> wrote: > >> >> > Hi, > >> >> > I want to know if the ACK at 802.11 MAC layer can be turned off in > >> >> > the > >> >> > ath5k/ath9k, and how can it be done? > >> >> > On the other hand, does the command "iwconfig wlan0 retry 0" > disable > >> >> > the > >> >> > MAC > >> >> > retransmission? Is it the same to turnoff the ACK? > >> >> > Thank you! > >> >> > Best, > >> >> > Leon > >> >> > _______________________________________________ > >> >> > ath5k-devel mailing list > >> >> > [email protected] > >> >> > https://lists.ath5k.org/mailman/listinfo/ath5k-devel > >> >> > > >> >> > > >> > > >> > > > > > >
_______________________________________________ ath5k-devel mailing list [email protected] https://lists.ath5k.org/mailman/listinfo/ath5k-devel
