1. 23 5月, 2013 7 次提交
  2. 21 5月, 2013 5 次提交
    • D
      Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless · 3ccfc1b1
      David S. Miller 提交于
      John W. Linville says:
      
      ====================
      This pull request is intended for the 3.10 series.  It contains a
      variety of fixes for problems discovered during the merge window and
      after 3.10-rc1.
      
      For the mac80211 bits, Johannes says the following:
      
      "This is what I have:
       * a patch from Felix to fix RCU usage in his rate table code
       * a patch from Ilan to add the wdev id to some notifications so they can
         actually be used by userspace
       * Sasha Levin found an issue in how hwsim handles devices
       * a fix for a bug in the wiphy_register() error path that's been there forever
       * three fixes for WoWLAN
       * AP mode frame matching was erroneously giving frames to all virtual AP
         interfaces (reported by Jouni)
       * a fix for HT handling in my CSA changes, found by Sujith
       * a fix for some locking simplifications gone wrong
       * Ben Greear found more cfg80211/mac80211 state confusion
       * and a fix for another bug found by Jouni: local state changes need to be
         reported by mac80211 to cfg80211 so it disconnects properly."
      
      And for the iwlwifi bits, he says:
      
      "I have fixes for a firmware crash during resume, multicast RX,
      aggregation and a workaround for a firmware scanning bug."
      
      Along with those...
      
      Albert Pool adds a USB ID to the rtl8192cu driver.
      
      Arend van Spriel restores a driver option support flag that had been
      removed from 3.9 due to a bug in that version of the driver.
      
      Felix Fietkau fixes a trio of ath9k issues with a series of small
      patches.
      
      Geert Uytterhoeven provides a Kconfig fix for ath9k (which you also
      merged, so it isn't in the diff here).
      
      Larry Finger gives us a fix for a build warning on big-endian systems
      for rtlwifi.
      
      Rafał Miłecki adds some core IDs to the bcma driver.
      
      Sujith Manoharan fixes a module unloading crash in ath9k, and corrects
      some calibration settings for AR9485.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3ccfc1b1
    • S
      8139cp: reset BQL when ring tx ring cleared · 98962baa
      stephen hemminger 提交于
      This patch cures transmit timeout's with DHCP observed
      while running under KVM. When the transmit ring is cleaned out,
      the Byte Queue Limit values need to be reset.
      Signed-off-by: NStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      98962baa
    • P
      drivers: net: usb: rtl8150: concurrent URB bugfix · 4d12997a
      Petko Manolov 提交于
      This patch fixes a potential race with concurrently running asynchronous
      write requests.  The values for device's RX control register are now
      stored in dynamically allocated buffers so each URB submission has it's
      own copy.  Doing it the old way is data clobbering prone.
      
      This patch is against latest 'net' tree.
      Signed-off-by: NPetko Manolov <petkan@nucleusys.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4d12997a
    • D
      isdn/kcapi: fix a small underflow · 25dff94f
      Dan Carpenter 提交于
      In get_capi_ctr_by_nr() and get_capi_appl_by_nr() the parameter comes
      from skb->data.  The current code can underflow to one space before the
      start of the array.
      
      The sanity check isn't needed in __get_capi_appl_by_nr() but I changed
      it to match the others.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      25dff94f
    • J
      Merge branch 'master' of... · ba7c96be
      John W. Linville 提交于
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
      ba7c96be
  3. 20 5月, 2013 9 次提交
  4. 19 5月, 2013 2 次提交
  5. 18 5月, 2013 13 次提交
    • W
      gianfar: add missing iounmap() on error in gianfar_ptp_probe() · e5f5e380
      Wei Yongjun 提交于
      Add the missing iounmap() before return from gianfar_ptp_probe()
      in the error handling case.
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e5f5e380
    • F
      ath9k: fix draining aggregation tid buffers · 6bb4880d
      Felix Fietkau 提交于
      After a tx attempt, an A-MPDU subframe can still have fi->retries at 0
      (if the retry count wasn't incremented due to powersave).
      In that case it is still tracked as part of the block ack window, so
      when draining the tid queue, its sequence number needs to be cleared
      from the pending frame bitmap.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6bb4880d
    • F
      ath9k: fix rate handling/reporting · 0c585dda
      Felix Fietkau 提交于
      This patch fixes some issues introduced in the rate control API rework.
      When not running aggregation, copy bf->rates into info->control.rates
      before applying the rate control status to it.
      In ath_lookup_rate, the rates need to be pulled from bf->rates, not the
      tx info.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0c585dda
    • F
      ath9k: fix aggregation stop/flush handling · 16e23428
      Felix Fietkau 提交于
      When aggregation stop is requested, don't run the mac80211 aggregation
      stop callback yet, while the session is still blocked.
      Also, when aggregation flush is requested, don't run the callback at all.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      16e23428
    • S
      ath9k_hw: Enable manual peak calibration for AR9485 · e99c60b5
      Sujith Manoharan 提交于
      Manual peak calibration is currently enabled only for
      AR9462 and AR9565. This is also required for AR9485.
      The initvals are also modified to disable HW peak calibration.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e99c60b5
    • A
      rtlwifi: rtl8192cu: Add new USB ID · 707a6152
      Albert Pool 提交于
      This adds the USB ID of the On Networks N300MA, clone of Netgear WNA3100M.
      Signed-off-by: NAlbert Pool <albertpool@solcon.nl>
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Reported-by: NAna Rey <Anazul77@hotmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      707a6152
    • A
      brcmfmac: announce P2P_DEVICE support in wiphy structure · 9af221b3
      Arend van Spriel 提交于
      P2P_DEVICE support was removed from brcmfmac for v3.9 kernel with
      the commit below:
      
      commit 1527c343
      Author: Arend van Spriel <arend@broadcom.com>
      Date:   Thu Apr 4 12:10:11 2013 +0200
      
          brcmfmac: remove advertising P2P device support
      
      However, it got merged into wireless-next. But for 3.10 brcmfmac does
      support P2P device. Putting it back with this commit.
      Reviewed-by: NHante Meuleman <meuleman@broadcom.com>
      Signed-off-by: NArend van Spriel <arend@broadcom.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9af221b3
    • L
      rtlwifi: rtl8188ee: Fix warning when building on big-endian systems · 58dd3ff8
      Larry Finger 提交于
      In http://lkml.indiana.edu/hypermail/linux/kernel/1305.1/index.html,
      Geert Uytterhoeven reports a new warning when building 3.10-rc1 in
      this driver. This is caused by using a "#if" test to see if __LITTLE_ENDIAN
      is set, which fails for all big-endian systems. Change to "ifdef".
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      58dd3ff8
    • S
      ath9k: Fix crash on module unload · af690092
      Sujith Manoharan 提交于
      Make sure that any open relayfs files are closed before
      unregistering with mac80211, otherwise this crash is seen:
      
      [ 1331.097846] BUG: unable to handle kernel paging request at 6b6b6b8b
      [ 1331.098170] IP: [<c063d0d6>] debugfs_remove+0x26/0x80
      [ 1331.098170] *pdpt = 000000002f9aa001 *pde = 0000000000000000
      [ 1331.098170] Oops: 0000 [#1] PREEMPT SMP
      [ 1331.098170] Modules linked in: iptable_raw xt_CT nf_conntrack_ipv4 nf_defrag]
      [ 1331.098170] Pid: 4794, comm: rmmod Tainted: G        WC   3.9.1+ #5 To Be Fi.
      [ 1331.098170] EIP: 0060:[<c063d0d6>] EFLAGS: 00010202 CPU: 0
      [ 1331.098170] EIP is at debugfs_remove+0x26/0x80
      [ 1331.098170] EAX: f2f3acd0 EBX: f2f3acd0 ECX: 00000006 EDX: f8622348
      [ 1331.098170] ESI: 6b6b6b6b EDI: 00000001 EBP: ee251e14 ESP: ee251e0c
      [ 1331.098170]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      [ 1331.098170] CR0: 8005003b CR2: 6b6b6b8b CR3: 2e7b7000 CR4: 000007e0
      [ 1331.098170] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
      [ 1331.098170] DR6: ffff0ff0 DR7: 00000400
      [ 1331.098170] Process rmmod (pid: 4794, ti=ee250000 task=efaa2560 task.ti=ee25)
      [ 1331.098170] Stack:
      [ 1331.098170]  f241e170 0000000a ee251e1c f861394d ee251e28 c04e3088 f241e170 4
      [ 1331.098170]  c04e30fe f45482b0 ee251e54 c04e3187 f25e86b0 ee251e54 f8618748 0
      [ 1331.098170]  0000000a 00000001 ee251e68 f860065b f2509e20 f25085a0 f5b6e8a4 8
      [ 1331.098170] Call Trace:
      [ 1331.098170]  [<f861394d>] remove_buf_file_handler+0xd/0x20 [ath9k]
      [ 1331.098170]  [<c04e3088>] relay_remove_buf+0x18/0x30
      [ 1331.098170]  [<c04e30fe>] relay_close_buf+0x2e/0x40
      [ 1331.098170]  [<c04e3187>] relay_close+0x77/0xf0
      [ 1331.098170]  [<f8618748>] ? dpd_exit+0x38/0x40 [ath9k]
      [ 1331.098170]  [<f860065b>] ath9k_deinit_softc+0x8b/0xa0 [ath9k]
      [ 1331.098170]  [<f86006b8>] ath9k_deinit_device+0x48/0x60 [ath9k]
      [ 1331.098170]  [<f86107f1>] ath_pci_remove+0x31/0x50 [ath9k]
      [ 1331.098170]  [<c06dbff8>] pci_device_remove+0x38/0xc0
      [ 1331.098170]  [<c079daa4>] __device_release_driver+0x64/0xc0
      [ 1331.098170]  [<c079db97>] driver_detach+0x97/0xa0
      [ 1331.098170]  [<c079cacc>] bus_remove_driver+0x6c/0xe0
      [ 1331.098170]  [<c079c197>] ? bus_put+0x17/0x20
      [ 1331.098170]  [<c079cae3>] ? bus_remove_driver+0x83/0xe0
      [ 1331.098170]  [<c079e709>] driver_unregister+0x49/0x80
      [ 1331.098170]  [<c06dc138>] pci_unregister_driver+0x18/0x80
      [ 1331.098170]  [<f8610602>] ath_pci_exit+0x12/0x20 [ath9k]
      [ 1331.098170]  [<f8619ce0>] ath9k_exit+0x17/0x337 [ath9k]
      [ 1331.098170]  [<c09e537d>] ? mutex_unlock+0xd/0x10
      [ 1331.098170]  [<c04bd36c>] sys_delete_module+0x17c/0x250
      [ 1331.098170]  [<c0540dc4>] ? do_munmap+0x244/0x2d0
      [ 1331.098170]  [<c0540e96>] ? vm_munmap+0x46/0x60
      [ 1331.098170]  [<c09e8dc4>] ? restore_all+0xf/0xf
      [ 1331.098170]  [<c09ebf50>] ? __do_page_fault+0x4c0/0x4c0
      [ 1331.098170]  [<c04b18e4>] ? trace_hardirqs_on_caller+0xf4/0x180
      [ 1331.098170]  [<c09ef28d>] sysenter_do_call+0x12/0x38
      [ 1331.098170] Code: 90 8d 74 26 00 55 89 e5 83 ec 08 89 1c 24 89 74 24 04 3e 82
      [ 1331.098170] EIP: [<c063d0d6>] debugfs_remove+0x26/0x80 SS:ESP 0068:ee251e0c
      [ 1331.098170] CR2: 000000006b6b6b8b
      [ 1331.727971] ---[ end trace b5bb9f2066cef7f9 ]---
      
      Cc: <stable@vger.kernel.org>
      Acked-by: NSimon Wunderlich <siwu@hrz.tu-chemnitz.de>
      Tested-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      af690092
    • G
      net/wireless: ATH9K should depend on HAS_DMA · a01ae5b3
      Geert Uytterhoeven 提交于
      If NO_DMA=y:
      
      drivers/built-in.o: In function `ath9k_beacon_generate':
      drivers/net/wireless/ath/ath9k/beacon.c:146: undefined reference to `dma_unmap_single'
      drivers/net/wireless/ath/ath9k/beacon.c:174: undefined reference to `dma_map_single'
      drivers/net/wireless/ath/ath9k/beacon.c:176: undefined reference to `dma_mapping_error'
      drivers/built-in.o: In function `ath9k_beacon_remove_slot':
      drivers/net/wireless/ath/ath9k/beacon.c:252: undefined reference to `dma_unmap_single'
      drivers/built-in.o: In function `ath_descdma_setup':
      drivers/net/wireless/ath/ath9k/init.c:382: undefined reference to `dmam_alloc_coherent'
      drivers/built-in.o: In function `ath_edma_get_buffers':
      drivers/net/wireless/ath/ath9k/recv.c:616: undefined reference to `dma_sync_single_for_cpu'
      drivers/built-in.o: In function `ath_get_next_rx_buf':
      drivers/net/wireless/ath/ath9k/recv.c:740: undefined reference to `dma_sync_single_for_cpu'
      drivers/built-in.o: In function `ath_rx_edma_cleanup':
      drivers/net/wireless/ath/ath9k/recv.c:176: undefined reference to `dma_unmap_single'
      drivers/built-in.o: In function `ath_rx_cleanup':
      drivers/net/wireless/ath/ath9k/recv.c:340: undefined reference to `dma_unmap_single'
      drivers/built-in.o: In function `ath_rx_edma_buf_link':
      drivers/net/wireless/ath/ath9k/recv.c:122: undefined reference to `dma_sync_single_for_cpu'
      drivers/built-in.o: In function `ath_rx_tasklet':
      drivers/net/wireless/ath/ath9k/recv.c:1275: undefined reference to `dma_map_single'
      drivers/net/wireless/ath/ath9k/recv.c:1277: undefined reference to `dma_mapping_error'
      drivers/net/wireless/ath/ath9k/recv.c:1283: undefined reference to `dma_unmap_single'
      drivers/built-in.o: In function `ath_rx_edma_init':
      drivers/net/wireless/ath/ath9k/recv.c:226: undefined reference to `dma_map_single'
      drivers/net/wireless/ath/ath9k/recv.c:229: undefined reference to `dma_mapping_error'
      drivers/built-in.o: In function `ath_rx_init':
      drivers/net/wireless/ath/ath9k/recv.c:303: undefined reference to `dma_map_single'
      drivers/net/wireless/ath/ath9k/recv.c:306: undefined reference to `dma_mapping_error'
      drivers/built-in.o: In function `ath_tx_complete_buf':
      drivers/net/wireless/ath/ath9k/xmit.c:2088: undefined reference to `dma_unmap_single'
      drivers/built-in.o: In function `ath_txstatus_setup':
      drivers/net/wireless/ath/ath9k/xmit.c:2344: undefined reference to `dmam_alloc_coherent'
      drivers/built-in.o: In function `ath_tx_set_retry':
      drivers/net/wireless/ath/ath9k/xmit.c:307: undefined reference to `dma_sync_single_for_cpu'
      drivers/built-in.o: In function `ath_tx_setup_buffer':
      drivers/net/wireless/ath/ath9k/xmit.c:1887: undefined reference to `dma_map_single'
      drivers/net/wireless/ath/ath9k/xmit.c:1889: undefined reference to `dma_mapping_error'
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
      Cc: John W. Linville <linville@tuxdriver.com>
      Cc: linux-wireless@vger.kernel.org
      Cc: netdev@vger.kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a01ae5b3
    • R
      bcma: add more core IDs · d4988d4c
      Rafał Miłecki 提交于
      PCIe and ARM CR4 cores were found on 14e4:43b1 AKA BCM4352.
      Reported-by: NGabriel Thörnblad <gabriel@thornblad.com>
      Signed-off-by: NRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d4988d4c
    • D
      iwlegacy: remove inline marking of EXPORT_SYMBOL functions · becdbc59
      Denis Efremov 提交于
      EXPORT_SYMBOL and inline directives are contradictory to each other.
      The patch fixes this inconsistency.
      
      Found by Linux Driver Verification project (linuxtesting.org).
      Signed-off-by: NDenis Efremov <yefremov.denis@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      becdbc59
    • J
  6. 17 5月, 2013 4 次提交
    • D
      Merge tag 'batman-adv-fix-for-davem' of git://git.open-mesh.org/linux-merge · 7ffc37fc
      David S. Miller 提交于
      Included changes:
      - fix global protection fault by avoiding double call_rcu
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7ffc37fc
    • L
      batman-adv: Fix rcu_barrier() miss due to double call_rcu() in TT code · 72822225
      Linus Lüssing 提交于
      rcu_barrier() only waits for the currently scheduled rcu functions
      to finish - it won't wait for any function scheduled via another
      call_rcu() within an rcu scheduled function.
      
      Unfortunately our batadv_tt_orig_list_entry_free_ref() does just that,
      via a batadv_orig_node_free_ref() call, leading to our rcu_barrier()
      call potentially missing such a batadv_orig_node_free_ref().
      
      This patch fixes this issue by calling the batadv_orig_node_free_rcu()
      directly from the rcu callback, removing the unnecessary, additional
      call_rcu() layer here.
      Signed-off-by: NLinus Lüssing <linus.luessing@web.de>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Acked-by: NAntonio Quartulli <ordex@autistici.org>
      72822225
    • E
      bonding: allow TSO being set on bonding master · b0ce3508
      Eric Dumazet 提交于
      In some situations, we need to disable TSO on bonding slaves.
      
      bonding device automatically unset TSO in bond_fix_features(), and
      performance is not good because :
      
      1) We consume more cpu cycles.
      
      2) GSO segmentation has some bugs leading to out of order TCP packets
      if this segmentation is done before virtual device. This particular
      problem will be addressed in a separate patch.
      
      This patch allows TSO being set/unset on the bonding master,
      so that GSO segmentation is done after bonding layer.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Michał Mirosław <mirqus@gmail.com>
      Cc: Jay Vosburgh <fubar@us.ibm.com>
      Cc: Andy Gospodarek <andy@greyhouse.net>
      Cc: Maciej Żenczykowski <maze@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b0ce3508
    • R
      NET: mv643xx_eth: avoid lockdep dump on interface down · 3aefe2b4
      Russell King 提交于
      When the interface is shutdown, the mv643xx_eth driver hits the following
      lockdep dump:
      
      =================================
      [ INFO: inconsistent lock state ]
      3.8.0+ #303 Not tainted
      ---------------------------------
      inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
      NetworkManager/3449 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (_xmit_ETHER#2){+.?...}, at: [<c02828e4>] txq_reclaim+0x60/0x230
      {IN-SOFTIRQ-W} state was registered at:
        [<c007e93c>] mark_irqflags+0xf8/0x1c4
        [<c007ee60>] __lock_acquire+0x458/0x9a4
        [<c007f8b0>] lock_acquire+0x60/0x74
        [<c03ea914>] _raw_spin_lock+0x40/0x50
        [<c0334040>] sch_direct_xmit+0xa4/0x2e4
        [<c0320880>] dev_queue_xmit+0x174/0x508
        [<c03953b0>] ip6_finish_output2+0xd0/0x3c4
        [<c03b15bc>] mld_sendpack+0x190/0x368
        [<c03b3204>] mld_ifc_timer_expire+0xc/0x58
        [<c005133c>] call_timer_fn+0x6c/0xe0
        [<c0051588>] run_timer_softirq+0x1d8/0x210
        [<c004c004>] __do_softirq+0xe0/0x1b4
        [<c004c448>] irq_exit+0x64/0x6c
        [<c000f1e0>] handle_IRQ+0x34/0x84
        [<c000e0d0>] __irq_usr+0x30/0x80
      irq event stamp: 160603
      hardirqs last  enabled at (160603): [<c00c736c>] kfree+0xa8/0xe8
      hardirqs last disabled at (160602): [<c00c72e0>] kfree+0x1c/0xe8
      softirqs last  enabled at (160304): [<c028260c>] mib_counters_update+0x5ec/0x60c
      softirqs last disabled at (160302): [<c03eab8c>] _raw_spin_lock_bh+0x14/0x54
      
      other info that might help us debug this:
       Possible unsafe locking scenario:
      
             CPU0
             ----
        lock(_xmit_ETHER#2);
        <Interrupt>
          lock(_xmit_ETHER#2);
      
       *** DEADLOCK ***
      
      1 lock held by NetworkManager/3449:
       #0:  (rtnl_mutex){+.+.+.}, at: [<c032e664>] rtnetlink_rcv+0xc/0x24
      
      stack backtrace:
      [<c0013e34>] (unwind_backtrace+0x0/0xf8) from [<c007e12c>] (print_usage_bug+0x150/0x1d4)
      [<c007e12c>] (print_usage_bug+0x150/0x1d4) from [<c007e3f8>] (mark_lock_irq+0x248/0x290)
      [<c007e3f8>] (mark_lock_irq+0x248/0x290) from [<c007e598>] (mark_lock+0x158/0x404)
      [<c007e598>] (mark_lock+0x158/0x404) from [<c007e97c>] (mark_irqflags+0x138/0x1c4)
      [<c007e97c>] (mark_irqflags+0x138/0x1c4) from [<c007ee60>] (__lock_acquire+0x458/0x9a4)
      [<c007ee60>] (__lock_acquire+0x458/0x9a4) from [<c007f8b0>] (lock_acquire+0x60/0x74)
      [<c007f8b0>] (lock_acquire+0x60/0x74) from [<c03ea914>] (_raw_spin_lock+0x40/0x50)
      [<c03ea914>] (_raw_spin_lock+0x40/0x50) from [<c02828e4>] (txq_reclaim+0x60/0x230)
      [<c02828e4>] (txq_reclaim+0x60/0x230) from [<c0282ad8>] (txq_deinit+0x24/0xcc)
      [<c0282ad8>] (txq_deinit+0x24/0xcc) from [<c0282d28>] (mv643xx_eth_stop+0x1a8/0x1bc)
      [<c0282d28>] (mv643xx_eth_stop+0x1a8/0x1bc) from [<c031e314>] (__dev_close_many+0x88/0xcc)
      [<c031e314>] (__dev_close_many+0x88/0xcc) from [<c031e380>] (__dev_close+0x28/0x3c)
      [<c031e380>] (__dev_close+0x28/0x3c) from [<c0320fa0>] (__dev_change_flags+0x7c/0x134)
      [<c0320fa0>] (__dev_change_flags+0x7c/0x134) from [<c03210e0>] (dev_change_flags+0x10/0x48)
      [<c03210e0>] (dev_change_flags+0x10/0x48) from [<c032da1c>] (do_setlink+0x1a0/0x730)
      [<c032da1c>] (do_setlink+0x1a0/0x730) from [<c032f524>] (rtnl_newlink+0x304/0x4b0)
      [<c032f524>] (rtnl_newlink+0x304/0x4b0) from [<c032ef8c>] (rtnetlink_rcv_msg+0x25c/0x2a0)
      [<c032ef8c>] (rtnetlink_rcv_msg+0x25c/0x2a0) from [<c03383a0>] (netlink_rcv_skb+0xbc/0xd8)
      [<c03383a0>] (netlink_rcv_skb+0xbc/0xd8) from [<c032e674>] (rtnetlink_rcv+0x1c/0x24)
      [<c032e674>] (rtnetlink_rcv+0x1c/0x24) from [<c03361d8>] (netlink_unicast_kernel+0x88/0xd4)
      [<c03361d8>] (netlink_unicast_kernel+0x88/0xd4) from [<c0337dd0>] (netlink_unicast+0x138/0x180)
      [<c0337dd0>] (netlink_unicast+0x138/0x180) from [<c0338020>] (netlink_sendmsg+0x208/0x32c)
      [<c0338020>] (netlink_sendmsg+0x208/0x32c) from [<c030ab48>] (sock_sendmsg+0x84/0xa4)
      [<c030ab48>] (sock_sendmsg+0x84/0xa4) from [<c030aef4>] (__sys_sendmsg+0x2ac/0x2c4)
      [<c030aef4>] (__sys_sendmsg+0x2ac/0x2c4) from [<c030c8ec>] (sys_sendmsg+0x3c/0x68)
      [<c030c8ec>] (sys_sendmsg+0x3c/0x68) from [<c000e2e0>] (ret_fast_syscall+0x0/0x3c)
      
      It seems that txq_reclaim() takes the netif tx lock:
      
              __netif_tx_lock(nq, smp_processor_id());
      
      in a context outside of softirq context, and thus is susceptible to
      deadlock should an interrupt occur.
      
      Use __netif_tx_lock_bh()/__netif_tx_unlock_bh() instead.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3aefe2b4