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 Friday 15 August 2008, Mikko Virkkilä wrote:
> 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. 

Yes, but my comment was regarding your proposal regarding the
"driver is incapable of supplying TX Acks to upper layer" which would
suggest it would be a global setting instead of a per-frame setting.
And my point was that you want this to be a per-frame setting similar
to IEEE80211_TX_CTL_NO_ACK

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