aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath9k/main.c')
-rw-r--r--drivers/net/wireless/ath9k/main.c58
1 files changed, 38 insertions, 20 deletions
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index 599218def799..0c0e587d7942 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
@@ -1934,7 +1934,8 @@ static void ath9k_update_ichannel(struct ath_softc *sc,
1934 1934
1935static int ath9k_start(struct ieee80211_hw *hw) 1935static int ath9k_start(struct ieee80211_hw *hw)
1936{ 1936{
1937 struct ath_softc *sc = hw->priv; 1937 struct ath_wiphy *aphy = hw->priv;
1938 struct ath_softc *sc = aphy->sc;
1938 struct ieee80211_channel *curchan = hw->conf.channel; 1939 struct ieee80211_channel *curchan = hw->conf.channel;
1939 struct ath9k_channel *init_channel; 1940 struct ath9k_channel *init_channel;
1940 int r, pos; 1941 int r, pos;
@@ -2012,7 +2013,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
2012 sc->imask &= ~(ATH9K_INT_SWBA | ATH9K_INT_BMISS); 2013 sc->imask &= ~(ATH9K_INT_SWBA | ATH9K_INT_BMISS);
2013 ath9k_hw_set_interrupts(sc->sc_ah, sc->imask); 2014 ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
2014 2015
2015 ieee80211_wake_queues(sc->hw); 2016 ieee80211_wake_queues(hw);
2016 2017
2017#if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE) 2018#if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
2018 r = ath_start_rfkill_poll(sc); 2019 r = ath_start_rfkill_poll(sc);
@@ -2028,7 +2029,8 @@ static int ath9k_tx(struct ieee80211_hw *hw,
2028 struct sk_buff *skb) 2029 struct sk_buff *skb)
2029{ 2030{
2030 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 2031 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
2031 struct ath_softc *sc = hw->priv; 2032 struct ath_wiphy *aphy = hw->priv;
2033 struct ath_softc *sc = aphy->sc;
2032 struct ath_tx_control txctl; 2034 struct ath_tx_control txctl;
2033 int hdrlen, padsize; 2035 int hdrlen, padsize;
2034 2036
@@ -2078,7 +2080,8 @@ exit:
2078 2080
2079static void ath9k_stop(struct ieee80211_hw *hw) 2081static void ath9k_stop(struct ieee80211_hw *hw)
2080{ 2082{
2081 struct ath_softc *sc = hw->priv; 2083 struct ath_wiphy *aphy = hw->priv;
2084 struct ath_softc *sc = aphy->sc;
2082 2085
2083 if (sc->sc_flags & SC_OP_INVALID) { 2086 if (sc->sc_flags & SC_OP_INVALID) {
2084 DPRINTF(sc, ATH_DBG_ANY, "Device not present\n"); 2087 DPRINTF(sc, ATH_DBG_ANY, "Device not present\n");
@@ -2087,7 +2090,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
2087 2090
2088 mutex_lock(&sc->mutex); 2091 mutex_lock(&sc->mutex);
2089 2092
2090 ieee80211_stop_queues(sc->hw); 2093 ieee80211_stop_queues(hw);
2091 2094
2092 /* make sure h/w will not generate any interrupt 2095 /* make sure h/w will not generate any interrupt
2093 * before setting the invalid flag. */ 2096 * before setting the invalid flag. */
@@ -2118,7 +2121,8 @@ static void ath9k_stop(struct ieee80211_hw *hw)
2118static int ath9k_add_interface(struct ieee80211_hw *hw, 2121static int ath9k_add_interface(struct ieee80211_hw *hw,
2119 struct ieee80211_if_init_conf *conf) 2122 struct ieee80211_if_init_conf *conf)
2120{ 2123{
2121 struct ath_softc *sc = hw->priv; 2124 struct ath_wiphy *aphy = hw->priv;
2125 struct ath_softc *sc = aphy->sc;
2122 struct ath_vif *avp = (void *)conf->vif->drv_priv; 2126 struct ath_vif *avp = (void *)conf->vif->drv_priv;
2123 enum nl80211_iftype ic_opmode = NL80211_IFTYPE_UNSPECIFIED; 2127 enum nl80211_iftype ic_opmode = NL80211_IFTYPE_UNSPECIFIED;
2124 int ret = 0; 2128 int ret = 0;
@@ -2217,7 +2221,8 @@ out:
2217static void ath9k_remove_interface(struct ieee80211_hw *hw, 2221static void ath9k_remove_interface(struct ieee80211_hw *hw,
2218 struct ieee80211_if_init_conf *conf) 2222 struct ieee80211_if_init_conf *conf)
2219{ 2223{
2220 struct ath_softc *sc = hw->priv; 2224 struct ath_wiphy *aphy = hw->priv;
2225 struct ath_softc *sc = aphy->sc;
2221 struct ath_vif *avp = (void *)conf->vif->drv_priv; 2226 struct ath_vif *avp = (void *)conf->vif->drv_priv;
2222 int i; 2227 int i;
2223 2228
@@ -2252,7 +2257,8 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
2252 2257
2253static int ath9k_config(struct ieee80211_hw *hw, u32 changed) 2258static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
2254{ 2259{
2255 struct ath_softc *sc = hw->priv; 2260 struct ath_wiphy *aphy = hw->priv;
2261 struct ath_softc *sc = aphy->sc;
2256 struct ieee80211_conf *conf = &hw->conf; 2262 struct ieee80211_conf *conf = &hw->conf;
2257 2263
2258 mutex_lock(&sc->mutex); 2264 mutex_lock(&sc->mutex);
@@ -2319,7 +2325,8 @@ static int ath9k_config_interface(struct ieee80211_hw *hw,
2319 struct ieee80211_vif *vif, 2325 struct ieee80211_vif *vif,
2320 struct ieee80211_if_conf *conf) 2326 struct ieee80211_if_conf *conf)
2321{ 2327{
2322 struct ath_softc *sc = hw->priv; 2328 struct ath_wiphy *aphy = hw->priv;
2329 struct ath_softc *sc = aphy->sc;
2323 struct ath_hw *ah = sc->sc_ah; 2330 struct ath_hw *ah = sc->sc_ah;
2324 struct ath_vif *avp = (void *)vif->drv_priv; 2331 struct ath_vif *avp = (void *)vif->drv_priv;
2325 u32 rfilt = 0; 2332 u32 rfilt = 0;
@@ -2424,7 +2431,8 @@ static void ath9k_configure_filter(struct ieee80211_hw *hw,
2424 int mc_count, 2431 int mc_count,
2425 struct dev_mc_list *mclist) 2432 struct dev_mc_list *mclist)
2426{ 2433{
2427 struct ath_softc *sc = hw->priv; 2434 struct ath_wiphy *aphy = hw->priv;
2435 struct ath_softc *sc = aphy->sc;
2428 u32 rfilt; 2436 u32 rfilt;
2429 2437
2430 changed_flags &= SUPPORTED_FILTERS; 2438 changed_flags &= SUPPORTED_FILTERS;
@@ -2442,7 +2450,8 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw,
2442 enum sta_notify_cmd cmd, 2450 enum sta_notify_cmd cmd,
2443 struct ieee80211_sta *sta) 2451 struct ieee80211_sta *sta)
2444{ 2452{
2445 struct ath_softc *sc = hw->priv; 2453 struct ath_wiphy *aphy = hw->priv;
2454 struct ath_softc *sc = aphy->sc;
2446 2455
2447 switch (cmd) { 2456 switch (cmd) {
2448 case STA_NOTIFY_ADD: 2457 case STA_NOTIFY_ADD:
@@ -2459,7 +2468,8 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw,
2459static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue, 2468static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
2460 const struct ieee80211_tx_queue_params *params) 2469 const struct ieee80211_tx_queue_params *params)
2461{ 2470{
2462 struct ath_softc *sc = hw->priv; 2471 struct ath_wiphy *aphy = hw->priv;
2472 struct ath_softc *sc = aphy->sc;
2463 struct ath9k_tx_queue_info qi; 2473 struct ath9k_tx_queue_info qi;
2464 int ret = 0, qnum; 2474 int ret = 0, qnum;
2465 2475
@@ -2495,7 +2505,8 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
2495 struct ieee80211_sta *sta, 2505 struct ieee80211_sta *sta,
2496 struct ieee80211_key_conf *key) 2506 struct ieee80211_key_conf *key)
2497{ 2507{
2498 struct ath_softc *sc = hw->priv; 2508 struct ath_wiphy *aphy = hw->priv;
2509 struct ath_softc *sc = aphy->sc;
2499 int ret = 0; 2510 int ret = 0;
2500 2511
2501 if (modparam_nohwcrypt) 2512 if (modparam_nohwcrypt)
@@ -2537,7 +2548,8 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
2537 struct ieee80211_bss_conf *bss_conf, 2548 struct ieee80211_bss_conf *bss_conf,
2538 u32 changed) 2549 u32 changed)
2539{ 2550{
2540 struct ath_softc *sc = hw->priv; 2551 struct ath_wiphy *aphy = hw->priv;
2552 struct ath_softc *sc = aphy->sc;
2541 2553
2542 mutex_lock(&sc->mutex); 2554 mutex_lock(&sc->mutex);
2543 2555
@@ -2572,7 +2584,8 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
2572static u64 ath9k_get_tsf(struct ieee80211_hw *hw) 2584static u64 ath9k_get_tsf(struct ieee80211_hw *hw)
2573{ 2585{
2574 u64 tsf; 2586 u64 tsf;
2575 struct ath_softc *sc = hw->priv; 2587 struct ath_wiphy *aphy = hw->priv;
2588 struct ath_softc *sc = aphy->sc;
2576 2589
2577 mutex_lock(&sc->mutex); 2590 mutex_lock(&sc->mutex);
2578 tsf = ath9k_hw_gettsf64(sc->sc_ah); 2591 tsf = ath9k_hw_gettsf64(sc->sc_ah);
@@ -2583,7 +2596,8 @@ static u64 ath9k_get_tsf(struct ieee80211_hw *hw)
2583 2596
2584static void ath9k_set_tsf(struct ieee80211_hw *hw, u64 tsf) 2597static void ath9k_set_tsf(struct ieee80211_hw *hw, u64 tsf)
2585{ 2598{
2586 struct ath_softc *sc = hw->priv; 2599 struct ath_wiphy *aphy = hw->priv;
2600 struct ath_softc *sc = aphy->sc;
2587 2601
2588 mutex_lock(&sc->mutex); 2602 mutex_lock(&sc->mutex);
2589 ath9k_hw_settsf64(sc->sc_ah, tsf); 2603 ath9k_hw_settsf64(sc->sc_ah, tsf);
@@ -2592,7 +2606,8 @@ static void ath9k_set_tsf(struct ieee80211_hw *hw, u64 tsf)
2592 2606
2593static void ath9k_reset_tsf(struct ieee80211_hw *hw) 2607static void ath9k_reset_tsf(struct ieee80211_hw *hw)
2594{ 2608{
2595 struct ath_softc *sc = hw->priv; 2609 struct ath_wiphy *aphy = hw->priv;
2610 struct ath_softc *sc = aphy->sc;
2596 2611
2597 mutex_lock(&sc->mutex); 2612 mutex_lock(&sc->mutex);
2598 ath9k_hw_reset_tsf(sc->sc_ah); 2613 ath9k_hw_reset_tsf(sc->sc_ah);
@@ -2604,7 +2619,8 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
2604 struct ieee80211_sta *sta, 2619 struct ieee80211_sta *sta,
2605 u16 tid, u16 *ssn) 2620 u16 tid, u16 *ssn)
2606{ 2621{
2607 struct ath_softc *sc = hw->priv; 2622 struct ath_wiphy *aphy = hw->priv;
2623 struct ath_softc *sc = aphy->sc;
2608 int ret = 0; 2624 int ret = 0;
2609 2625
2610 switch (action) { 2626 switch (action) {
@@ -2642,7 +2658,8 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
2642 2658
2643static void ath9k_sw_scan_start(struct ieee80211_hw *hw) 2659static void ath9k_sw_scan_start(struct ieee80211_hw *hw)
2644{ 2660{
2645 struct ath_softc *sc = hw->priv; 2661 struct ath_wiphy *aphy = hw->priv;
2662 struct ath_softc *sc = aphy->sc;
2646 2663
2647 mutex_lock(&sc->mutex); 2664 mutex_lock(&sc->mutex);
2648 sc->sc_flags |= SC_OP_SCANNING; 2665 sc->sc_flags |= SC_OP_SCANNING;
@@ -2651,7 +2668,8 @@ static void ath9k_sw_scan_start(struct ieee80211_hw *hw)
2651 2668
2652static void ath9k_sw_scan_complete(struct ieee80211_hw *hw) 2669static void ath9k_sw_scan_complete(struct ieee80211_hw *hw)
2653{ 2670{
2654 struct ath_softc *sc = hw->priv; 2671 struct ath_wiphy *aphy = hw->priv;
2672 struct ath_softc *sc = aphy->sc;
2655 2673
2656 mutex_lock(&sc->mutex); 2674 mutex_lock(&sc->mutex);
2657 sc->sc_flags &= ~SC_OP_SCANNING; 2675 sc->sc_flags &= ~SC_OP_SCANNING;