aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/htc_drv_txrx.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/htc_drv_txrx.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
index b3f94850821e..0e2855893669 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
@@ -79,7 +79,8 @@ int ath_htc_txq_update(struct ath9k_htc_priv *priv, int qnum,
79 return error; 79 return error;
80} 80}
81 81
82int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb) 82int ath9k_htc_tx_start(struct ath9k_htc_priv *priv,
83 struct sk_buff *skb, bool is_cab)
83{ 84{
84 struct ieee80211_hdr *hdr; 85 struct ieee80211_hdr *hdr;
85 struct ieee80211_mgmt *mgmt; 86 struct ieee80211_mgmt *mgmt;
@@ -170,6 +171,12 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
170 tx_fhdr = skb_push(skb, sizeof(tx_hdr)); 171 tx_fhdr = skb_push(skb, sizeof(tx_hdr));
171 memcpy(tx_fhdr, (u8 *) &tx_hdr, sizeof(tx_hdr)); 172 memcpy(tx_fhdr, (u8 *) &tx_hdr, sizeof(tx_hdr));
172 173
174 if (is_cab) {
175 CAB_STAT_INC;
176 epid = priv->cab_ep;
177 goto send;
178 }
179
173 qnum = skb_get_queue_mapping(skb); 180 qnum = skb_get_queue_mapping(skb);
174 181
175 switch (qnum) { 182 switch (qnum) {
@@ -222,7 +229,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
222 memcpy(tx_fhdr, (u8 *) &mgmt_hdr, sizeof(mgmt_hdr)); 229 memcpy(tx_fhdr, (u8 *) &mgmt_hdr, sizeof(mgmt_hdr));
223 epid = priv->mgmt_ep; 230 epid = priv->mgmt_ep;
224 } 231 }
225 232send:
226 return htc_send(priv->htc, skb, epid, &tx_ctl); 233 return htc_send(priv->htc, skb, epid, &tx_ctl);
227} 234}
228 235
@@ -326,7 +333,8 @@ void ath9k_htc_txep(void *drv_priv, struct sk_buff *skb,
326 } else if ((ep_id == priv->data_bk_ep) || 333 } else if ((ep_id == priv->data_bk_ep) ||
327 (ep_id == priv->data_be_ep) || 334 (ep_id == priv->data_be_ep) ||
328 (ep_id == priv->data_vi_ep) || 335 (ep_id == priv->data_vi_ep) ||
329 (ep_id == priv->data_vo_ep)) { 336 (ep_id == priv->data_vo_ep) ||
337 (ep_id == priv->cab_ep)) {
330 skb_pull(skb, sizeof(struct tx_frame_hdr)); 338 skb_pull(skb, sizeof(struct tx_frame_hdr));
331 } else { 339 } else {
332 ath_err(common, "Unsupported TX EPID: %d\n", ep_id); 340 ath_err(common, "Unsupported TX EPID: %d\n", ep_id);