From 9f4c2864868bd4d37d6bb2811584de15cea98e02 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 7 Jul 2010 17:03:00 +0000 Subject: mac80211: update to wireless-testing 2010-07-06, add another patch to finally fix the annoying buffer leak in ath9k git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22088 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../mac80211/patches/531-ath9k_nf_cleanup.patch | 207 --------------------- 1 file changed, 207 deletions(-) delete mode 100644 package/mac80211/patches/531-ath9k_nf_cleanup.patch (limited to 'package/mac80211/patches/531-ath9k_nf_cleanup.patch') diff --git a/package/mac80211/patches/531-ath9k_nf_cleanup.patch b/package/mac80211/patches/531-ath9k_nf_cleanup.patch deleted file mode 100644 index f74e4f676..000000000 --- a/package/mac80211/patches/531-ath9k_nf_cleanup.patch +++ /dev/null @@ -1,207 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -1497,50 +1497,25 @@ static bool ar5008_hw_ani_control_new(st - static void ar5008_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -- struct ath_common *common = ath9k_hw_common(ah); - int16_t nf; - - nf = MS(REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 0] is %d\n", nf); -- nfarray[0] = nf; -+ nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 1] is %d\n", nf); -- nfarray[1] = nf; -+ nfarray[1] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 2] is %d\n", nf); -- nfarray[2] = nf; -+ nfarray[2] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 0] is %d\n", nf); -- nfarray[3] = nf; -+ nfarray[3] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 1] is %d\n", nf); -- nfarray[4] = nf; -+ nfarray[4] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 2] is %d\n", nf); -- nfarray[5] = nf; -+ nfarray[5] = sign_extend(nf, 9); - } - - static void ar5008_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) ---- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c -@@ -471,47 +471,22 @@ static u32 ar9002_hw_compute_pll_control - static void ar9002_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -- struct ath_common *common = ath9k_hw_common(ah); - int16_t nf; - - nf = MS(REG_READ(ah, AR_PHY_CCA), AR9280_PHY_MINCCA_PWR); -- -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 0] is %d\n", nf); -- -- nfarray[0] = nf; -- -- if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { -- nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), -- AR9280_PHY_CH1_MINCCA_PWR); -- -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 1] is %d\n", nf); -- nfarray[1] = nf; -- } -+ nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 0] is %d\n", nf); -- -- nfarray[3] = nf; -- -- if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { -- nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), -- AR9280_PHY_CH1_EXT_MINCCA_PWR); -- -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 1] is %d\n", nf); -- nfarray[4] = nf; -- } -+ nfarray[3] = sign_extend(nf, 9); -+ -+ if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) -+ return; -+ -+ nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR9280_PHY_CH1_MINCCA_PWR); -+ nfarray[1] = sign_extend(nf, 9); -+ -+ nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR); -+ nfarray[4] = sign_extend(nf, 9); - } - - static void ar9002_hw_set_nf_limits(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/calib.c -+++ b/drivers/net/wireless/ath/ath9k/calib.c -@@ -182,6 +182,10 @@ static void ath9k_hw_nf_sanitize(struct - if (!nf[i]) - continue; - -+ ath_print(common, ATH_DBG_CALIBRATE, -+ "NF calibrated [%s] [chain %d] is %d\n", -+ (i > 3 ? "ext" : "ctl"), i % 3, nf[i]); -+ - if (nf[i] > limit->max) { - ath_print(common, ATH_DBG_CALIBRATE, - "NF[%d] (%d) > MAX (%d), correcting to MAX", ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -853,6 +853,12 @@ static inline struct ath_hw_ops *ath9k_h - return &ah->ops; - } - -+static inline int sign_extend(int val, const int nbits) -+{ -+ int order = BIT(nbits-1); -+ return (val ^ order) - order; -+} -+ - /* Initialization, Detach, Reset */ - const char *ath9k_hw_probe(u16 vendorid, u16 devid); - void ath9k_hw_deinit(struct ath_hw *ah); ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1018,50 +1018,25 @@ static bool ar9003_hw_ani_control(struct - static void ar9003_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -- struct ath_common *common = ath9k_hw_common(ah); - int16_t nf; - - nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 0] is %d\n", nf); -- nfarray[0] = nf; -+ nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 1] is %d\n", nf); -- nfarray[1] = nf; -+ nfarray[1] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 2] is %d\n", nf); -- nfarray[2] = nf; -+ nfarray[2] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 0] is %d\n", nf); -- nfarray[3] = nf; -+ nfarray[3] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 1] is %d\n", nf); -- nfarray[4] = nf; -+ nfarray[4] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 2] is %d\n", nf); -- nfarray[5] = nf; -+ nfarray[5] = sign_extend(nf, 9); - } - - static void ar9003_hw_set_nf_limits(struct ath_hw *ah) -- cgit v1.2.3