diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-01-09 12:49:21 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-01-09 12:49:21 +0000 |
commit | e505441f7c45d65d69d55e998a86a07d9539dd7e (patch) | |
tree | 6f896420a39248d51dfe541a1cb518c536179ead /package/mac80211 | |
parent | 9735a162dcb601a9ceb617dc5877acf5326db289 (diff) | |
download | upstream-e505441f7c45d65d69d55e998a86a07d9539dd7e.tar.gz upstream-e505441f7c45d65d69d55e998a86a07d9539dd7e.tar.bz2 upstream-e505441f7c45d65d69d55e998a86a07d9539dd7e.zip |
ath9k: backport stability fixes from r35063
git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@35064 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211')
11 files changed, 255 insertions, 26 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 1fc9cd919b..31a6037513 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -522,7 +522,15 @@ static DECLARE_WORK(reg_regdb_work, reg_regdb_search); --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c -@@ -424,8 +424,8 @@ u32 ath_calcrxfilter(struct ath_softc *s +@@ -286,7 +286,6 @@ int ath_rx_init(struct ath_softc *sc, in + + spin_lock_init(&sc->sc_pcu_lock); + spin_lock_init(&sc->rx.rxbuflock); +- clear_bit(SC_OP_RXFLUSH, &sc->sc_flags); + + common->rx_bufsize = IEEE80211_MAX_MPDU_LEN / 2 + + sc->sc_ah->caps.rx_status_len; +@@ -424,8 +423,8 @@ u32 ath_calcrxfilter(struct ath_softc *s rfilt |= ATH9K_RX_FILTER_COMP_BAR; if (sc->nvifs > 1 || (sc->rx.rxfilter & FIF_OTHER_BSS)) { @@ -533,6 +541,99 @@ rfilt |= ATH9K_RX_FILTER_PROM; rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL; } +@@ -473,6 +472,13 @@ start_recv: + return 0; + } + ++static void ath_flushrecv(struct ath_softc *sc) ++{ ++ if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ++ ath_rx_tasklet(sc, 1, true); ++ ath_rx_tasklet(sc, 1, false); ++} ++ + bool ath_stoprecv(struct ath_softc *sc) + { + struct ath_hw *ah = sc->sc_ah; +@@ -483,6 +489,8 @@ bool ath_stoprecv(struct ath_softc *sc) + ath9k_hw_setrxfilter(ah, 0); + stopped = ath9k_hw_stopdmarecv(ah, &reset); + ++ ath_flushrecv(sc); ++ + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) + ath_edma_stop_recv(sc); + else +@@ -499,15 +507,6 @@ bool ath_stoprecv(struct ath_softc *sc) + return stopped && !reset; + } + +-void ath_flushrecv(struct ath_softc *sc) +-{ +- set_bit(SC_OP_RXFLUSH, &sc->sc_flags); +- if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) +- ath_rx_tasklet(sc, 1, true); +- ath_rx_tasklet(sc, 1, false); +- clear_bit(SC_OP_RXFLUSH, &sc->sc_flags); +-} +- + static bool ath_beacon_dtim_pending_cab(struct sk_buff *skb) + { + /* Check whether the Beacon frame has DTIM indicating buffered bc/mc */ +@@ -744,6 +743,7 @@ static struct ath_buf *ath_get_next_rx_b + return NULL; + } + ++ list_del(&bf->list); + if (!bf->bf_mpdu) + return bf; + +@@ -1066,9 +1066,6 @@ int ath_rx_tasklet(struct ath_softc *sc, + + do { + bool decrypt_error = false; +- /* If handling rx interrupt and flush is in progress => exit */ +- if (test_bit(SC_OP_RXFLUSH, &sc->sc_flags) && (flush == 0)) +- break; + + memset(&rs, 0, sizeof(rs)); + if (edma) +@@ -1108,15 +1105,6 @@ int ath_rx_tasklet(struct ath_softc *sc, + sc->rx.num_pkts++; + ath_debug_stat_rx(sc, &rs); + +- /* +- * If we're asked to flush receive queue, directly +- * chain it back at the queue without processing it. +- */ +- if (test_bit(SC_OP_RXFLUSH, &sc->sc_flags)) { +- RX_STAT_INC(rx_drop_rxflush); +- goto requeue_drop_frag; +- } +- + memset(rxs, 0, sizeof(struct ieee80211_rx_status)); + + rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; +@@ -1251,14 +1239,15 @@ requeue_drop_frag: + sc->rx.frag = NULL; + } + requeue: ++ list_add_tail(&bf->list, &sc->rx.rxbuf); ++ if (!flush) ++ continue; ++ + if (edma) { +- list_add_tail(&bf->list, &sc->rx.rxbuf); + ath_rx_edma_buf_link(sc, qtype); + } else { +- list_move_tail(&bf->list, &sc->rx.rxbuf); + ath_rx_buf_link(sc, bf); +- if (!flush) +- ath9k_hw_rxena(ah); ++ ath9k_hw_rxena(ah); + } + } while (1); + --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -818,23 +818,71 @@ void ieee80211_sta_process_chanswitch(st @@ -1033,3 +1134,131 @@ ah->enabled_cals |= TX_IQ_ON_AGC_CAL; } +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -324,7 +324,6 @@ struct ath_rx { + + int ath_startrecv(struct ath_softc *sc); + bool ath_stoprecv(struct ath_softc *sc); +-void ath_flushrecv(struct ath_softc *sc); + u32 ath_calcrxfilter(struct ath_softc *sc); + int ath_rx_init(struct ath_softc *sc, int nbufs); + void ath_rx_cleanup(struct ath_softc *sc); +@@ -627,7 +626,6 @@ void ath_ant_comb_update(struct ath_soft + enum sc_op_flags { + SC_OP_INVALID, + SC_OP_BEACONS, +- SC_OP_RXFLUSH, + SC_OP_ANI_RUN, + SC_OP_PRIM_STA_VIF, + SC_OP_HW_RESET, +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -147,6 +147,7 @@ static struct ath_buf *ath9k_beacon_gene + skb->len, DMA_TO_DEVICE); + dev_kfree_skb_any(skb); + bf->bf_buf_addr = 0; ++ bf->bf_mpdu = NULL; + } + + skb = ieee80211_beacon_get(hw, vif); +@@ -359,7 +360,6 @@ void ath9k_beacon_tasklet(unsigned long + return; + + bf = ath9k_beacon_generate(sc->hw, vif); +- WARN_ON(!bf); + + if (sc->beacon.bmisscnt != 0) { + ath_dbg(common, BSTUCK, "resume beacon xmit after %u misses\n", +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -919,7 +919,6 @@ static ssize_t read_file_recv(struct fil + RXS_ERR("RX-LENGTH-ERR", rx_len_err); + RXS_ERR("RX-OOM-ERR", rx_oom_err); + RXS_ERR("RX-RATE-ERR", rx_rate_err); +- RXS_ERR("RX-DROP-RXFLUSH", rx_drop_rxflush); + RXS_ERR("RX-TOO-MANY-FRAGS", rx_too_many_frags_err); + + PHY_ERR("UNDERRUN ERR", ATH9K_PHYERR_UNDERRUN); +--- a/drivers/net/wireless/ath/ath9k/debug.h ++++ b/drivers/net/wireless/ath/ath9k/debug.h +@@ -198,7 +198,6 @@ struct ath_tx_stats { + * @rx_oom_err: No. of frames dropped due to OOM issues. + * @rx_rate_err: No. of frames dropped due to rate errors. + * @rx_too_many_frags_err: Frames dropped due to too-many-frags received. +- * @rx_drop_rxflush: No. of frames dropped due to RX-FLUSH. + * @rx_beacons: No. of beacons received. + * @rx_frags: No. of rx-fragements received. + */ +@@ -217,7 +216,6 @@ struct ath_rx_stats { + u32 rx_oom_err; + u32 rx_rate_err; + u32 rx_too_many_frags_err; +- u32 rx_drop_rxflush; + u32 rx_beacons; + u32 rx_frags; + }; +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -181,7 +181,7 @@ static void ath_restart_work(struct ath_ + ath_start_ani(sc); + } + +-static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) ++static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx) + { + struct ath_hw *ah = sc->sc_ah; + bool ret = true; +@@ -195,19 +195,15 @@ static bool ath_prepare_reset(struct ath + ath9k_debug_samp_bb_mac(sc); + ath9k_hw_disable_interrupts(ah); + ++ tasklet_disable(&sc->intr_tq); ++ + if (!ath_stoprecv(sc)) + ret = false; + + if (!ath_drain_all_txq(sc, retry_tx)) + ret = false; + +- if (!flush) { +- if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) +- ath_rx_tasklet(sc, 1, true); +- ath_rx_tasklet(sc, 1, false); +- } else { +- ath_flushrecv(sc); +- } ++ tasklet_enable(&sc->intr_tq); + + return ret; + } +@@ -261,7 +257,6 @@ static int ath_reset_internal(struct ath + struct ath_common *common = ath9k_hw_common(ah); + struct ath9k_hw_cal_data *caldata = NULL; + bool fastcc = true; +- bool flush = false; + int r; + + __ath_cancel_work(sc); +@@ -275,11 +270,10 @@ static int ath_reset_internal(struct ath + + if (!hchan) { + fastcc = false; +- flush = true; + hchan = ah->curchan; + } + +- if (!ath_prepare_reset(sc, retry_tx, flush)) ++ if (!ath_prepare_reset(sc, retry_tx)) + fastcc = false; + + ath_dbg(common, CONFIG, "Reset to %u MHz, HT40: %d fastcc: %d\n", +@@ -821,7 +815,7 @@ static void ath9k_stop(struct ieee80211_ + ath9k_hw_cfg_gpio_input(ah, ah->led_pin); + } + +- ath_prepare_reset(sc, false, true); ++ ath_prepare_reset(sc, false); + + if (sc->rx.frag) { + dev_kfree_skb_any(sc->rx.frag); diff --git a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch index 11272b96e6..0fa054aa1b 100644 --- a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch +++ b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1532,6 +1532,53 @@ static const struct file_operations fops +@@ -1531,6 +1531,53 @@ static const struct file_operations fops #endif @@ -54,7 +54,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1603,5 +1650,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1602,5 +1649,8 @@ int ath9k_init_debug(struct ath_hw *ah) debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, &sc->sc_ah->gpio_val); diff --git a/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch b/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch index 88b6d29832..e64132e03a 100644 --- a/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch +++ b/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -659,6 +659,7 @@ struct ath_softc { +@@ -657,6 +657,7 @@ struct ath_softc { struct ieee80211_hw *hw; struct device *dev; @@ -8,7 +8,7 @@ struct survey_info *cur_survey; struct survey_info survey[ATH9K_NUM_CHANNELS]; -@@ -734,6 +735,7 @@ struct ath_softc { +@@ -732,6 +733,7 @@ struct ath_softc { #endif }; @@ -18,7 +18,7 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1579,6 +1579,50 @@ static const struct file_operations fops +@@ -1578,6 +1578,50 @@ static const struct file_operations fops .owner = THIS_MODULE }; @@ -69,7 +69,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1653,5 +1697,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1652,5 +1696,8 @@ int ath9k_init_debug(struct ath_hw *ah) debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, &fops_eeprom); @@ -80,7 +80,7 @@ } --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1127,7 +1127,7 @@ static void ath9k_disable_ps(struct ath_ +@@ -1121,7 +1121,7 @@ static void ath9k_disable_ps(struct ath_ ath_dbg(common, PS, "PowerSave disabled\n"); } @@ -89,7 +89,7 @@ { struct ath_softc *sc = hw->priv; struct ath_hw *ah = sc->sc_ah; -@@ -1181,9 +1181,11 @@ static int ath9k_config(struct ieee80211 +@@ -1175,9 +1175,11 @@ static int ath9k_config(struct ieee80211 if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { struct ieee80211_channel *curchan = hw->conf.channel; @@ -101,7 +101,7 @@ if (ah->curchan) old_pos = ah->curchan - &ah->channels[0]; -@@ -1226,7 +1228,23 @@ static int ath9k_config(struct ieee80211 +@@ -1220,7 +1222,23 @@ static int ath9k_config(struct ieee80211 memset(&sc->survey[pos], 0, sizeof(struct survey_info)); } diff --git a/package/mac80211/patches/521-ath9k_cur_txpower.patch b/package/mac80211/patches/521-ath9k_cur_txpower.patch index 1133cfa6ba..d740332de3 100644 --- a/package/mac80211/patches/521-ath9k_cur_txpower.patch +++ b/package/mac80211/patches/521-ath9k_cur_txpower.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1251,6 +1251,8 @@ int ath9k_config(struct ieee80211_hw *hw +@@ -1245,6 +1245,8 @@ int ath9k_config(struct ieee80211_hw *hw return -EINVAL; } @@ -9,7 +9,7 @@ /* * The most recent snapshot of channel->noisefloor for the old * channel is only available after the hardware reset. Copy it to -@@ -1265,6 +1267,7 @@ int ath9k_config(struct ieee80211_hw *hw +@@ -1259,6 +1261,7 @@ int ath9k_config(struct ieee80211_hw *hw sc->config.txpowlimit = 2 * conf->power_level; ath9k_cmn_update_txpow(ah, sc->curtxpow, sc->config.txpowlimit, &sc->curtxpow); diff --git a/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch b/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch index 8b26a50b35..2be0b56f44 100644 --- a/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch +++ b/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch @@ -227,7 +227,7 @@ if (ads.ds_rxstatus8 & AR_RxKeyIdxValid) --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -997,12 +997,12 @@ void ath_debug_stat_rx(struct ath_softc +@@ -996,12 +996,12 @@ void ath_debug_stat_rx(struct ath_softc #ifdef CONFIG_ATH9K_MAC_DEBUG spin_lock(&sc->debug.samp_lock); RX_SAMP_DBG(jiffies) = jiffies; diff --git a/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch b/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch index 35096b255a..4c34c89684 100644 --- a/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch +++ b/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch @@ -21,7 +21,7 @@ if (ant_gain > max_gain) --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1263,7 +1263,10 @@ int ath9k_config(struct ieee80211_hw *hw +@@ -1257,7 +1257,10 @@ int ath9k_config(struct ieee80211_hw *hw } if (changed & IEEE80211_CONF_CHANGE_POWER) { diff --git a/package/mac80211/patches/540-ath9k_extra_leds.patch b/package/mac80211/patches/540-ath9k_extra_leds.patch index 86dc518564..26bee95c37 100644 --- a/package/mac80211/patches/540-ath9k_extra_leds.patch +++ b/package/mac80211/patches/540-ath9k_extra_leds.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -538,6 +538,9 @@ struct ath9k_wow_pattern { +@@ -537,6 +537,9 @@ struct ath9k_wow_pattern { #ifdef CONFIG_MAC80211_LEDS void ath_init_leds(struct ath_softc *sc); void ath_deinit_leds(struct ath_softc *sc); @@ -10,7 +10,7 @@ #else static inline void ath_init_leds(struct ath_softc *sc) { -@@ -655,6 +658,13 @@ struct ath9k_vif_iter_data { +@@ -653,6 +656,13 @@ struct ath9k_vif_iter_data { int nadhocs; /* number of adhoc vifs */ }; @@ -24,7 +24,7 @@ struct ath_softc { struct ieee80211_hw *hw; struct device *dev; -@@ -696,9 +706,8 @@ struct ath_softc { +@@ -694,9 +704,8 @@ struct ath_softc { struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; #ifdef CONFIG_MAC80211_LEDS @@ -182,7 +182,7 @@ #endif --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1255,6 +1255,61 @@ static const struct file_operations fops +@@ -1254,6 +1254,61 @@ static const struct file_operations fops .llseek = default_llseek, }; @@ -244,7 +244,7 @@ #ifdef CONFIG_ATH9K_MAC_DEBUG void ath9k_debug_samp_bb_mac(struct ath_softc *sc) -@@ -1688,6 +1743,11 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1687,6 +1742,11 @@ int ath9k_init_debug(struct ath_hw *ah) &fops_samps); #endif diff --git a/package/mac80211/patches/562-ath9k_add_idle_hack.patch b/package/mac80211/patches/562-ath9k_add_idle_hack.patch index 10fac17bd1..ec8bbcef6d 100644 --- a/package/mac80211/patches/562-ath9k_add_idle_hack.patch +++ b/package/mac80211/patches/562-ath9k_add_idle_hack.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1087,6 +1087,7 @@ static void ath9k_remove_interface(struc +@@ -1081,6 +1081,7 @@ static void ath9k_remove_interface(struc ath9k_calculate_summary_state(hw, NULL); mutex_unlock(&sc->mutex); @@ -8,7 +8,7 @@ ath9k_ps_restore(sc); } -@@ -1139,7 +1140,8 @@ int ath9k_config(struct ieee80211_hw *hw +@@ -1133,7 +1134,8 @@ int ath9k_config(struct ieee80211_hw *hw mutex_lock(&sc->mutex); if (changed & IEEE80211_CONF_CHANGE_IDLE) { diff --git a/package/mac80211/patches/564-ath9k_debugfs_diag.patch b/package/mac80211/patches/564-ath9k_debugfs_diag.patch index 2cf2a73e0b..638d3b58d3 100644 --- a/package/mac80211/patches/564-ath9k_debugfs_diag.patch +++ b/package/mac80211/patches/564-ath9k_debugfs_diag.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1678,6 +1678,50 @@ static const struct file_operations fops +@@ -1677,6 +1677,50 @@ static const struct file_operations fops }; @@ -51,7 +51,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1760,5 +1804,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1759,5 +1803,8 @@ int ath9k_init_debug(struct ath_hw *ah) debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_chanbw); @@ -125,7 +125,7 @@ } --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -476,6 +476,11 @@ irqreturn_t ath_isr(int irq, void *dev) +@@ -470,6 +470,11 @@ irqreturn_t ath_isr(int irq, void *dev) ath9k_hw_getisr(ah, &status); /* NB: clears ISR too */ status &= ah->imask; /* discard unasked-for bits */ diff --git a/package/mac80211/patches/565-ath9k_disable_paprd.patch b/package/mac80211/patches/565-ath9k_disable_paprd.patch index 079986d601..903a2b0c7e 100644 --- a/package/mac80211/patches/565-ath9k_disable_paprd.patch +++ b/package/mac80211/patches/565-ath9k_disable_paprd.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1767,6 +1767,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1766,6 +1766,8 @@ int ath9k_init_debug(struct ath_hw *ah) sc->debug.debugfs_phy, sc, &fops_tx_chainmask); debugfs_create_file("disable_ani", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_disable_ani); diff --git a/package/mac80211/patches/566-ath9k_use_ieee80211_free_txskb.patch b/package/mac80211/patches/566-ath9k_use_ieee80211_free_txskb.patch index 820d5c9f42..20fd408273 100644 --- a/package/mac80211/patches/566-ath9k_use_ieee80211_free_txskb.patch +++ b/package/mac80211/patches/566-ath9k_use_ieee80211_free_txskb.patch @@ -127,7 +127,7 @@ --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -775,7 +775,7 @@ static void ath9k_tx(struct ieee80211_hw +@@ -769,7 +769,7 @@ static void ath9k_tx(struct ieee80211_hw return; exit: |