diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/htc_drv_txrx.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 14 |
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 | ||
82 | int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb) | 82 | int 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 | 232 | send: | |
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); |