1. 06 6月, 2012 5 次提交
  2. 25 5月, 2012 1 次提交
    • 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
  3. 24 4月, 2012 2 次提交
  4. 18 4月, 2012 3 次提交
  5. 17 4月, 2012 3 次提交
  6. 13 4月, 2012 3 次提交
  7. 10 4月, 2012 2 次提交
  8. 13 3月, 2012 1 次提交
  9. 10 3月, 2012 1 次提交
  10. 09 3月, 2012 5 次提交
  11. 08 3月, 2012 2 次提交
  12. 07 3月, 2012 3 次提交
  13. 28 2月, 2012 1 次提交
  14. 18 2月, 2012 1 次提交
  15. 03 2月, 2012 4 次提交
  16. 25 1月, 2012 1 次提交
  17. 07 1月, 2012 1 次提交
  18. 22 12月, 2011 1 次提交
    • J
      iwlagn: fix (remove) use of PAGE_SIZE · 10667136
      Johannes Berg 提交于
      The ICT code erroneously uses PAGE_SIZE. The bug
      is that PAGE_SIZE isn't necessarily 4096, so on
      such platforms this code will not work correctly
      as we'll try to attempt to read an index in the
      table that the device never wrote, it always has
      4096-byte pages.
      
      Additionally, the manual alignment code here is
      unnecessary -- Documentation/DMA-API-HOWTO.txt
      states:
        The cpu return address and the DMA bus master address are both
        guaranteed to be aligned to the smallest PAGE_SIZE order which
        is greater than or equal to the requested size.  This invariant
        exists (for example) to guarantee that if you allocate a chunk
        which is smaller than or equal to 64 kilobytes, the extent of the
        buffer you receive will not cross a 64K boundary.
      
      Just use appropriate new constants and get rid of
      the alignment code.
      
      Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      10667136