From: Greg Kroah-Hartman Date: Fri, 9 Mar 2012 17:45:58 +0000 (-0800) Subject: 3.2-stable patches X-Git-Tag: v3.0.24~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=da09f8cfdebec5565966b2aeccc62c57d0f4f71b;p=thirdparty%2Fkernel%2Fstable-queue.git 3.2-stable patches added patches: carl9170-fix-frame-delivery-if-sta-is-in-powersave-mode.patch carl9170-fix-memory-accounting-when-sta-is-in-power-save-mode.patch hwmon-jc42-add-support-for-at30ts00-ts3000gb2-tse2002gb2-and-mcp9804.patch hwmon-jc42-add-support-for-st-microelectronics-stts2002-and-stts3000.patch hwmon-pmbus_core-fix-maximum-number-of-pout-alarm-attributes.patch hwmon-zl6100-maintain-delay-parameter-in-driver-instance-data.patch --- diff --git a/queue-3.2/carl9170-fix-frame-delivery-if-sta-is-in-powersave-mode.patch b/queue-3.2/carl9170-fix-frame-delivery-if-sta-is-in-powersave-mode.patch new file mode 100644 index 00000000000..e21c59dc8ff --- /dev/null +++ b/queue-3.2/carl9170-fix-frame-delivery-if-sta-is-in-powersave-mode.patch @@ -0,0 +1,54 @@ +From 9926a67557532acb6cddb1c1add02952175b5c72 Mon Sep 17 00:00:00 2001 +From: Christian Lamparter +Date: Sat, 25 Feb 2012 21:36:36 +0100 +Subject: carl9170: fix frame delivery if sta is in powersave mode + +From: Christian Lamparter + +commit 9926a67557532acb6cddb1c1add02952175b5c72 upstream. + +Nicolas Cavallari discovered that carl9170 has some +serious problems delivering data to sleeping stations. + +It turns out that the driver was not honoring two +important flags (IEEE80211_TX_CTL_POLL_RESPONSE and +IEEE80211_TX_CTL_CLEAR_PS_FILT) which are set on +frames that should be sent although the receiving +station is still in powersave mode. + +Reported-by: Nicolas Cavallari +Signed-off-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ath/carl9170/tx.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/ath/carl9170/tx.c ++++ b/drivers/net/wireless/ath/carl9170/tx.c +@@ -1234,6 +1234,7 @@ static bool carl9170_tx_ps_drop(struct a + { + struct ieee80211_sta *sta; + struct carl9170_sta_info *sta_info; ++ struct ieee80211_tx_info *tx_info; + + rcu_read_lock(); + sta = __carl9170_get_tx_sta(ar, skb); +@@ -1241,12 +1242,13 @@ static bool carl9170_tx_ps_drop(struct a + goto out_rcu; + + sta_info = (void *) sta->drv_priv; +- if (unlikely(sta_info->sleeping)) { +- struct ieee80211_tx_info *tx_info; ++ tx_info = IEEE80211_SKB_CB(skb); + ++ if (unlikely(sta_info->sleeping) && ++ !(tx_info->flags & (IEEE80211_TX_CTL_POLL_RESPONSE | ++ IEEE80211_TX_CTL_CLEAR_PS_FILT))) { + rcu_read_unlock(); + +- tx_info = IEEE80211_SKB_CB(skb); + if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) + atomic_dec(&ar->tx_ampdu_upload); + diff --git a/queue-3.2/carl9170-fix-memory-accounting-when-sta-is-in-power-save-mode.patch b/queue-3.2/carl9170-fix-memory-accounting-when-sta-is-in-power-save-mode.patch new file mode 100644 index 00000000000..8ee6d635f2c --- /dev/null +++ b/queue-3.2/carl9170-fix-memory-accounting-when-sta-is-in-power-save-mode.patch @@ -0,0 +1,38 @@ +From 992d52529d7840236d3059b51c15d5eb9e81a869 Mon Sep 17 00:00:00 2001 +From: Nicolas Cavallari +Date: Thu, 23 Feb 2012 16:53:34 +0100 +Subject: carl9170: Fix memory accounting when sta is in power-save mode. + +From: Nicolas Cavallari + +commit 992d52529d7840236d3059b51c15d5eb9e81a869 upstream. + +On Access Point mode, when transmitting a packet, if the destination +station is in powersave mode, we abort transmitting the packet to the +device queue, but we do not reclaim the allocated memory. Given enough +packets, we can go in a state where there is no packet on the device +queue, but we think the device has no memory left, so no packet gets +transmitted, connections breaks and the AP stops working. + +This undo the allocation done in the TX path when the station is in +power-save mode. + +Signed-off-by: Nicolas Cavallari +Acked-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ath/carl9170/tx.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/ath/carl9170/tx.c ++++ b/drivers/net/wireless/ath/carl9170/tx.c +@@ -1251,6 +1251,7 @@ static bool carl9170_tx_ps_drop(struct a + atomic_dec(&ar->tx_ampdu_upload); + + tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED; ++ carl9170_release_dev_space(ar, skb); + carl9170_tx_status(ar, skb, false); + return true; + } diff --git a/queue-3.2/hwmon-jc42-add-support-for-at30ts00-ts3000gb2-tse2002gb2-and-mcp9804.patch b/queue-3.2/hwmon-jc42-add-support-for-at30ts00-ts3000gb2-tse2002gb2-and-mcp9804.patch new file mode 100644 index 00000000000..657597c52f7 --- /dev/null +++ b/queue-3.2/hwmon-jc42-add-support-for-at30ts00-ts3000gb2-tse2002gb2-and-mcp9804.patch @@ -0,0 +1,146 @@ +From 1bd612a25855f4cc9345052b53d7da697dba6358 Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Mon, 5 Mar 2012 11:13:52 -0800 +Subject: hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP9804 + +From: Guenter Roeck + +commit 1bd612a25855f4cc9345052b53d7da697dba6358 upstream. + +Also update IDT datasheet locations. + +Signed-off-by: Guenter Roeck +Acked-by: Jean Delvare +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/hwmon/jc42 | 20 ++++++++++++++------ + drivers/hwmon/Kconfig | 6 +++--- + drivers/hwmon/jc42.c | 20 ++++++++++++++++++-- + 3 files changed, 35 insertions(+), 11 deletions(-) + +--- a/Documentation/hwmon/jc42 ++++ b/Documentation/hwmon/jc42 +@@ -7,21 +7,29 @@ Supported chips: + Addresses scanned: I2C 0x18 - 0x1f + Datasheets: + http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf +- * IDT TSE2002B3, TS3000B3 +- Prefix: 'tse2002b3', 'ts3000b3' ++ * Atmel AT30TS00 ++ Prefix: 'at30ts00' + Addresses scanned: I2C 0x18 - 0x1f + Datasheets: +- http://www.idt.com/products/getdoc.cfm?docid=18715691 +- http://www.idt.com/products/getdoc.cfm?docid=18715692 ++ http://www.atmel.com/Images/doc8585.pdf ++ * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2 ++ Prefix: 'tse2002', 'ts3000' ++ Addresses scanned: I2C 0x18 - 0x1f ++ Datasheets: ++ http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf ++ http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf ++ http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf ++ http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf + * Maxim MAX6604 + Prefix: 'max6604' + Addresses scanned: I2C 0x18 - 0x1f + Datasheets: + http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf +- * Microchip MCP9805, MCP98242, MCP98243, MCP9843 +- Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' ++ * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843 ++ Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' + Addresses scanned: I2C 0x18 - 0x1f + Datasheets: ++ http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf + http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf + http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf + http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf +--- a/drivers/hwmon/Kconfig ++++ b/drivers/hwmon/Kconfig +@@ -497,9 +497,9 @@ config SENSORS_JC42 + If you say yes here, you get support for JEDEC JC42.4 compliant + temperature sensors, which are used on many DDR3 memory modules for + mobile devices and servers. Support will include, but not be limited +- to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243, +- MCP9843, SE97, SE98, STTS424(E), STTS2002, STTS3000, TSE2002B3, and +- TS3000B3. ++ to, ADT7408, AT30TS00, CAT34TS02, CAT6095, MAX6604, MCP9804, MCP9805, ++ MCP98242, MCP98243, MCP9843, SE97, SE98, STTS424(E), STTS2002, ++ STTS3000, TSE2002B3, TSE2002GB2, TS3000B3, and TS3000GB2. + + This driver can also be built as a module. If so, the module + will be called jc42. +--- a/drivers/hwmon/jc42.c ++++ b/drivers/hwmon/jc42.c +@@ -64,6 +64,7 @@ static const unsigned short normal_i2c[] + + /* Manufacturer IDs */ + #define ADT_MANID 0x11d4 /* Analog Devices */ ++#define ATMEL_MANID 0x001f /* Atmel */ + #define MAX_MANID 0x004d /* Maxim */ + #define IDT_MANID 0x00b3 /* IDT */ + #define MCP_MANID 0x0054 /* Microchip */ +@@ -77,15 +78,25 @@ static const unsigned short normal_i2c[] + #define ADT7408_DEVID 0x0801 + #define ADT7408_DEVID_MASK 0xffff + ++/* Atmel */ ++#define AT30TS00_DEVID 0x8201 ++#define AT30TS00_DEVID_MASK 0xffff ++ + /* IDT */ + #define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */ + #define TS3000B3_DEVID_MASK 0xffff + ++#define TS3000GB2_DEVID 0x2912 /* Also matches TSE2002GB2 */ ++#define TS3000GB2_DEVID_MASK 0xffff ++ + /* Maxim */ + #define MAX6604_DEVID 0x3e00 + #define MAX6604_DEVID_MASK 0xffff + + /* Microchip */ ++#define MCP9804_DEVID 0x0200 ++#define MCP9804_DEVID_MASK 0xfffc ++ + #define MCP98242_DEVID 0x2000 + #define MCP98242_DEVID_MASK 0xfffc + +@@ -129,8 +140,11 @@ struct jc42_chips { + + static struct jc42_chips jc42_chips[] = { + { ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK }, ++ { ATMEL_MANID, AT30TS00_DEVID, AT30TS00_DEVID_MASK }, + { IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK }, ++ { IDT_MANID, TS3000GB2_DEVID, TS3000GB2_DEVID_MASK }, + { MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK }, ++ { MCP_MANID, MCP9804_DEVID, MCP9804_DEVID_MASK }, + { MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK }, + { MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK }, + { MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK }, +@@ -167,10 +181,12 @@ static struct jc42_data *jc42_update_dev + + static const struct i2c_device_id jc42_id[] = { + { "adt7408", 0 }, ++ { "at30ts00", 0 }, + { "cat94ts02", 0 }, + { "cat6095", 0 }, + { "jc42", 0 }, + { "max6604", 0 }, ++ { "mcp9804", 0 }, + { "mcp9805", 0 }, + { "mcp98242", 0 }, + { "mcp98243", 0 }, +@@ -181,8 +197,8 @@ static const struct i2c_device_id jc42_i + { "stts424", 0 }, + { "stts2002", 0 }, + { "stts3000", 0 }, +- { "tse2002b3", 0 }, +- { "ts3000b3", 0 }, ++ { "tse2002", 0 }, ++ { "ts3000", 0 }, + { } + }; + MODULE_DEVICE_TABLE(i2c, jc42_id); diff --git a/queue-3.2/hwmon-jc42-add-support-for-st-microelectronics-stts2002-and-stts3000.patch b/queue-3.2/hwmon-jc42-add-support-for-st-microelectronics-stts2002-and-stts3000.patch new file mode 100644 index 00000000000..b446168a1fa --- /dev/null +++ b/queue-3.2/hwmon-jc42-add-support-for-st-microelectronics-stts2002-and-stts3000.patch @@ -0,0 +1,82 @@ +From 4de86126a712ba83fa038d277c8282f7ed466a4b Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Mon, 5 Mar 2012 08:32:00 -0500 +Subject: hwmon: (jc42) Add support for ST Microelectronics STTS2002 and STTS3000 + +From: Jean Delvare + +commit 4de86126a712ba83fa038d277c8282f7ed466a4b upstream. + +These are fully compatible with Jedec JC 42.4 as far as I can see. + +Signed-off-by: Jean Delvare +Cc: Guenter Roeck +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/hwmon/jc42 | 6 ++++++ + drivers/hwmon/Kconfig | 3 ++- + drivers/hwmon/jc42.c | 10 ++++++++++ + 3 files changed, 18 insertions(+), 1 deletion(-) + +--- a/Documentation/hwmon/jc42 ++++ b/Documentation/hwmon/jc42 +@@ -48,6 +48,12 @@ Supported chips: + Datasheets: + http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf + http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf ++ * ST Microelectronics STTS2002, STTS3000 ++ Prefix: 'stts2002', 'stts3000' ++ Addresses scanned: I2C 0x18 - 0x1f ++ Datasheets: ++ http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf ++ http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf + * JEDEC JC 42.4 compliant temperature sensor chips + Prefix: 'jc42' + Addresses scanned: I2C 0x18 - 0x1f +--- a/drivers/hwmon/Kconfig ++++ b/drivers/hwmon/Kconfig +@@ -498,7 +498,8 @@ config SENSORS_JC42 + temperature sensors, which are used on many DDR3 memory modules for + mobile devices and servers. Support will include, but not be limited + to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243, +- MCP9843, SE97, SE98, STTS424(E), TSE2002B3, and TS3000B3. ++ MCP9843, SE97, SE98, STTS424(E), STTS2002, STTS3000, TSE2002B3, and ++ TS3000B3. + + This driver can also be built as a module. If so, the module + will be called jc42. +--- a/drivers/hwmon/jc42.c ++++ b/drivers/hwmon/jc42.c +@@ -113,6 +113,12 @@ static const unsigned short normal_i2c[] + #define STTS424E_DEVID 0x0000 + #define STTS424E_DEVID_MASK 0xfffe + ++#define STTS2002_DEVID 0x0300 ++#define STTS2002_DEVID_MASK 0xffff ++ ++#define STTS3000_DEVID 0x0200 ++#define STTS3000_DEVID_MASK 0xffff ++ + static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 }; + + struct jc42_chips { +@@ -133,6 +139,8 @@ static struct jc42_chips jc42_chips[] = + { NXP_MANID, SE98_DEVID, SE98_DEVID_MASK }, + { STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK }, + { STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK }, ++ { STM_MANID, STTS2002_DEVID, STTS2002_DEVID_MASK }, ++ { STM_MANID, STTS3000_DEVID, STTS3000_DEVID_MASK }, + }; + + /* Each client has this additional data */ +@@ -171,6 +179,8 @@ static const struct i2c_device_id jc42_i + { "se97b", 0 }, + { "se98", 0 }, + { "stts424", 0 }, ++ { "stts2002", 0 }, ++ { "stts3000", 0 }, + { "tse2002b3", 0 }, + { "ts3000b3", 0 }, + { } diff --git a/queue-3.2/hwmon-pmbus_core-fix-maximum-number-of-pout-alarm-attributes.patch b/queue-3.2/hwmon-pmbus_core-fix-maximum-number-of-pout-alarm-attributes.patch new file mode 100644 index 00000000000..3eee8e069d2 --- /dev/null +++ b/queue-3.2/hwmon-pmbus_core-fix-maximum-number-of-pout-alarm-attributes.patch @@ -0,0 +1,31 @@ +From 7cb3c44fb1f7999e4c53b6a52de6bc25da6de079 Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Sun, 4 Mar 2012 08:10:57 -0800 +Subject: hwmon: (pmbus_core) Fix maximum number of POUT alarm attributes + +From: Guenter Roeck + +commit 7cb3c44fb1f7999e4c53b6a52de6bc25da6de079 upstream. + +There are up to three POUT alarm attributes, not two, since cap_alarm was added. + +Reported-by: Michele Petracca +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/pmbus/pmbus_core.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/hwmon/pmbus/pmbus_core.c ++++ b/drivers/hwmon/pmbus/pmbus_core.c +@@ -54,7 +54,8 @@ + lcrit_alarm, crit_alarm */ + #define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm, + crit_alarm */ +-#define PMBUS_POUT_BOOLEANS_PER_PAGE 2 /* alarm, crit_alarm */ ++#define PMBUS_POUT_BOOLEANS_PER_PAGE 3 /* cap_alarm, alarm, crit_alarm ++ */ + #define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */ + #define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm, + lcrit_alarm, crit_alarm */ diff --git a/queue-3.2/hwmon-zl6100-maintain-delay-parameter-in-driver-instance-data.patch b/queue-3.2/hwmon-zl6100-maintain-delay-parameter-in-driver-instance-data.patch new file mode 100644 index 00000000000..34198a1b2cf --- /dev/null +++ b/queue-3.2/hwmon-zl6100-maintain-delay-parameter-in-driver-instance-data.patch @@ -0,0 +1,59 @@ +From 7ad6307ad6968ce25cecf209d4822d4c722be030 Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Wed, 7 Mar 2012 03:58:55 -0800 +Subject: hwmon: (zl6100) Maintain delay parameter in driver instance data + +From: Guenter Roeck + +commit 7ad6307ad6968ce25cecf209d4822d4c722be030 upstream. + +A global delay parameter has the side effect of being overwritten with 0 if a +single ZL2004 or ZL6105 is instantiated. If other chips supported by the same +driver are in the system, this will result in access errors for those chips. + +To solve the problem, keep a per-instance copy of the delay parameter, and do +not change the original parameter. + +Signed-off-by: Guenter Roeck +Acked-by: Jean Delvare +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/pmbus/zl6100.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/drivers/hwmon/pmbus/zl6100.c ++++ b/drivers/hwmon/pmbus/zl6100.c +@@ -33,6 +33,7 @@ enum chips { zl2004, zl2006, zl2008, zl2 + struct zl6100_data { + int id; + ktime_t access; /* chip access time */ ++ int delay; /* Delay between chip accesses in uS */ + struct pmbus_driver_info info; + }; + +@@ -49,10 +50,10 @@ MODULE_PARM_DESC(delay, "Delay between c + /* Some chips need a delay between accesses */ + static inline void zl6100_wait(const struct zl6100_data *data) + { +- if (delay) { ++ if (data->delay) { + s64 delta = ktime_us_delta(ktime_get(), data->access); +- if (delta < delay) +- udelay(delay - delta); ++ if (delta < data->delay) ++ udelay(data->delay - delta); + } + } + +@@ -184,8 +185,9 @@ static int zl6100_probe(struct i2c_clien + * can be cleared later for additional chips if tests show that it + * is not needed (in other words, better be safe than sorry). + */ ++ data->delay = delay; + if (data->id == zl2004 || data->id == zl6105) +- delay = 0; ++ data->delay = 0; + + /* + * Since there was a direct I2C device access above, wait before diff --git a/queue-3.2/series b/queue-3.2/series index 30d5468cbac..6532cc3df86 100644 --- a/queue-3.2/series +++ b/queue-3.2/series @@ -73,3 +73,9 @@ media-staging-lirc_serial-free-resources-on-failure-paths-of-lirc_serial_probe.p media-staging-lirc_serial-fix-deadlock-on-resume-failure.patch media-staging-lirc_serial-do-not-assume-error-codes-returned-by-request_irq.patch input-alps-fix-touchpad-detection-when-buttons-are-pressed.patch +hwmon-pmbus_core-fix-maximum-number-of-pout-alarm-attributes.patch +hwmon-jc42-add-support-for-st-microelectronics-stts2002-and-stts3000.patch +hwmon-jc42-add-support-for-at30ts00-ts3000gb2-tse2002gb2-and-mcp9804.patch +hwmon-zl6100-maintain-delay-parameter-in-driver-instance-data.patch +carl9170-fix-memory-accounting-when-sta-is-in-power-save-mode.patch +carl9170-fix-frame-delivery-if-sta-is-in-powersave-mode.patch