diff options
-rw-r--r-- | drivers/net/wireless/ath9k/ath9k.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/beacon.c | 18 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/core.c | 21 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/core.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/hw.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/main.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/recv.c | 18 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/xmit.c | 4 |
8 files changed, 41 insertions, 39 deletions
diff --git a/drivers/net/wireless/ath9k/ath9k.h b/drivers/net/wireless/ath9k/ath9k.h index 3e7072dcb439..682d3bb4d494 100644 --- a/drivers/net/wireless/ath9k/ath9k.h +++ b/drivers/net/wireless/ath9k/ath9k.h | |||
@@ -855,7 +855,7 @@ bool ath9k_regd_init_channels(struct ath_hal *ah, | |||
855 | u32 ath9k_hw_mhz2ieee(struct ath_hal *ah, u32 freq, u32 flags); | 855 | u32 ath9k_hw_mhz2ieee(struct ath_hal *ah, u32 freq, u32 flags); |
856 | enum ath9k_int ath9k_hw_set_interrupts(struct ath_hal *ah, | 856 | enum ath9k_int ath9k_hw_set_interrupts(struct ath_hal *ah, |
857 | enum ath9k_int ints); | 857 | enum ath9k_int ints); |
858 | bool ath9k_hw_reset(struct ath_hal *ah, enum ath9k_opmode opmode, | 858 | bool ath9k_hw_reset(struct ath_hal *ah, |
859 | struct ath9k_channel *chan, | 859 | struct ath9k_channel *chan, |
860 | enum ath9k_ht_macmode macmode, | 860 | enum ath9k_ht_macmode macmode, |
861 | u8 txchainmask, u8 rxchainmask, | 861 | u8 txchainmask, u8 rxchainmask, |
diff --git a/drivers/net/wireless/ath9k/beacon.c b/drivers/net/wireless/ath9k/beacon.c index 67a804626757..2736a4b4e4a1 100644 --- a/drivers/net/wireless/ath9k/beacon.c +++ b/drivers/net/wireless/ath9k/beacon.c | |||
@@ -33,7 +33,7 @@ static int ath_beaconq_config(struct ath_softc *sc) | |||
33 | struct ath9k_tx_queue_info qi; | 33 | struct ath9k_tx_queue_info qi; |
34 | 34 | ||
35 | ath9k_hw_get_txq_props(ah, sc->sc_bhalq, &qi); | 35 | ath9k_hw_get_txq_props(ah, sc->sc_bhalq, &qi); |
36 | if (sc->sc_opmode == ATH9K_M_HOSTAP) { | 36 | if (sc->sc_ah->ah_opmode == ATH9K_M_HOSTAP) { |
37 | /* Always burst out beacon and CAB traffic. */ | 37 | /* Always burst out beacon and CAB traffic. */ |
38 | qi.tqi_aifs = 1; | 38 | qi.tqi_aifs = 1; |
39 | qi.tqi_cwmin = 0; | 39 | qi.tqi_cwmin = 0; |
@@ -85,7 +85,7 @@ static void ath_beacon_setup(struct ath_softc *sc, | |||
85 | 85 | ||
86 | flags = ATH9K_TXDESC_NOACK; | 86 | flags = ATH9K_TXDESC_NOACK; |
87 | 87 | ||
88 | if (sc->sc_opmode == ATH9K_M_IBSS && | 88 | if (sc->sc_ah->ah_opmode == ATH9K_M_IBSS && |
89 | (ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) { | 89 | (ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) { |
90 | ds->ds_link = bf->bf_daddr; /* self-linked */ | 90 | ds->ds_link = bf->bf_daddr; /* self-linked */ |
91 | flags |= ATH9K_TXDESC_VEOL; | 91 | flags |= ATH9K_TXDESC_VEOL; |
@@ -375,7 +375,7 @@ int ath_beacon_alloc(struct ath_softc *sc, int if_id) | |||
375 | struct ath_buf, list); | 375 | struct ath_buf, list); |
376 | list_del(&avp->av_bcbuf->list); | 376 | list_del(&avp->av_bcbuf->list); |
377 | 377 | ||
378 | if (sc->sc_opmode == ATH9K_M_HOSTAP || | 378 | if (sc->sc_ah->ah_opmode == ATH9K_M_HOSTAP || |
379 | !(sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) { | 379 | !(sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) { |
380 | int slot; | 380 | int slot; |
381 | /* | 381 | /* |
@@ -750,7 +750,7 @@ void ath_beacon_config(struct ath_softc *sc, int if_id) | |||
750 | if (if_id != ATH_IF_ID_ANY) | 750 | if (if_id != ATH_IF_ID_ANY) |
751 | av_opmode = sc->sc_vaps[if_id]->av_opmode; | 751 | av_opmode = sc->sc_vaps[if_id]->av_opmode; |
752 | else | 752 | else |
753 | av_opmode = sc->sc_opmode; | 753 | av_opmode = sc->sc_ah->ah_opmode; |
754 | 754 | ||
755 | memzero(&conf, sizeof(struct ath_beacon_config)); | 755 | memzero(&conf, sizeof(struct ath_beacon_config)); |
756 | 756 | ||
@@ -770,7 +770,7 @@ void ath_beacon_config(struct ath_softc *sc, int if_id) | |||
770 | nexttbtt = TSF_TO_TU(get_unaligned_le32(conf.u.last_tstamp + 4), | 770 | nexttbtt = TSF_TO_TU(get_unaligned_le32(conf.u.last_tstamp + 4), |
771 | get_unaligned_le32(conf.u.last_tstamp)); | 771 | get_unaligned_le32(conf.u.last_tstamp)); |
772 | /* XXX conditionalize multi-bss support? */ | 772 | /* XXX conditionalize multi-bss support? */ |
773 | if (sc->sc_opmode == ATH9K_M_HOSTAP) { | 773 | if (sc->sc_ah->ah_opmode == ATH9K_M_HOSTAP) { |
774 | /* | 774 | /* |
775 | * For multi-bss ap support beacons are either staggered | 775 | * For multi-bss ap support beacons are either staggered |
776 | * evenly over N slots or burst together. For the former | 776 | * evenly over N slots or burst together. For the former |
@@ -791,7 +791,7 @@ void ath_beacon_config(struct ath_softc *sc, int if_id) | |||
791 | DPRINTF(sc, ATH_DBG_BEACON, "%s: nexttbtt %u intval %u (%u)\n", | 791 | DPRINTF(sc, ATH_DBG_BEACON, "%s: nexttbtt %u intval %u (%u)\n", |
792 | __func__, nexttbtt, intval, conf.beacon_interval); | 792 | __func__, nexttbtt, intval, conf.beacon_interval); |
793 | /* Check for ATH9K_M_HOSTAP and sc_nostabeacons for WDS client */ | 793 | /* Check for ATH9K_M_HOSTAP and sc_nostabeacons for WDS client */ |
794 | if (sc->sc_opmode == ATH9K_M_STA) { | 794 | if (sc->sc_ah->ah_opmode == ATH9K_M_STA) { |
795 | struct ath9k_beacon_state bs; | 795 | struct ath9k_beacon_state bs; |
796 | u64 tsf; | 796 | u64 tsf; |
797 | u32 tsftu; | 797 | u32 tsftu; |
@@ -911,7 +911,7 @@ void ath_beacon_config(struct ath_softc *sc, int if_id) | |||
911 | ath9k_hw_set_interrupts(ah, 0); | 911 | ath9k_hw_set_interrupts(ah, 0); |
912 | if (nexttbtt == intval) | 912 | if (nexttbtt == intval) |
913 | intval |= ATH9K_BEACON_RESET_TSF; | 913 | intval |= ATH9K_BEACON_RESET_TSF; |
914 | if (sc->sc_opmode == ATH9K_M_IBSS) { | 914 | if (sc->sc_ah->ah_opmode == ATH9K_M_IBSS) { |
915 | /* | 915 | /* |
916 | * Pull nexttbtt forward to reflect the current | 916 | * Pull nexttbtt forward to reflect the current |
917 | * TSF . | 917 | * TSF . |
@@ -943,7 +943,7 @@ void ath_beacon_config(struct ath_softc *sc, int if_id) | |||
943 | if (!(ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) | 943 | if (!(ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) |
944 | sc->sc_imask |= ATH9K_INT_SWBA; | 944 | sc->sc_imask |= ATH9K_INT_SWBA; |
945 | ath_beaconq_config(sc); | 945 | ath_beaconq_config(sc); |
946 | } else if (sc->sc_opmode == ATH9K_M_HOSTAP) { | 946 | } else if (sc->sc_ah->ah_opmode == ATH9K_M_HOSTAP) { |
947 | /* | 947 | /* |
948 | * In AP mode we enable the beacon timers and | 948 | * In AP mode we enable the beacon timers and |
949 | * SWBA interrupts to prepare beacon frames. | 949 | * SWBA interrupts to prepare beacon frames. |
@@ -959,7 +959,7 @@ void ath_beacon_config(struct ath_softc *sc, int if_id) | |||
959 | * When using a self-linked beacon descriptor in | 959 | * When using a self-linked beacon descriptor in |
960 | * ibss mode load it once here. | 960 | * ibss mode load it once here. |
961 | */ | 961 | */ |
962 | if (sc->sc_opmode == ATH9K_M_IBSS && | 962 | if (sc->sc_ah->ah_opmode == ATH9K_M_IBSS && |
963 | (ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) | 963 | (ah->ah_caps.hw_caps & ATH9K_HW_CAP_VEOL)) |
964 | ath_beacon_start_adhoc(sc, 0); | 964 | ath_beacon_start_adhoc(sc, 0); |
965 | } | 965 | } |
diff --git a/drivers/net/wireless/ath9k/core.c b/drivers/net/wireless/ath9k/core.c index 7f92d469ad02..8359356ac02e 100644 --- a/drivers/net/wireless/ath9k/core.c +++ b/drivers/net/wireless/ath9k/core.c | |||
@@ -355,7 +355,7 @@ int ath_set_channel(struct ath_softc *sc, struct ath9k_channel *hchan) | |||
355 | fastcc = false; | 355 | fastcc = false; |
356 | 356 | ||
357 | spin_lock_bh(&sc->sc_resetlock); | 357 | spin_lock_bh(&sc->sc_resetlock); |
358 | if (!ath9k_hw_reset(ah, sc->sc_opmode, hchan, | 358 | if (!ath9k_hw_reset(ah, hchan, |
359 | ht_macmode, sc->sc_tx_chainmask, | 359 | ht_macmode, sc->sc_tx_chainmask, |
360 | sc->sc_rx_chainmask, | 360 | sc->sc_rx_chainmask, |
361 | sc->sc_ht_extprotspacing, | 361 | sc->sc_ht_extprotspacing, |
@@ -533,7 +533,8 @@ int ath_vap_listen(struct ath_softc *sc, int if_id) | |||
533 | rfilt = ath_calcrxfilter(sc); | 533 | rfilt = ath_calcrxfilter(sc); |
534 | ath9k_hw_setrxfilter(ah, rfilt); | 534 | ath9k_hw_setrxfilter(ah, rfilt); |
535 | 535 | ||
536 | if (sc->sc_opmode == ATH9K_M_STA || sc->sc_opmode == ATH9K_M_IBSS) { | 536 | if (sc->sc_ah->ah_opmode == ATH9K_M_STA || |
537 | sc->sc_ah->ah_opmode == ATH9K_M_IBSS) { | ||
537 | memcpy(sc->sc_curbssid, ath_bcast_mac, ETH_ALEN); | 538 | memcpy(sc->sc_curbssid, ath_bcast_mac, ETH_ALEN); |
538 | ath9k_hw_write_associd(ah, sc->sc_curbssid, sc->sc_curaid); | 539 | ath9k_hw_write_associd(ah, sc->sc_curbssid, sc->sc_curaid); |
539 | } else | 540 | } else |
@@ -603,7 +604,7 @@ int ath_vap_attach(struct ath_softc *sc, | |||
603 | sc->sc_vaps[if_id] = avp; | 604 | sc->sc_vaps[if_id] = avp; |
604 | sc->sc_nvaps++; | 605 | sc->sc_nvaps++; |
605 | /* Set the device opmode */ | 606 | /* Set the device opmode */ |
606 | sc->sc_opmode = opmode; | 607 | sc->sc_ah->ah_opmode = opmode; |
607 | 608 | ||
608 | /* default VAP configuration */ | 609 | /* default VAP configuration */ |
609 | avp->av_config.av_fixed_rateset = IEEE80211_FIXED_RATE_NONE; | 610 | avp->av_config.av_fixed_rateset = IEEE80211_FIXED_RATE_NONE; |
@@ -677,7 +678,8 @@ int ath_open(struct ath_softc *sc, struct ath9k_channel *initial_chan) | |||
677 | int error = 0; | 678 | int error = 0; |
678 | enum ath9k_ht_macmode ht_macmode = ath_cwm_macmode(sc); | 679 | enum ath9k_ht_macmode ht_macmode = ath_cwm_macmode(sc); |
679 | 680 | ||
680 | DPRINTF(sc, ATH_DBG_CONFIG, "%s: mode %d\n", __func__, sc->sc_opmode); | 681 | DPRINTF(sc, ATH_DBG_CONFIG, "%s: mode %d\n", |
682 | __func__, sc->sc_ah->ah_opmode); | ||
681 | 683 | ||
682 | /* | 684 | /* |
683 | * Stop anything previously setup. This is safe | 685 | * Stop anything previously setup. This is safe |
@@ -702,7 +704,7 @@ int ath_open(struct ath_softc *sc, struct ath9k_channel *initial_chan) | |||
702 | sc->sc_curchan = *initial_chan; | 704 | sc->sc_curchan = *initial_chan; |
703 | 705 | ||
704 | spin_lock_bh(&sc->sc_resetlock); | 706 | spin_lock_bh(&sc->sc_resetlock); |
705 | if (!ath9k_hw_reset(ah, sc->sc_opmode, &sc->sc_curchan, ht_macmode, | 707 | if (!ath9k_hw_reset(ah, &sc->sc_curchan, ht_macmode, |
706 | sc->sc_tx_chainmask, sc->sc_rx_chainmask, | 708 | sc->sc_tx_chainmask, sc->sc_rx_chainmask, |
707 | sc->sc_ht_extprotspacing, false, &status)) { | 709 | sc->sc_ht_extprotspacing, false, &status)) { |
708 | DPRINTF(sc, ATH_DBG_FATAL, | 710 | DPRINTF(sc, ATH_DBG_FATAL, |
@@ -749,7 +751,8 @@ int ath_open(struct ath_softc *sc, struct ath9k_channel *initial_chan) | |||
749 | * Note we only do this (at the moment) for station mode. | 751 | * Note we only do this (at the moment) for station mode. |
750 | */ | 752 | */ |
751 | if (ath9k_hw_phycounters(ah) && | 753 | if (ath9k_hw_phycounters(ah) && |
752 | ((sc->sc_opmode == ATH9K_M_STA) || (sc->sc_opmode == ATH9K_M_IBSS))) | 754 | ((sc->sc_ah->ah_opmode == ATH9K_M_STA) || |
755 | (sc->sc_ah->ah_opmode == ATH9K_M_IBSS))) | ||
753 | sc->sc_imask |= ATH9K_INT_MIB; | 756 | sc->sc_imask |= ATH9K_INT_MIB; |
754 | /* | 757 | /* |
755 | * Some hardware processes the TIM IE and fires an | 758 | * Some hardware processes the TIM IE and fires an |
@@ -758,7 +761,7 @@ int ath_open(struct ath_softc *sc, struct ath9k_channel *initial_chan) | |||
758 | * enable the TIM interrupt when operating as station. | 761 | * enable the TIM interrupt when operating as station. |
759 | */ | 762 | */ |
760 | if ((ah->ah_caps.hw_caps & ATH9K_HW_CAP_ENHANCEDPM) && | 763 | if ((ah->ah_caps.hw_caps & ATH9K_HW_CAP_ENHANCEDPM) && |
761 | (sc->sc_opmode == ATH9K_M_STA) && | 764 | (sc->sc_ah->ah_opmode == ATH9K_M_STA) && |
762 | !sc->sc_config.swBeaconProcess) | 765 | !sc->sc_config.swBeaconProcess) |
763 | sc->sc_imask |= ATH9K_INT_TIM; | 766 | sc->sc_imask |= ATH9K_INT_TIM; |
764 | /* | 767 | /* |
@@ -789,7 +792,7 @@ int ath_reset(struct ath_softc *sc, bool retry_tx) | |||
789 | 792 | ||
790 | /* Reset chip */ | 793 | /* Reset chip */ |
791 | spin_lock_bh(&sc->sc_resetlock); | 794 | spin_lock_bh(&sc->sc_resetlock); |
792 | if (!ath9k_hw_reset(ah, sc->sc_opmode, &sc->sc_curchan, | 795 | if (!ath9k_hw_reset(ah, &sc->sc_curchan, |
793 | ht_macmode, | 796 | ht_macmode, |
794 | sc->sc_tx_chainmask, sc->sc_rx_chainmask, | 797 | sc->sc_tx_chainmask, sc->sc_rx_chainmask, |
795 | sc->sc_ht_extprotspacing, false, &status)) { | 798 | sc->sc_ht_extprotspacing, false, &status)) { |
@@ -1096,7 +1099,7 @@ int ath_init(u16 devid, struct ath_softc *sc) | |||
1096 | goto bad; | 1099 | goto bad; |
1097 | 1100 | ||
1098 | /* default to STA mode */ | 1101 | /* default to STA mode */ |
1099 | sc->sc_opmode = ATH9K_M_MONITOR; | 1102 | sc->sc_ah->ah_opmode = ATH9K_M_MONITOR; |
1100 | 1103 | ||
1101 | /* Setup rate tables */ | 1104 | /* Setup rate tables */ |
1102 | 1105 | ||
diff --git a/drivers/net/wireless/ath9k/core.h b/drivers/net/wireless/ath9k/core.h index 19399da8d47e..bfe16230b5e7 100644 --- a/drivers/net/wireless/ath9k/core.h +++ b/drivers/net/wireless/ath9k/core.h | |||
@@ -895,15 +895,15 @@ struct ath_ht_info { | |||
895 | struct ath_softc { | 895 | struct ath_softc { |
896 | struct ieee80211_hw *hw; | 896 | struct ieee80211_hw *hw; |
897 | struct pci_dev *pdev; | 897 | struct pci_dev *pdev; |
898 | void __iomem *mem; | ||
899 | struct tasklet_struct intr_tq; | 898 | struct tasklet_struct intr_tq; |
900 | struct tasklet_struct bcon_tasklet; | 899 | struct tasklet_struct bcon_tasklet; |
901 | struct ath_config sc_config; /* load-time parameters */ | 900 | struct ath_config sc_config; /* load-time parameters */ |
902 | int sc_debug; | ||
903 | struct ath_hal *sc_ah; | 901 | struct ath_hal *sc_ah; |
904 | struct ath_rate_softc *sc_rc; /* tx rate control support */ | 902 | struct ath_rate_softc *sc_rc; /* tx rate control support */ |
903 | void __iomem *mem; | ||
904 | |||
905 | int sc_debug; | ||
905 | u32 sc_intrstatus; | 906 | u32 sc_intrstatus; |
906 | enum ath9k_opmode sc_opmode; /* current operating mode */ | ||
907 | unsigned int rx_filter; | 907 | unsigned int rx_filter; |
908 | u8 sc_invalid; /* being detached */ | 908 | u8 sc_invalid; /* being detached */ |
909 | u8 sc_beacons; /* beacons running */ | 909 | u8 sc_beacons; /* beacons running */ |
diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c index 3d879e7a8ea6..24b78c2eb44b 100644 --- a/drivers/net/wireless/ath9k/hw.c +++ b/drivers/net/wireless/ath9k/hw.c | |||
@@ -5839,7 +5839,7 @@ static inline bool ath9k_hw_init_cal(struct ath_hal *ah, | |||
5839 | } | 5839 | } |
5840 | 5840 | ||
5841 | 5841 | ||
5842 | bool ath9k_hw_reset(struct ath_hal *ah, enum ath9k_opmode opmode, | 5842 | bool ath9k_hw_reset(struct ath_hal *ah, |
5843 | struct ath9k_channel *chan, | 5843 | struct ath9k_channel *chan, |
5844 | enum ath9k_ht_macmode macmode, | 5844 | enum ath9k_ht_macmode macmode, |
5845 | u8 txchainmask, u8 rxchainmask, | 5845 | u8 txchainmask, u8 rxchainmask, |
@@ -5953,7 +5953,7 @@ bool ath9k_hw_reset(struct ath_hal *ah, enum ath9k_opmode opmode, | |||
5953 | | (ah->ah_config. | 5953 | | (ah->ah_config. |
5954 | ack_6mb ? AR_STA_ID1_ACKCTS_6MB : 0) | 5954 | ack_6mb ? AR_STA_ID1_ACKCTS_6MB : 0) |
5955 | | ahp->ah_staId1Defaults); | 5955 | | ahp->ah_staId1Defaults); |
5956 | ath9k_hw_set_operating_mode(ah, opmode); | 5956 | ath9k_hw_set_operating_mode(ah, ah->ah_opmode); |
5957 | 5957 | ||
5958 | REG_WRITE(ah, AR_BSSMSKL, get_unaligned_le32(ahp->ah_bssidmask)); | 5958 | REG_WRITE(ah, AR_BSSMSKL, get_unaligned_le32(ahp->ah_bssidmask)); |
5959 | REG_WRITE(ah, AR_BSSMSKU, get_unaligned_le16(ahp->ah_bssidmask + 4)); | 5959 | REG_WRITE(ah, AR_BSSMSKU, get_unaligned_le16(ahp->ah_bssidmask + 4)); |
@@ -5983,13 +5983,11 @@ bool ath9k_hw_reset(struct ath_hal *ah, enum ath9k_opmode opmode, | |||
5983 | for (i = 0; i < ah->ah_caps.total_queues; i++) | 5983 | for (i = 0; i < ah->ah_caps.total_queues; i++) |
5984 | ath9k_hw_resettxqueue(ah, i); | 5984 | ath9k_hw_resettxqueue(ah, i); |
5985 | 5985 | ||
5986 | ath9k_hw_init_interrupt_masks(ah, opmode); | 5986 | ath9k_hw_init_interrupt_masks(ah, ah->ah_opmode); |
5987 | ath9k_hw_init_qos(ah); | 5987 | ath9k_hw_init_qos(ah); |
5988 | 5988 | ||
5989 | ath9k_hw_init_user_settings(ah); | 5989 | ath9k_hw_init_user_settings(ah); |
5990 | 5990 | ||
5991 | ah->ah_opmode = opmode; | ||
5992 | |||
5993 | REG_WRITE(ah, AR_STA_ID1, | 5991 | REG_WRITE(ah, AR_STA_ID1, |
5994 | REG_READ(ah, AR_STA_ID1) | AR_STA_ID1_PRESERVE_SEQNUM); | 5992 | REG_READ(ah, AR_STA_ID1) | AR_STA_ID1_PRESERVE_SEQNUM); |
5995 | 5993 | ||
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index 262fd7a8cd9a..7504b64020c9 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
@@ -472,7 +472,8 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw, | |||
472 | ath_rate_newstate(sc, avp); | 472 | ath_rate_newstate(sc, avp); |
473 | 473 | ||
474 | /* Reclaim beacon resources */ | 474 | /* Reclaim beacon resources */ |
475 | if (sc->sc_opmode == ATH9K_M_HOSTAP || sc->sc_opmode == ATH9K_M_IBSS) { | 475 | if (sc->sc_ah->ah_opmode == ATH9K_M_HOSTAP || |
476 | sc->sc_ah->ah_opmode == ATH9K_M_IBSS) { | ||
476 | ath9k_hw_stoptxdma(sc->sc_ah, sc->sc_bhalq); | 477 | ath9k_hw_stoptxdma(sc->sc_ah, sc->sc_bhalq); |
477 | ath_beacon_return(sc, avp); | 478 | ath_beacon_return(sc, avp); |
478 | } | 479 | } |
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c index a12584961d69..6d1d5035f159 100644 --- a/drivers/net/wireless/ath9k/recv.c +++ b/drivers/net/wireless/ath9k/recv.c | |||
@@ -184,7 +184,7 @@ static int ath_ampdu_input(struct ath_softc *sc, | |||
184 | tid = qc[0] & 0xf; | 184 | tid = qc[0] & 0xf; |
185 | } | 185 | } |
186 | 186 | ||
187 | if (sc->sc_opmode == ATH9K_M_STA) { | 187 | if (sc->sc_ah->ah_opmode == ATH9K_M_STA) { |
188 | /* Drop the frame not belonging to me. */ | 188 | /* Drop the frame not belonging to me. */ |
189 | if (memcmp(hdr->addr1, sc->sc_myaddr, ETH_ALEN)) { | 189 | if (memcmp(hdr->addr1, sc->sc_myaddr, ETH_ALEN)) { |
190 | dev_kfree_skb(skb); | 190 | dev_kfree_skb(skb); |
@@ -605,26 +605,26 @@ u32 ath_calcrxfilter(struct ath_softc *sc) | |||
605 | | ATH9K_RX_FILTER_MCAST; | 605 | | ATH9K_RX_FILTER_MCAST; |
606 | 606 | ||
607 | /* If not a STA, enable processing of Probe Requests */ | 607 | /* If not a STA, enable processing of Probe Requests */ |
608 | if (sc->sc_opmode != ATH9K_M_STA) | 608 | if (sc->sc_ah->ah_opmode != ATH9K_M_STA) |
609 | rfilt |= ATH9K_RX_FILTER_PROBEREQ; | 609 | rfilt |= ATH9K_RX_FILTER_PROBEREQ; |
610 | 610 | ||
611 | /* Can't set HOSTAP into promiscous mode */ | 611 | /* Can't set HOSTAP into promiscous mode */ |
612 | if (((sc->sc_opmode != ATH9K_M_HOSTAP) && | 612 | if (((sc->sc_ah->ah_opmode != ATH9K_M_HOSTAP) && |
613 | (sc->rx_filter & FIF_PROMISC_IN_BSS)) || | 613 | (sc->rx_filter & FIF_PROMISC_IN_BSS)) || |
614 | (sc->sc_opmode == ATH9K_M_MONITOR)) { | 614 | (sc->sc_ah->ah_opmode == ATH9K_M_MONITOR)) { |
615 | rfilt |= ATH9K_RX_FILTER_PROM; | 615 | rfilt |= ATH9K_RX_FILTER_PROM; |
616 | /* ??? To prevent from sending ACK */ | 616 | /* ??? To prevent from sending ACK */ |
617 | rfilt &= ~ATH9K_RX_FILTER_UCAST; | 617 | rfilt &= ~ATH9K_RX_FILTER_UCAST; |
618 | } | 618 | } |
619 | 619 | ||
620 | if (((sc->sc_opmode == ATH9K_M_STA) && | 620 | if (((sc->sc_ah->ah_opmode == ATH9K_M_STA) && |
621 | (sc->rx_filter & FIF_BCN_PRBRESP_PROMISC)) || | 621 | (sc->rx_filter & FIF_BCN_PRBRESP_PROMISC)) || |
622 | (sc->sc_opmode == ATH9K_M_IBSS)) | 622 | (sc->sc_ah->ah_opmode == ATH9K_M_IBSS)) |
623 | rfilt |= ATH9K_RX_FILTER_BEACON; | 623 | rfilt |= ATH9K_RX_FILTER_BEACON; |
624 | 624 | ||
625 | /* If in HOSTAP mode, want to enable reception of PSPOLL frames | 625 | /* If in HOSTAP mode, want to enable reception of PSPOLL frames |
626 | & beacon frames */ | 626 | & beacon frames */ |
627 | if (sc->sc_opmode == ATH9K_M_HOSTAP) | 627 | if (sc->sc_ah->ah_opmode == ATH9K_M_HOSTAP) |
628 | rfilt |= (ATH9K_RX_FILTER_BEACON | ATH9K_RX_FILTER_PSPOLL); | 628 | rfilt |= (ATH9K_RX_FILTER_BEACON | ATH9K_RX_FILTER_PSPOLL); |
629 | return rfilt; | 629 | return rfilt; |
630 | 630 | ||
@@ -905,7 +905,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush) | |||
905 | * Enable this if you want to see | 905 | * Enable this if you want to see |
906 | * error frames in Monitor mode. | 906 | * error frames in Monitor mode. |
907 | */ | 907 | */ |
908 | if (sc->sc_opmode != ATH9K_M_MONITOR) | 908 | if (sc->sc_ah->ah_opmode != ATH9K_M_MONITOR) |
909 | goto rx_next; | 909 | goto rx_next; |
910 | #endif | 910 | #endif |
911 | /* fall thru for monitor mode handling... */ | 911 | /* fall thru for monitor mode handling... */ |
@@ -950,7 +950,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush) | |||
950 | * decryption and MIC failures. For monitor mode, | 950 | * decryption and MIC failures. For monitor mode, |
951 | * we also ignore the CRC error. | 951 | * we also ignore the CRC error. |
952 | */ | 952 | */ |
953 | if (sc->sc_opmode == ATH9K_M_MONITOR) { | 953 | if (sc->sc_ah->ah_opmode == ATH9K_M_MONITOR) { |
954 | if (ds->ds_rxstat.rs_status & | 954 | if (ds->ds_rxstat.rs_status & |
955 | ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC | | 955 | ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC | |
956 | ATH9K_RXERR_CRC)) | 956 | ATH9K_RXERR_CRC)) |
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c index a24a3a5b0e62..0b5b2dd92562 100644 --- a/drivers/net/wireless/ath9k/xmit.c +++ b/drivers/net/wireless/ath9k/xmit.c | |||
@@ -1047,7 +1047,7 @@ static void ath_tx_complete_aggr_rifs(struct ath_softc *sc, | |||
1047 | * when perform internal reset in this routine. | 1047 | * when perform internal reset in this routine. |
1048 | * Only enable reset in STA mode for now. | 1048 | * Only enable reset in STA mode for now. |
1049 | */ | 1049 | */ |
1050 | if (sc->sc_opmode == ATH9K_M_STA) | 1050 | if (sc->sc_ah->ah_opmode == ATH9K_M_STA) |
1051 | needreset = 1; | 1051 | needreset = 1; |
1052 | } | 1052 | } |
1053 | } else { | 1053 | } else { |
@@ -1454,7 +1454,7 @@ static void ath_drain_txdataq(struct ath_softc *sc, bool retry_tx) | |||
1454 | "%s: Unable to stop TxDMA. Reset HAL!\n", __func__); | 1454 | "%s: Unable to stop TxDMA. Reset HAL!\n", __func__); |
1455 | 1455 | ||
1456 | spin_lock_bh(&sc->sc_resetlock); | 1456 | spin_lock_bh(&sc->sc_resetlock); |
1457 | if (!ath9k_hw_reset(ah, sc->sc_opmode, | 1457 | if (!ath9k_hw_reset(ah, |
1458 | &sc->sc_curchan, ht_macmode, | 1458 | &sc->sc_curchan, ht_macmode, |
1459 | sc->sc_tx_chainmask, sc->sc_rx_chainmask, | 1459 | sc->sc_tx_chainmask, sc->sc_rx_chainmask, |
1460 | sc->sc_ht_extprotspacing, true, &status)) { | 1460 | sc->sc_ht_extprotspacing, true, &status)) { |