linux/drivers/net/wireless/iwlwifi
Wey-Yi Guy 137ce797e2 iwlwifi: do not re-configure HT40 after associated
The ht40 setting should not change after association unless channel switch

This fix a problem we are seeing which cause uCode assert because driver
sending invalid information and make uCode confuse

Here is the firmware assert message:
kernel: iwlagn 0000:03:00.0: Microcode SW error detected.  Restarting 0x82000000.
kernel: iwlagn 0000:03:00.0: Loaded firmware version: 17.168.5.3 build 42301
kernel: iwlagn 0000:03:00.0: Start IWL Error Log Dump:
kernel: iwlagn 0000:03:00.0: Status: 0x000512E4, count: 6
kernel: iwlagn 0000:03:00.0: 0x00002078 | ADVANCED_SYSASSERT
kernel: iwlagn 0000:03:00.0: 0x00009514 | uPc
kernel: iwlagn 0000:03:00.0: 0x00009496 | branchlink1
kernel: iwlagn 0000:03:00.0: 0x00009496 | branchlink2
kernel: iwlagn 0000:03:00.0: 0x0000D1F2 | interruptlink1
kernel: iwlagn 0000:03:00.0: 0x00000000 | interruptlink2
kernel: iwlagn 0000:03:00.0: 0x01008035 | data1
kernel: iwlagn 0000:03:00.0: 0x0000C90F | data2
kernel: iwlagn 0000:03:00.0: 0x000005A7 | line
kernel: iwlagn 0000:03:00.0: 0x5080B520 | beacon time
kernel: iwlagn 0000:03:00.0: 0xCC515AE0 | tsf low
kernel: iwlagn 0000:03:00.0: 0x00000003 | tsf hi
kernel: iwlagn 0000:03:00.0: 0x00000000 | time gp1
kernel: iwlagn 0000:03:00.0: 0x29703BF0 | time gp2
kernel: iwlagn 0000:03:00.0: 0x00000000 | time gp3
kernel: iwlagn 0000:03:00.0: 0x000111A8 | uCode version
kernel: iwlagn 0000:03:00.0: 0x000000B0 | hw version
kernel: iwlagn 0000:03:00.0: 0x00480303 | board version
kernel: iwlagn 0000:03:00.0: 0x09E8004E | hcmd
kernel: iwlagn 0000:03:00.0: CSR values:
kernel: iwlagn 0000:03:00.0: (2nd byte of CSR_INT_COALESCING is CSR_INT_PERIODIC_REG)
kernel: iwlagn 0000:03:00.0:        CSR_HW_IF_CONFIG_REG: 0X00480303
kernel: iwlagn 0000:03:00.0:          CSR_INT_COALESCING: 0X0000ff40
kernel: iwlagn 0000:03:00.0:                     CSR_INT: 0X00000000
kernel: iwlagn 0000:03:00.0:                CSR_INT_MASK: 0X00000000
kernel: iwlagn 0000:03:00.0:           CSR_FH_INT_STATUS: 0X00000000
kernel: iwlagn 0000:03:00.0:                 CSR_GPIO_IN: 0X00000030
kernel: iwlagn 0000:03:00.0:                   CSR_RESET: 0X00000000
kernel: iwlagn 0000:03:00.0:                CSR_GP_CNTRL: 0X080403c5
kernel: iwlagn 0000:03:00.0:                  CSR_HW_REV: 0X000000b0
kernel: iwlagn 0000:03:00.0:              CSR_EEPROM_REG: 0X07d60ffd
kernel: iwlagn 0000:03:00.0:               CSR_EEPROM_GP: 0X90000001
kernel: iwlagn 0000:03:00.0:              CSR_OTP_GP_REG: 0X00030001
kernel: iwlagn 0000:03:00.0:                 CSR_GIO_REG: 0X00080044
kernel: iwlagn 0000:03:00.0:            CSR_GP_UCODE_REG: 0X000093bb
kernel: iwlagn 0000:03:00.0:           CSR_GP_DRIVER_REG: 0X00000000
kernel: iwlagn 0000:03:00.0:           CSR_UCODE_DRV_GP1: 0X00000000
kernel: iwlagn 0000:03:00.0:           CSR_UCODE_DRV_GP2: 0X00000000
kernel: iwlagn 0000:03:00.0:                 CSR_LED_REG: 0X00000078
kernel: iwlagn 0000:03:00.0:        CSR_DRAM_INT_TBL_REG: 0X88214dd2
kernel: iwlagn 0000:03:00.0:        CSR_GIO_CHICKEN_BITS: 0X27800200
kernel: iwlagn 0000:03:00.0:             CSR_ANA_PLL_CFG: 0X00000000
kernel: iwlagn 0000:03:00.0:           CSR_HW_REV_WA_REG: 0X0001001a
kernel: iwlagn 0000:03:00.0:        CSR_DBG_HPET_MEM_REG: 0Xffff0010
kernel: iwlagn 0000:03:00.0: FH register values:
kernel: iwlagn 0000:03:00.0:         FH_RSCSR_CHNL0_STTS_WPTR_REG: 0X21316d00
kernel: iwlagn 0000:03:00.0:        FH_RSCSR_CHNL0_RBDCB_BASE_REG: 0X021479c0
kernel: iwlagn 0000:03:00.0:                  FH_RSCSR_CHNL0_WPTR: 0X00000060
kernel: iwlagn 0000:03:00.0:         FH_MEM_RCSR_CHNL0_CONFIG_REG: 0X80819104
kernel: iwlagn 0000:03:00.0:          FH_MEM_RSSR_SHARED_CTRL_REG: 0X000000fc
kernel: iwlagn 0000:03:00.0:            FH_MEM_RSSR_RX_STATUS_REG: 0X07030000
kernel: iwlagn 0000:03:00.0:    FH_MEM_RSSR_RX_ENABLE_ERR_IRQ2DRV: 0X00000000
kernel: iwlagn 0000:03:00.0:                FH_TSSR_TX_STATUS_REG: 0X07ff0001
kernel: iwlagn 0000:03:00.0:                 FH_TSSR_TX_ERROR_REG: 0X00000000
kernel: iwlagn 0000:03:00.0: Start IWL Event Log Dump: display last 20 entries
kernel: ------------[ cut here ]------------
WARNING: at net/mac80211/util.c:1208 ieee80211_reconfig+0x1f1/0x407()
kernel: Hardware name: 4290W4H
kernel: Pid: 1896, comm: kworker/0:0 Not tainted 3.1.0 #2
kernel: Call Trace:
kernel:  [<ffffffff81036558>] ? warn_slowpath_common+0x73/0x87
kernel:  [<ffffffff813b8966>] ? ieee80211_reconfig+0x1f1/0x407
kernel:  [<ffffffff8139e8dc>] ? ieee80211_recalc_smps_work+0x32/0x32
kernel:  [<ffffffff8139e95a>] ? ieee80211_restart_work+0x7e/0x87
kernel:  [<ffffffff810472fa>] ? process_one_work+0x1c8/0x2e3
kernel:  [<ffffffff810480c9>] ? worker_thread+0x17a/0x23a
kernel:  [<ffffffff81047f4f>] ? manage_workers.clone.18+0x15b/0x15b
kernel:  [<ffffffff81047f4f>] ? manage_workers.clone.18+0x15b/0x15b
kernel:  [<ffffffff8104ba97>] ? kthread+0x7a/0x82
kernel:  [<ffffffff813d21b4>] ? kernel_thread_helper+0x4/0x10
kernel:  [<ffffffff8104ba1d>] ? kthread_flush_work_fn+0x11/0x11
kernel:  [<ffffffff813d21b0>] ? gs_change+0xb/0xb

Cc: <stable@kernel.org> 3.1+
Reported-by: Udo Steinberg <udo@hypervisor.org>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2011-12-02 08:20:39 -08:00
..
iwl-1000.c iwlagn: remove calibration knowledge 2011-11-25 10:49:04 -08:00
iwl-2000.c iwlagn: remove calibration knowledge 2011-11-25 10:49:04 -08:00
iwl-5000.c iwlagn: remove calibration knowledge 2011-11-25 10:49:04 -08:00
iwl-6000.c iwlagn: allow up to uCode API 6 for 6000 devices 2011-11-25 10:49:19 -08:00
iwl-agn-calib.c iwlagn: dynamically allocate & reflect calibration data 2011-11-25 10:49:10 -08:00
iwl-agn-calib.h iwlagn: dynamically allocate & reflect calibration data 2011-11-25 10:49:10 -08:00
iwl-agn-hw.h iwlagn: remove 6000 hw header 2011-10-14 14:48:13 -04:00
iwl-agn-lib.c iwlwifi: Move the core suspend function to iwl-agn-lib 2011-11-11 12:32:54 -05:00
iwl-agn-rs.c iwlwifi: fix rate-scaling algorithm for BT combo devices 2011-11-11 12:32:56 -05:00
iwl-agn-rs.h iwlagn: add missing include to iwl-agn-rs.h 2011-10-14 14:48:14 -04:00
iwl-agn-rx.c iwlwifi: show command string for REPLY_D3_CONFIG 2011-11-25 10:49:29 -08:00
iwl-agn-rxon.c iwlwifi: do not re-configure HT40 after associated 2011-12-02 08:20:39 -08:00
iwl-agn-sta.c iwlwifi: move station functions to mac80211 2011-11-11 12:32:54 -05:00
iwl-agn-tt.c iwlagn: remove Kelvin support 2011-09-27 14:34:08 -04:00
iwl-agn-tt.h iwlagn: clean up of transport layer 2011-09-14 13:56:37 -04:00
iwl-agn-tx.c iwlwifi: fix endianity issues in debug prints 2011-11-21 16:20:47 -05:00
iwl-agn-ucode.c iwlagn: dynamically allocate & reflect calibration data 2011-11-25 10:49:10 -08:00
iwl-agn.c iwlwifi: show the configuration option 2011-11-25 10:57:35 -08:00
iwl-agn.h iwlwifi: do not re-configure HT40 after associated 2011-12-02 08:20:39 -08:00
iwl-bus.h iwlagn: remove drvdata support from bus layer 2011-09-19 16:10:10 -04:00
iwl-cfg.h iwlwifi: remove un-supported SKUs 2011-11-11 12:32:53 -05:00
iwl-commands.h iwlagn: update wowlan API 2011-11-08 15:53:53 -05:00
iwl-core.c iwlwifi: set "echo" host command length 2011-11-11 12:32:55 -05:00
iwl-core.h iwlagn: remove calibration knowledge 2011-11-25 10:49:04 -08:00
iwl-csr.h iwlwifi: HW rev for 105 and 135 series 2011-11-08 15:53:54 -05:00
iwl-debug.h iwl-debug: Shrink object by using dev_err and deduplicating formats 2011-11-21 16:20:48 -05:00
iwl-debugfs.c iwlagn: move nvm_device_type from iwl_priv to iwl_trans 2011-11-11 12:32:56 -05:00
iwl-dev.h iwlagn: dynamically allocate & reflect calibration data 2011-11-25 10:49:10 -08:00
iwl-devtrace.c iwlagn: remove unnecessary type for tracing operations 2011-11-08 15:53:54 -05:00
iwl-devtrace.h iwlagn: remove unnecessary type for tracing operations 2011-11-08 15:53:54 -05:00
iwl-eeprom.c iwlagn: move nvm_device_type from iwl_priv to iwl_trans 2011-11-11 12:32:56 -05:00
iwl-eeprom.h iwlagn: use iwl_eeprom_calib_hdr structure 2011-09-19 16:10:10 -04:00
iwl-fh.h iwlagn: add missing includes 2011-08-29 15:30:28 -04:00
iwl-io.c iwlwifi: remove redundancy 2011-11-21 16:20:48 -05:00
iwl-io.h iwlagn: all function iwl-io.c receive iwl_bus 2011-08-29 15:30:29 -04:00
iwl-led.c iwlagn: eliminate bus pointer from iwl_priv structure 2011-10-14 14:48:10 -04:00
iwl-led.h iwlagn: use direct call for led functions 2011-04-18 08:47:43 -07:00
iwl-mac80211.c iwlwifi: do not re-configure HT40 after associated 2011-12-02 08:20:39 -08:00
iwl-pci.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-11-22 14:05:46 -05:00
iwl-power.c iwlagn: eliminate bus pointer from iwl_priv structure 2011-10-14 14:48:10 -04:00
iwl-power.h iwlagn: move PCI power related functions to the PCI layer 2011-06-18 08:17:29 -07:00
iwl-prph.h iwlagn: cmd_queue moves to iwl_shared 2011-08-29 15:25:31 -04:00
iwl-scan.c iwlagn: don't always split remain-on-channel 2011-11-11 12:32:55 -05:00
iwl-shared.h iwlagn: remove calibration knowledge 2011-11-25 10:49:04 -08:00
iwl-sv-open.c iwlwifi: add tm commands for indirect register access 2011-11-25 10:48:54 -08:00
iwl-testmode.h iwlwifi: add tm commands for indirect register access 2011-11-25 10:48:54 -08:00
iwl-trans-pcie-int.h iwlwifi: improve the prints in the reclaim path 2011-11-21 16:20:47 -05:00
iwl-trans-pcie-rx.c iwlagn: move ucode_write_complete from priv to trans structure 2011-11-11 12:32:53 -05:00
iwl-trans-pcie-tx.c iwlwifi: tid_data is taken twice in iwl_trans_pcie_tx_agg_alloc 2011-11-21 16:20:48 -05:00
iwl-trans-pcie.c iwlwifi: help to debug AGG SM inconsistencies 2011-11-25 10:58:52 -08:00
iwl-trans.c iwlagn: generically provide iwl_trans_send_cmd_pdu 2011-09-19 16:08:07 -04:00
iwl-trans.h iwlagn: move nvm_device_type from iwl_priv to iwl_trans 2011-11-11 12:32:56 -05:00
Kconfig iwlwifi: update comments on how to enable debug flag 2011-10-14 14:48:12 -04:00
Makefile iwlwifi: move all mac80211 related functions to one place 2011-11-11 12:32:53 -05:00