mt76: add support for reporting tx status with skb
MT76x2/MT76x0 has somewhat unreliable tx status reporting, and for that
reason the driver currently does not report per-skb tx ack status at all.
This breaks things like client idle polling, which relies on the tx ack
status of a transmitted nullfunc frame.
This patch adds code to report skb-attached tx status if requested by
mac80211 or the rate control module. Since tx status is polled from a
simple FIFO register, the code needs to account for the possibility of
tx status events getting lost.
The code keeps a list of skbs for which tx status is required and passes
them to mac80211 once tx status has been filled in and the DMA queue is
done with it.
If a tx status event is not received after one second, the status rates
are cleared, and a succesful ACK is indicated to avoid spurious disassoc
during assoc or client polling.
Signed-off-by:
Felix Fietkau <nbd@nbd.name>
Showing
- drivers/net/wireless/mediatek/mt76/dma.c 1 addition, 0 deletionsdrivers/net/wireless/mediatek/mt76/dma.c
- drivers/net/wireless/mediatek/mt76/mac80211.c 3 additions, 0 deletionsdrivers/net/wireless/mediatek/mt76/mac80211.c
- drivers/net/wireless/mediatek/mt76/mt76.h 48 additions, 0 deletionsdrivers/net/wireless/mediatek/mt76/mt76.h
- drivers/net/wireless/mediatek/mt76/mt76x02.h 0 additions, 1 deletiondrivers/net/wireless/mediatek/mt76/mt76x02.h
- drivers/net/wireless/mediatek/mt76/mt76x02_mac.c 40 additions, 34 deletionsdrivers/net/wireless/mediatek/mt76/mt76x02_mac.c
- drivers/net/wireless/mediatek/mt76/mt76x02_mac.h 0 additions, 19 deletionsdrivers/net/wireless/mediatek/mt76/mt76x02_mac.h
- drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c 7 additions, 18 deletionsdrivers/net/wireless/mediatek/mt76/mt76x02_txrx.c
- drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c 19 additions, 23 deletionsdrivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
- drivers/net/wireless/mediatek/mt76/mt76x02_util.c 1 addition, 0 deletionsdrivers/net/wireless/mediatek/mt76/mt76x02_util.c
- drivers/net/wireless/mediatek/mt76/tx.c 111 additions, 0 deletionsdrivers/net/wireless/mediatek/mt76/tx.c
- drivers/net/wireless/mediatek/mt76/usb.c 1 addition, 0 deletionsdrivers/net/wireless/mediatek/mt76/usb.c
Loading
Please register or sign in to comment