1. 25 May, 2012 3 commits
    • Meenakshi Venkataraman's avatar
      iwlwifi: do not use shadow registers by default · 66a77072
      Meenakshi Venkataraman authored
      Shadow registers in the device are meant to
      allow the driver to update certain device
      registers without needing to wake up all
      components of the device. However, using
      this feature in the device causes
      communication between the driver and the
      device to become unreliable, resulting in
      host command timeouts.
      
      Disable this feature by default till a fix is
      available for the bug.
      
      Cc: stable@vger.kernel.org #2.6.38+
      Signed-off-by: default avatarMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      66a77072
    • Emmanuel Grumbach's avatar
      iwlwifi: fix the Transmit Frame Descriptor rings · ebed633c
      Emmanuel Grumbach authored
      The logic that allows to have a short TFD queue was completely wrong.
      We do maintain 256 Transmit Frame Descriptors, but they point to
      recycled buffers. We used to attach and de-attach different TFDs for
      the same buffer and it worked since they pointed to the same buffer.
      
      Also zero the number of BDs after unmapping a TFD. This seems not
      necessary since we don't reclaim the same TFD twice, but I like
      housekeeping.
      
      This patch solves this warning:
      
      [ 6427.079855] WARNING: at lib/dma-debug.c:866 check_unmap+0x727/0x7a0()
      [ 6427.079859] Hardware name: Latitude E6410
      [ 6427.079865] iwlwifi 0000:02:00.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x00000000296d393c] [size=8 bytes]
      [ 6427.079870] Modules linked in: ...
      [ 6427.079950] Pid: 6613, comm: ifconfig Tainted: G           O 3.3.3 #5
      [ 6427.079954] Call Trace:
      [ 6427.079963]  [<c10337a2>] warn_slowpath_common+0x72/0xa0
      [ 6427.079982]  [<c1033873>] warn_slowpath_fmt+0x33/0x40
      [ 6427.079988]  [<c12dcb77>] check_unmap+0x727/0x7a0
      [ 6427.079995]  [<c12dcdaa>] debug_dma_unmap_page+0x5a/0x80
      [ 6427.080024]  [<fe2312ac>] iwlagn_unmap_tfd+0x12c/0x180 [iwlwifi]
      [ 6427.080048]  [<fe231349>] iwlagn_txq_free_tfd+0x49/0xb0 [iwlwifi]
      [ 6427.080071]  [<fe228e37>] iwl_tx_queue_unmap+0x67/0x90 [iwlwifi]
      [ 6427.080095]  [<fe22d221>] iwl_trans_pcie_stop_device+0x341/0x7b0 [iwlwifi]
      [ 6427.080113]  [<fe204b0e>] iwl_down+0x17e/0x260 [iwlwifi]
      [ 6427.080132]  [<fe20efec>] iwlagn_mac_stop+0x6c/0xf0 [iwlwifi]
      [ 6427.080168]  [<fd8480ce>] ieee80211_stop_device+0x5e/0x190 [mac80211]
      [ 6427.080198]  [<fd833208>] ieee80211_do_stop+0x288/0x620 [mac80211]
      [ 6427.080243]  [<fd8335b7>] ieee80211_stop+0x17/0x20 [mac80211]
      [ 6427.080250]  [<c148dac1>] __dev_close_many+0x81/0xd0
      [ 6427.080270]  [<c148db3d>] __dev_close+0x2d/0x50
      [ 6427.080276]  [<c148d152>] __dev_change_flags+0x82/0x150
      [ 6427.080282]  [<c148e3e3>] dev_change_flags+0x23/0x60
      [ 6427.080289]  [<c14f6320>] devinet_ioctl+0x6a0/0x770
      [ 6427.080296]  [<c14f8705>] inet_ioctl+0x95/0xb0
      [ 6427.080304]  [<c147a0f0>] sock_ioctl+0x70/0x270
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarAntonio Quartulli <ordex@autistici.org>
      Tested-by: default avatarAntonio Quartulli <ordex@autistici.org>
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Reviewed-by: default avatarWey-Yi W Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      ebed633c
    • Meenakshi Venkataraman's avatar
      iwlwifi: update BT traffic load states correctly · 882dde8e
      Meenakshi Venkataraman authored
      When BT traffic load changes from its
      previous state, a new LQ command needs to be
      sent down to the firmware. This needs to
      be done only once per change. The state
      variable that keeps track of this change is
      last_bt_traffic_load. However, it was not
      being updated when the change had been
      handled. Not updating this variable was
      causing a flood of advanced BT config
      commands to be sent to the firmware. Fix
      this.
      
      Cc: stable@vger.kernel.org #2.6.38+
      Signed-off-by: default avatarMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>
      Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      882dde8e
  2. 22 May, 2012 1 commit
  3. 21 May, 2012 36 commits