aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/xmit.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-06-11 06:47:56 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-06-19 15:49:17 -0400
commit405393cfde07781c21cdee28b145919d6dfe382e (patch)
treec840e3690eb6b988d320d4bb44a75b6cdc15c220 /drivers/net/wireless/ath/ath9k/xmit.c
parent78b21949711ee3c877f1aab5b51abe1981e1161d (diff)
ath9k: Implement remain-on-channal support
Add remain on channel support in order to enable multi-channel concurrency. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 7972e1e24dd2..22460a1e033c 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -2197,6 +2197,9 @@ int ath_tx_start(struct ieee80211_hw *hw, struct sk_buff *skb,
2197 if (vif) 2197 if (vif)
2198 avp = (void *)vif->drv_priv; 2198 avp = (void *)vif->drv_priv;
2199 2199
2200 if (info->flags & IEEE80211_TX_CTL_TX_OFFCHAN)
2201 txctl->force_channel = true;
2202
2200 ret = ath_tx_prepare(hw, skb, txctl); 2203 ret = ath_tx_prepare(hw, skb, txctl);
2201 if (ret) 2204 if (ret)
2202 return ret; 2205 return ret;
@@ -2234,7 +2237,8 @@ int ath_tx_start(struct ieee80211_hw *hw, struct sk_buff *skb,
2234 if (txctl->an && queue) 2237 if (txctl->an && queue)
2235 tid = ath_get_skb_tid(sc, txctl->an, skb); 2238 tid = ath_get_skb_tid(sc, txctl->an, skb);
2236 2239
2237 if (info->flags & IEEE80211_TX_CTL_PS_RESPONSE) { 2240 if (info->flags & (IEEE80211_TX_CTL_PS_RESPONSE |
2241 IEEE80211_TX_CTL_TX_OFFCHAN)) {
2238 ath_txq_unlock(sc, txq); 2242 ath_txq_unlock(sc, txq);
2239 txq = sc->tx.uapsdq; 2243 txq = sc->tx.uapsdq;
2240 ath_txq_lock(sc, txq); 2244 ath_txq_lock(sc, txq);