mwifiex: fix NULL packet downloading issues
authorAmitkumar Karwar <akarwar@marvell.com>
Fri, 30 Jan 2015 08:40:06 +0000 (00:40 -0800)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 3 Feb 2015 13:28:54 +0000 (15:28 +0200)
This patch makes sure that skb is freed after downloading
NULL packet in error cases. Also, USB chipsets return
-EINPROGRESS after downloading packets, they are freed in
USB completion handler later. We will add missing change
to set tx_lock_flag for USB which blocks further packets.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/mwifiex/sta_tx.c

index 1debe76017b10a53d291867b437a7fe79d4880c1..5ce2d9a4f9193a34e9c197d63579b8aba9756d81 100644 (file)
@@ -183,9 +183,13 @@ int mwifiex_send_null_packet(struct mwifiex_private *priv, u8 flags)
        }
        switch (ret) {
        case -EBUSY:
-               adapter->data_sent = true;
-               /* Fall through FAILURE handling */
+               dev_kfree_skb_any(skb);
+               dev_err(adapter->dev, "%s: host_to_card failed: ret=%d\n",
+                       __func__, ret);
+               adapter->dbg.num_tx_host_to_card_failure++;
+               break;
        case -1:
+               adapter->data_sent = false;
                dev_kfree_skb_any(skb);
                dev_err(adapter->dev, "%s: host_to_card failed: ret=%d\n",
                        __func__, ret);
@@ -198,6 +202,7 @@ int mwifiex_send_null_packet(struct mwifiex_private *priv, u8 flags)
                adapter->tx_lock_flag = true;
                break;
        case -EINPROGRESS:
+               adapter->tx_lock_flag = true;
                break;
        default:
                break;