wil6210: fix invalid sta statistics update
authorDedy Lansky <dlansky@codeaurora.org>
Fri, 22 Feb 2019 14:21:03 +0000 (16:21 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 28 Feb 2019 09:24:50 +0000 (11:24 +0200)
Upon status ring handling, in case there are both unicast and
multicast (cid == max) status messages to handle, wrong sta statistics
might get updated.
Fix this by setting stats to NULL upon invalid cid
(e.g. == max_assoc_sta).

Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wil6210/txrx_edma.c

index c09cd692f9109ddb9079b2cba536cb474e6a82eb..c38773878ae3aaf98c5dad56667c0eb6cc65f57b 100644 (file)
@@ -1137,7 +1137,7 @@ int wil_tx_sring_handler(struct wil6210_priv *wil,
        /* Total number of completed descriptors in all descriptor rings */
        int desc_cnt = 0;
        int cid;
-       struct wil_net_stats *stats = NULL;
+       struct wil_net_stats *stats;
        struct wil_tx_enhanced_desc *_d;
        unsigned int ring_id;
        unsigned int num_descs;
@@ -1187,8 +1187,7 @@ int wil_tx_sring_handler(struct wil6210_priv *wil,
                ndev = vif_to_ndev(vif);
 
                cid = wil->ring2cid_tid[ring_id][0];
-               if (cid < max_assoc_sta)
-                       stats = &wil->sta[cid].stats;
+               stats = (cid < max_assoc_sta ? &wil->sta[cid].stats : NULL);
 
                wil_dbg_txrx(wil,
                             "tx_status: completed desc_ring (%d), num_descs (%d)\n",