1. 25 5月, 2012 5 次提交
    • M
      iwlwifi: do not send lq cmd when station add fails · f4c37176
      Meenakshi Venkataraman 提交于
      When adding a station fails in
      iwl_restore_stations, the driver treats it
      like a successful station add and sends a
      link quality command, when it it shouldn't.
      
      This patch fixes one of the potential
      sources for kernel warnings like this one:
      
      WARNING: at drivers/net/wireless/iwlwifi/iwl-agn-sta.c:905 iwl_send_lq_cmd+0x130/0x217 [iwlwifi]()
      Hardware name: 3323A2G
      Modules linked in: ...
      Pid: 17359, comm: kworker/u:2 Tainted: G           O 3.3.0-wl+ #1
      Call Trace:
       [<ffffffff81039620>] warn_slowpath_common+0x7e/0x96
       [<ffffffff8103964d>] warn_slowpath_null+0x15/0x17
       [<ffffffffa02a9f0b>] iwl_send_lq_cmd+0x130/0x217 [iwlwifi]
       [<ffffffffa02aa1fb>] iwl_restore_stations+0x209/0x289 [iwlwifi]
       [<ffffffffa02b07c2>] iwlagn_commit_rxon+0x602/0x7bd [iwlwifi]
       [<ffffffffa02b111f>] iwlagn_bss_info_changed+0x247/0x31a [iwlwifi]
       [<ffffffffa0861437>] ieee80211_bss_info_change_notify+0x1a5/0x1ba [mac80211]
       [<ffffffffa088afad>] ieee80211_destroy_auth_data+0x4b/0x70 [mac80211]
       [<ffffffffa088df26>] ieee80211_sta_work+0xb5/0x954 [mac80211]
      Signed-off-by: NMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>
      Reviewed-by: NWey-Yi W Guy <wey-yi.w.guy@intel.com>
      Reviewed-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f4c37176
    • J
      iwlwifi: remove ucode16 option · a7b2ad55
      Johannes Berg 提交于
      The ucode16 option is still very much work in
      progress, so there's no need to ask any users
      about it. Remove the option and code for now,
      we'll put it back when it's actually working.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a7b2ad55
    • M
      iwlwifi: do not use shadow registers by default · 66a77072
      Meenakshi Venkataraman 提交于
      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: NMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      66a77072
    • E
      iwlwifi: fix the Transmit Frame Descriptor rings · ebed633c
      Emmanuel Grumbach 提交于
      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: NAntonio Quartulli <ordex@autistici.org>
      Tested-by: NAntonio Quartulli <ordex@autistici.org>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Reviewed-by: NWey-Yi W Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ebed633c
    • M
      iwlwifi: update BT traffic load states correctly · 882dde8e
      Meenakshi Venkataraman 提交于
      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: NMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      882dde8e
  2. 19 5月, 2012 1 次提交
    • E
      iwlwifi: dont pull too much payload in skb head · 56138f50
      Eric Dumazet 提交于
      As iwlwifi use fat skbs, it should not pull too much data in skb->head,
      and particularly no tcp data payload, or splice() is slower, and TCP
      coalescing is disabled. Copying payload to userland also involves at
      least two copies (part from header, part from fragment)
      
      Each layer will pull its header from the fragment as needed.
      
      (on 64bit arches, skb_tailroom(skb) at this point is 192 bytes)
      
      With this patch applied, I have a major reduction of collapsed/pruned
      TCP packets, a nice increase of TCPRcvCoalesce counter, and overall
      better Internet User experience.
      
      Small packets are still using a fragless skb, so that page can be reused
      by the driver.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Johannes Berg <johannes.berg@intel.com>
      Cc: Wey-Yi Guy <wey-yi.w.guy@intel.com>
      Reviewed-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      56138f50
  3. 17 5月, 2012 34 次提交