OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2008-2009 Atheros Communications Inc. | 2 * Copyright (c) 2008-2009 Atheros Communications Inc. |
3 * | 3 * |
4 * Permission to use, copy, modify, and/or distribute this software for any | 4 * Permission to use, copy, modify, and/or distribute this software for any |
5 * purpose with or without fee is hereby granted, provided that the above | 5 * purpose with or without fee is hereby granted, provided that the above |
6 * copyright notice and this permission notice appear in all copies. | 6 * copyright notice and this permission notice appear in all copies. |
7 * | 7 * |
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 | 212 |
213 info = IEEE80211_SKB_CB(skb); | 213 info = IEEE80211_SKB_CB(skb); |
214 memset(info, 0, sizeof(*info)); | 214 memset(info, 0, sizeof(*info)); |
215 info->flags = IEEE80211_TX_CTL_REQ_TX_STATUS; | 215 info->flags = IEEE80211_TX_CTL_REQ_TX_STATUS; |
216 info->control.vif = vif; | 216 info->control.vif = vif; |
217 info->control.rates[0].idx = 0; | 217 info->control.rates[0].idx = 0; |
218 info->control.rates[0].count = 4; | 218 info->control.rates[0].count = 4; |
219 info->control.rates[1].idx = -1; | 219 info->control.rates[1].idx = -1; |
220 | 220 |
221 memset(&txctl, 0, sizeof(struct ath_tx_control)); | 221 memset(&txctl, 0, sizeof(struct ath_tx_control)); |
222 » txctl.txq = &sc->tx.txq[sc->tx.hwq_map[WME_AC_VO]]; | 222 » txctl.txq = sc->tx.txq_map[WME_AC_VO]; |
223 txctl.frame_type = ps ? ATH9K_IFT_PAUSE : ATH9K_IFT_UNPAUSE; | 223 txctl.frame_type = ps ? ATH9K_IFT_PAUSE : ATH9K_IFT_UNPAUSE; |
224 | 224 |
225 if (ath_tx_start(aphy->hw, skb, &txctl) != 0) | 225 if (ath_tx_start(aphy->hw, skb, &txctl) != 0) |
226 goto exit; | 226 goto exit; |
227 | 227 |
228 return 0; | 228 return 0; |
229 exit: | 229 exit: |
230 dev_kfree_skb_any(skb); | 230 dev_kfree_skb_any(skb); |
231 return -1; | 231 return -1; |
232 } | 232 } |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
743 /* Now stop the secondary wiphy queues */ | 743 /* Now stop the secondary wiphy queues */ |
744 for (i = 0; i < sc->num_sec_wiphy; i++) { | 744 for (i = 0; i < sc->num_sec_wiphy; i++) { |
745 struct ath_wiphy *aphy = sc->sec_wiphy[i]; | 745 struct ath_wiphy *aphy = sc->sec_wiphy[i]; |
746 if (!aphy) | 746 if (!aphy) |
747 continue; | 747 continue; |
748 hw = aphy->hw; | 748 hw = aphy->hw; |
749 ieee80211_stop_queue(hw, skb_queue); | 749 ieee80211_stop_queue(hw, skb_queue); |
750 } | 750 } |
751 spin_unlock_bh(&sc->wiphy_lock); | 751 spin_unlock_bh(&sc->wiphy_lock); |
752 } | 752 } |
OLD | NEW |