summaryrefslogtreecommitdiff
path: root/drivers/staging/vt6656
diff options
context:
space:
mode:
authorMalcolm Priestley <tvboxspy@gmail.com>2015-09-27 11:17:43 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-09-29 05:19:54 +0300
commitb914b4944902d489226a5b465908403505723b9a (patch)
tree23514bf25f77db1fe808668e1a60cec54e2266e5 /drivers/staging/vt6656
parent49a315bf072e7ebe8bdc4a2e11f405c821835e88 (diff)
downloadlinux-b914b4944902d489226a5b465908403505723b9a.tar.xz
staging: vt6656: don't stop TX queue unless buffer full.
Presently the TX buffer stops while filling the buffer and urb. However, this does not make use of the available buffer space, it also lags the speed of the TX troughtput. Only stop the queue when the buffer becomes full. The URB complete will start the queue again when a buffer and URB is available. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vt6656')
-rw-r--r--drivers/staging/vt6656/main_usb.c7
-rw-r--r--drivers/staging/vt6656/rxtx.c5
2 files changed, 5 insertions, 7 deletions
diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c
index 3fc6862541cc..01e642db311e 100644
--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -507,13 +507,8 @@ static void vnt_tx_80211(struct ieee80211_hw *hw,
{
struct vnt_private *priv = hw->priv;
- ieee80211_stop_queues(hw);
-
- if (vnt_tx_packet(priv, skb)) {
+ if (vnt_tx_packet(priv, skb))
ieee80211_free_txskb(hw, skb);
-
- ieee80211_wake_queues(hw);
- }
}
static int vnt_start(struct ieee80211_hw *hw)
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index da075f485298..efb54f53b4f9 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -101,9 +101,12 @@ static struct vnt_usb_send_context
}
}
- if (ii == priv->num_tx_context)
+ if (ii == priv->num_tx_context) {
dev_dbg(&priv->usb->dev, "%s No Free Tx Context\n", __func__);
+ ieee80211_stop_queues(priv->hw);
+ }
+
return NULL;
}