From 2a685ec414827d135ee2788e42eed8021349aae1 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 18 Oct 2014 17:38:59 +0000 Subject: mac80211: update to 2014-10-08 Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42952 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/306-ath9k-Unify-reset-API.patch | 108 +++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 package/kernel/mac80211/patches/306-ath9k-Unify-reset-API.patch (limited to 'package/kernel/mac80211/patches/306-ath9k-Unify-reset-API.patch') diff --git a/package/kernel/mac80211/patches/306-ath9k-Unify-reset-API.patch b/package/kernel/mac80211/patches/306-ath9k-Unify-reset-API.patch new file mode 100644 index 0000000000..6460a32802 --- /dev/null +++ b/package/kernel/mac80211/patches/306-ath9k-Unify-reset-API.patch @@ -0,0 +1,108 @@ +From: Sujith Manoharan +Date: Fri, 17 Oct 2014 07:40:11 +0530 +Subject: [PATCH] ath9k: Unify reset API + +Instead of having ath_reset_internal() and ath_reset() +as two separate calls to perform a HW reset, have +one function. This makes sure that the behavior will +be the same at all callsites. + +Signed-off-by: Sujith Manoharan +--- + +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -540,7 +540,6 @@ static inline void ath_chanctx_check_act + + #endif /* CPTCFG_ATH9K_CHANNEL_CONTEXT */ + +-int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan); + void ath_startrecv(struct ath_softc *sc); + bool ath_stoprecv(struct ath_softc *sc); + u32 ath_calcrxfilter(struct ath_softc *sc); +@@ -1069,7 +1068,7 @@ void ath9k_tasklet(unsigned long data); + int ath_cabq_update(struct ath_softc *); + u8 ath9k_parse_mpdudensity(u8 mpdudensity); + irqreturn_t ath_isr(int irq, void *dev); +-int ath_reset(struct ath_softc *sc); ++int ath_reset(struct ath_softc *sc, struct ath9k_channel *hchan); + void ath_cancel_work(struct ath_softc *sc); + void ath_restart_work(struct ath_softc *sc); + int ath9k_init_device(u16 devid, struct ath_softc *sc, +--- a/drivers/net/wireless/ath/ath9k/channel.c ++++ b/drivers/net/wireless/ath/ath9k/channel.c +@@ -66,7 +66,7 @@ static int ath_set_channel(struct ath_so + } + + hchan = &sc->sc_ah->channels[pos]; +- r = ath_reset_internal(sc, hchan); ++ r = ath_reset(sc, hchan); + if (r) + return r; + +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -270,7 +270,7 @@ static bool ath_complete_reset(struct at + return true; + } + +-int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan) ++static int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan) + { + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); +@@ -598,12 +598,12 @@ chip_reset: + #undef SCHED_INTR + } + +-int ath_reset(struct ath_softc *sc) ++int ath_reset(struct ath_softc *sc, struct ath9k_channel *hchan) + { + int r; + + ath9k_ps_wakeup(sc); +- r = ath_reset_internal(sc, NULL); ++ r = ath_reset_internal(sc, hchan); + ath9k_ps_restore(sc); + + return r; +@@ -623,7 +623,9 @@ void ath_reset_work(struct work_struct * + { + struct ath_softc *sc = container_of(work, struct ath_softc, hw_reset_work); + +- ath_reset(sc); ++ ath9k_ps_wakeup(sc); ++ ath_reset_internal(sc, NULL); ++ ath9k_ps_restore(sc); + } + + /**********************/ +@@ -2044,7 +2046,7 @@ void __ath9k_flush(struct ieee80211_hw * + spin_unlock_bh(&sc->sc_pcu_lock); + + if (!drain_txq) +- ath_reset(sc); ++ ath_reset(sc, NULL); + + ath9k_ps_restore(sc); + } +--- a/drivers/net/wireless/ath/ath9k/tx99.c ++++ b/drivers/net/wireless/ath/ath9k/tx99.c +@@ -99,7 +99,7 @@ static struct sk_buff *ath9k_build_tx99_ + + static void ath9k_tx99_deinit(struct ath_softc *sc) + { +- ath_reset(sc); ++ ath_reset(sc, NULL); + + ath9k_ps_wakeup(sc); + ath9k_tx99_stop(sc); +@@ -127,7 +127,7 @@ static int ath9k_tx99_init(struct ath_so + memset(&txctl, 0, sizeof(txctl)); + txctl.txq = sc->tx.txq_map[IEEE80211_AC_VO]; + +- ath_reset(sc); ++ ath_reset(sc, NULL); + + ath9k_ps_wakeup(sc); + -- cgit v1.2.3