Hi! On 12/19/2011 6:38 AM, 李刚 wrote: > Hi everybody! > > My wireless card is AR9280. I set the IEEE80211_TX_CTL_NO_ACK flag before > send a packet, but found it no use. It still wait for an ACK. Then I read > the code, > in ath9k_htc_tx_data(htc_drv_txrx.c) , it seems there is only two flags: > > #define ATH9K_HTC_TX_CTSONLY 0x1 > #define ATH9K_HTC_TX_RTSCTS 0x2 > > None is about ack. > > Does anyone know how to make this flag work properly? > As an FYI if your card is a AR9280, then you should be looking in xmit.c and not at the HTC related code. I am also working on this issue to enable per-frame no-ack and have already tracked it down to the following snippet in the function ieee80211_tx_prepare (mac80211/tx.c). if (is_multicast_ether_addr(hdr->addr1)) { tx->flags &= ~IEEE80211_TX_UNICAST; info->flags |= IEEE80211_TX_CTL_NO_ACK; } else { tx->flags |= IEEE80211_TX_UNICAST; if (unlikely(local->wifi_wme_noack_test)) info->flags |= IEEE80211_TX_CTL_NO_ACK; else info->flags &= ~IEEE80211_TX_CTL_NO_ACK; } So if you send a unicast frame without this wifi_wme_noack_test flag set then mac80211 will force the frame to require an ACK. To set the flag, # sudo -s "echo 1> /sys/kernel/debug/ieee80211/phy0/noack" Assuming phy0 is the wireless card with which you are wanting to do the frame injection. The downside to this is that now every frame is passed to ath9k with the no ack flag set. Daniel -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html