Search Linux Wireless

Re: mac80211 interprets missing TX_ACK flag as tx fail

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2008-08-15 at 19:58 +0200, Ivo van Doorn wrote:
> On Friday 15 August 2008, Mikko Virkkilä wrote:
> > I'm moving the conversation over from rt2400-devel to linux-wireless.
> > The last message (as of this writing) from the earlier conversation at
> > rt2400-devel can be found at http://tinyurl.com/6p9n7g with some more
> > details.
> > 
> > So to summarize the situation: 
> > 
> > - the rt73usb driver (in rt2x00) doesn't set IEEE80211_TX_STAT_ACK
> >   because "frames which are uploaded to the hardware are not guarenteed
> >   to be acked".
> 
> rt2500usb suffers from the same issue.
> 
> > - The mac80211 layer will set the IEEE80211_RADIOTAP_F_TX_FAIL if the 
> >   IEEE80211_TX_STAT_ACK flag is missing. 
> > - hostapd will interpret the IEEE80211_RADIOTAP_F_TX_FAIL as a failure
> >   to send
> > 
> > This all results in hostapd reporting "MGMT (TX callback) fail" and
> > making rt73usb not work in AP mode. 
> > 
> > I'm hoping that some decision can be reached on how to fix this so that
> > AP mode will work with the rt73. 
> > 
> > Just off the top of my head, one way of fixing this would be to make
> > IEEE80211_TX_CTL_NO_ACK also work the other way around: Now it is used
> > to tell the lower level not to wait for an ACK. Perhaps it could also be
> > used by the lower level to tell higher levels that no ACK is ever going
> > to come e.g. because the hardware is incapable of supplying TX ACKs. The
> > mac80211 layer would be changed to check for IEEE80211_TX_CTL_NO_ACK. If
> > the flag was set it would skip setting IEEE80211_RADIOTAP_F_TX_FAIL even
> > when the IEEE80211_TX_STAT_ACK is missing.
> 
> Actually this isn't the complete picture, what you might need is a new flag
> IEEE80211_TX_CTL_UNKNOWN which then informs mac80211 that the
> frame has an unknown status, and that is something that could be passed on to
> userspace through radiotap later.
> 
> This is better then setting a global "supports ACK reporting" flag, because in case
> of rt61 one every x frames also has an unknown status because the txdone interrupt
> isn't happening for that frame. So that means you definately need a per-frame flag
> to tell if the frame was acked, not-acked or if the status was unknown.
> 
> Ivo

>From what I understand the IEEE80211_TX_CTL_NO_ACK which is in the
flags of the ieee80211_tx_info struct, could be set from the driver for
each frame just as currently (not) done with the IEEE80211_TX_STAT_ACK
flag. 

- Mikko
--
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux