Bjorn Andersson [off-list ref] writes:
On Thu 27 Apr 01:22 PDT 2017, Johannes Berg wrote:
quoted
quoted
@@ -371,7 +371,7 @@ static void reap_tx_dxes(struct wcn36xx *wcn,
struct wcn36xx_dxe_ch *ch)
info = IEEE80211_SKB_CB(ctl->skb);
if (!(info->flags &
IEEE80211_TX_CTL_REQ_TX_STATUS)) {
/* Keep frame until TX status comes
*/
- ieee80211_free_txskb(wcn->hw, ctl-quoted
skb);
+ ieee80211_tx_status(wcn->hw, ctl-
quoted
skb);
I don't think this is a good idea.
Thanks for letting me know :)
quoted
This code intentionally checked if TX status was requested, and if not
then it doesn't go to the effort of building it.
What I'm finding puzzling is the fact that the only caller of
ieee80211_led_tx() is ieee80211_tx_status() and it seems like drivers,
such as ath10k, call this for each packet handled - but I'm likely
missing something.
quoted
As it is with your patch, it'll go and report the TX status without any
TX status information - which is handled in wcn36xx_dxe_tx_ack_ind()
for those frames needing it.
Right, it doesn't sound desired. However, during normal operation I'm
not seeing IEEE80211_TX_CTL_REQ_TX_STATUS being set and as such
ieee80211_led_tx() is never called.
So what's the conclusion? How do we get leds working?
--
Kalle Valo��칻
�&�~�&���+-��ݶ��w��˛���m�^�'
����{ay�
ʇڙ�,j��f���h�����/oSc��ڳ9�u�����&jw��(�階�ݢj"���m�����z�ޖ���f���h���~�m�