summaryrefslogtreecommitdiff
path: root/drivers/staging/cw1200/txrx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/cw1200/txrx.c')
-rw-r--r--drivers/staging/cw1200/txrx.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/staging/cw1200/txrx.c b/drivers/staging/cw1200/txrx.c
index 5db1282b188..7616c237a88 100644
--- a/drivers/staging/cw1200/txrx.c
+++ b/drivers/staging/cw1200/txrx.c
@@ -14,6 +14,7 @@
#include "cw1200.h"
#include "wsm.h"
#include "bh.h"
+#include "ap.h"
#include "debug.h"
#if defined(CONFIG_CW1200_TX_POLICY_DEBUG)
@@ -575,8 +576,16 @@ void cw1200_tx_confirm_cb(struct cw1200_common *priv,
if ((arg->status == WSM_REQUEUE) &&
(arg->flags & WSM_TX_STATUS_REQUEUE)) {
+ /* "Requeue" means "implicit suspend" */
+ struct wsm_suspend_resume suspend = {
+ .link_id = arg->link_id,
+ .stop = 1,
+ .multicast = !arg->link_id,
+ };
+ cw1200_suspend_resume(priv, &suspend);
WARN_ON(cw1200_queue_requeue(queue, arg->packetID));
- } else if (!WARN_ON(cw1200_queue_get_skb(queue, arg->packetID, &skb))) {
+ } else if (!WARN_ON(cw1200_queue_get_skb(
+ queue, arg->packetID, &skb))) {
struct ieee80211_tx_info *tx = IEEE80211_SKB_CB(skb);
struct wsm_tx *wsm_tx = (struct wsm_tx *)skb->data;
int rate_id = (wsm_tx->flags >> 4) & 0x07;