mwifiex: bridged packets cause wmm_tx_pending counter to go negative
authorMarty Faltesek <mfaltesek@google.com>
Wed, 20 Apr 2016 04:19:35 +0000 (00:19 -0400)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 27 Apr 2016 13:49:35 +0000 (16:49 +0300)
When a packet is queued from the bridge, wmm_tx_pending is not
incremented, but when the packet is dequeued the counter is decremented.

Signed-off-by: Marty Faltesek <mfaltesek@google.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/uap_txrx.c

index c95b61d..666e91a 100644 (file)
@@ -102,6 +102,7 @@ static void mwifiex_uap_queue_bridged_pkt(struct mwifiex_private *priv,
        int hdr_chop;
        struct ethhdr *p_ethhdr;
        struct mwifiex_sta_node *src_node;
+       int index;
 
        uap_rx_pd = (struct uap_rxpd *)(skb->data);
        rx_pkt_hdr = (void *)uap_rx_pd + le16_to_cpu(uap_rx_pd->rx_pkt_offset);
@@ -208,6 +209,9 @@ static void mwifiex_uap_queue_bridged_pkt(struct mwifiex_private *priv,
        }
 
        __net_timestamp(skb);
+
+       index = mwifiex_1d_to_wmm_queue[skb->priority];
+       atomic_inc(&priv->wmm_tx_pending[index]);
        mwifiex_wmm_add_buf_txqueue(priv, skb);
        atomic_inc(&adapter->tx_pending);
        atomic_inc(&adapter->pending_bridged_pkts);