1. 09 3月, 2013 1 次提交
    • N
      tg3: Update link_up flag for phylib devices · 84421b99
      Nithin Sujir 提交于
      Commit f4a46d1f introduced a bug where
      the ifconfig stats would remain 0 for phylib devices. This is due to
      tp->link_up flag never becoming true causing tg3_periodic_fetch_stats()
      to return.
      
      The link_up flag was being updated in tg3_test_and_report_link_chg()
      after setting up the phy. This function however, is not called for
      phylib devices since the driver does not do the phy setup.
      
      This patch moves the link_up flag update into the common
      tg3_link_report() function that gets called for phylib devices as well
      for non phylib devices when the link state changes.
      
      To avoid updating link_up twice, we replace tg3_carrier_...() calls that
      are followed by tg3_link_report(), with netif_carrier_...(). We can then
      remove the unused tg3_carrier_on() function.
      
      CC: <stable@vger.kernel.org>
      Reported-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NNithin Nayak Sujir <nsujir@broadcom.com>
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      84421b99
  2. 08 3月, 2013 14 次提交
  3. 07 3月, 2013 7 次提交
    • K
      e1000e: fix accessing to suspended device · e60b22c5
      Konstantin Khlebnikov 提交于
      This patch fixes some annoying messages like 'Error reading PHY register' and
      'Hardware Erorr' and saves several seconds on reboot.
      
      Cc: Bruce Allan <bruce.w.allan@intel.com>
      Signed-off-by: NKonstantin Khlebnikov <khlebnikov@openvz.org>
      Acked-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Tested-by: NBorislav Petkov <bp@suse.de>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e60b22c5
    • K
      e1000e: fix runtime power management transitions · 66148bab
      Konstantin Khlebnikov 提交于
      This patch removes redundant actions from driver and fixes its interaction
      with actions in pci-bus runtime power management code.
      
      It removes pci_save_state() from __e1000_shutdown() for normal adapters,
      PCI bus callbacks pci_pm_*() will do all this for us. Now __e1000_shutdown()
      switches to D3-state only quad-port adapters, because they needs quirk for
      clearing false-positive error from downsteam pci-e port.
      
      pci_save_state() now called after clearing bus-master bit, thus __e1000_resume()
      and e1000_io_slot_reset() must set it back after restoring configuration space.
      
      This patch set get_link_status before calling pm_runtime_put() in e1000_open()
      to allow e1000_idle() get real link status and schedule first runtime suspend.
      
      This patch also enables wakeup for device if management mode is enabled
      (like for WoL) as result pci_prepare_to_sleep() would setup wakeup without
      special actions like custom 'enable_wakeup' sign.
      
      Cc: Bruce Allan <bruce.w.allan@intel.com>
      Signed-off-by: NKonstantin Khlebnikov <khlebnikov@openvz.org>
      Acked-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Tested-by: NBorislav Petkov <bp@suse.de>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      66148bab
    • K
      e1000e: fix pci-device enable-counter balance · 4e0855df
      Konstantin Khlebnikov 提交于
      This patch removes redundant and unbalanced pci_disable_device() from
      __e1000_shutdown(). pci_clear_master() is enough, device can go into
      suspended state with elevated enable_cnt.
      
      Bug was introduced in commit 23606cf5
      ("e1000e / PCI / PM: Add basic runtime PM support (rev. 4)") in v2.6.35
      
      Cc: Bruce Allan <bruce.w.allan@intel.com>
      CC: Stable <stable@kernel.org>
      Signed-off-by: NKonstantin Khlebnikov <khlebnikov@openvz.org>
      Acked-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Tested-by: NBorislav Petkov <bp@suse.de>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      4e0855df
    • E
      tun: add a missing nf_reset() in tun_net_xmit() · f8af75f3
      Eric Dumazet 提交于
      Dave reported following crash :
      
      general protection fault: 0000 [#1] SMP
      CPU 2
      Pid: 25407, comm: qemu-kvm Not tainted 3.7.9-205.fc18.x86_64 #1 Hewlett-Packard HP Z400 Workstation/0B4Ch
      RIP: 0010:[<ffffffffa0399bd5>]  [<ffffffffa0399bd5>] destroy_conntrack+0x35/0x120 [nf_conntrack]
      RSP: 0018:ffff880276913d78  EFLAGS: 00010206
      RAX: 50626b6b7876376c RBX: ffff88026e530d68 RCX: ffff88028d158e00
      RDX: ffff88026d0d5470 RSI: 0000000000000011 RDI: 0000000000000002
      RBP: ffff880276913d88 R08: 0000000000000000 R09: ffff880295002900
      R10: 0000000000000000 R11: 0000000000000003 R12: ffffffff81ca3b40
      R13: ffffffff8151a8e0 R14: ffff880270875000 R15: 0000000000000002
      FS:  00007ff3bce38a00(0000) GS:ffff88029fc40000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 00007fd1430bd000 CR3: 000000027042b000 CR4: 00000000000027e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process qemu-kvm (pid: 25407, threadinfo ffff880276912000, task ffff88028c369720)
      Stack:
       ffff880156f59100 ffff880156f59100 ffff880276913d98 ffffffff815534f7
       ffff880276913db8 ffffffff8151a74b ffff880270875000 ffff880156f59100
       ffff880276913dd8 ffffffff8151a5a6 ffff880276913dd8 ffff88026d0d5470
      Call Trace:
       [<ffffffff815534f7>] nf_conntrack_destroy+0x17/0x20
       [<ffffffff8151a74b>] skb_release_head_state+0x7b/0x100
       [<ffffffff8151a5a6>] __kfree_skb+0x16/0xa0
       [<ffffffff8151a666>] kfree_skb+0x36/0xa0
       [<ffffffff8151a8e0>] skb_queue_purge+0x20/0x40
       [<ffffffffa02205f7>] __tun_detach+0x117/0x140 [tun]
       [<ffffffffa022184c>] tun_chr_close+0x3c/0xd0 [tun]
       [<ffffffff8119669c>] __fput+0xec/0x240
       [<ffffffff811967fe>] ____fput+0xe/0x10
       [<ffffffff8107eb27>] task_work_run+0xa7/0xe0
       [<ffffffff810149e1>] do_notify_resume+0x71/0xb0
       [<ffffffff81640152>] int_signal+0x12/0x17
      Code: 00 00 04 48 89 e5 41 54 53 48 89 fb 4c 8b a7 e8 00 00 00 0f 85 de 00 00 00 0f b6 73 3e 0f b7 7b 2a e8 10 40 00 00 48 85 c0 74 0e <48> 8b 40 28 48 85 c0 74 05 48 89 df ff d0 48 c7 c7 08 6a 3a a0
      RIP  [<ffffffffa0399bd5>] destroy_conntrack+0x35/0x120 [nf_conntrack]
       RSP <ffff880276913d78>
      
      This is because tun_net_xmit() needs to call nf_reset()
      before queuing skb into receive_queue
      Reported-by: NDave Jones <davej@redhat.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8af75f3
    • S
      be2net: use CSR-BAR SEMAPHORE reg for BE2/BE3 · c5b3ad4c
      Sathya Perla 提交于
      The SLIPORT_SEMAPHORE register shadowed in the
      config-space may not reflect the correct POST stage after
      an EEH reset in BE2/3; it may return FW_READY state even though
      FW is not ready. This causes the driver to prematurely
      poll the FW mailbox and fail.
      
      For BE2/3 use the CSR-BAR/0xac instead.
      Reported-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NSathya Perla <sathya.perla@emulex.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c5b3ad4c
    • B
      sfc: Correct efx_rx_buffer::page_offset when EFX_PAGE_IP_ALIGN != 0 · c73e787a
      Ben Hutchings 提交于
      RX DMA buffers start at an offset of EFX_PAGE_IP_ALIGN bytes from the
      start of a cache line.  This offset obviously needs to be included in
      the virtual address, but this was missed in commit b590ace0
      ('sfc: Fix efx_rx_buf_offset() in the presence of swiotlb') since
      EFX_PAGE_IP_ALIGN is equal to 0 on both x86 and powerpc.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      c73e787a
    • B
      sfc: Disable soft interrupt handling during efx_device_detach_sync() · 35205b21
      Ben Hutchings 提交于
      efx_device_detach_sync() locks all TX queues before marking the device
      detached and thus disabling further TX scheduling.  But it can still
      be interrupted by TX completions which then result in TX scheduling in
      soft interrupt context.  This will deadlock when it tries to acquire
      a TX queue lock that efx_device_detach_sync() already acquired.
      
      To avoid deadlock, we must use netif_tx_{,un}lock_bh().
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      35205b21
  4. 06 3月, 2013 2 次提交
    • G
      benet: Wait f/w POST until timeout · 66d29cbc
      Gavin Shan 提交于
      While PCI card faces EEH errors, reset (usually hot reset) is
      expected to recover from the EEH errors. After EEH core finishes
      the reset, the driver callback (be_eeh_reset) is called and wait
      the firmware to complete POST successfully. The original code would
      return with error once detecting failure during POST stage. That
      seems not enough.
      
      The patch forces the driver (be_eeh_reset) to wait the firmware
      completes POST until timeout, instead of returning error upon
      detection POST failure immediately. Also, it would improve the
      reliability of the EEH funtionality of the driver.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Acked-by: NSathya Perla <sathya.perla@emulex.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      66d29cbc
    • Z
      reset nf before xmit vxlan encapsulated packet · 88c4c066
      Zang MingJie 提交于
      We should reset nf settings bond to the skb as ipip/ipgre do.
      
      If not, the conntrack/nat info bond to the origin packet may continually
      redirect the packet to vxlan interface causing a routing loop.
      
      this is the scenario:
      
           VETP     VXLAN Gateway
          /----\  /---------------\
          |    |  |               |
          |  vx+--+vx --NAT-> eth0+--> Internet
          |    |  |               |
          \----/  \---------------/
      
      when there are any packet coming from internet to the vetp, there will be lots
      of garbage packets coming out the gateway's vxlan interface, but none actually
      sent to the physical interface, because they are redirected back to the vxlan
      interface in the postrouting chain of NAT rule, and dmesg complains:
      
          Mar  1 21:52:53 debian kernel: [ 8802.997699] Dead loop on virtual device vxlan0, fix it urgently!
          Mar  1 21:52:54 debian kernel: [ 8804.004907] Dead loop on virtual device vxlan0, fix it urgently!
          Mar  1 21:52:55 debian kernel: [ 8805.012189] Dead loop on virtual device vxlan0, fix it urgently!
          Mar  1 21:52:56 debian kernel: [ 8806.020593] Dead loop on virtual device vxlan0, fix it urgently!
      
      the patch should fix the problem
      Signed-off-by: NZang MingJie <zealot0630@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      88c4c066
  5. 05 3月, 2013 6 次提交
    • C
      igb: Fix for lockdep issue in igb_get_i2c_client · 603e86fa
      Carolyn Wyborny 提交于
      This patch fixes a lockdep warning in igb_get_i2c_client by
      refactoring the initialization and usage of the i2c_client
      completely.  There is no on the fly allocation of the single
      client needed today.
      Signed-off-by: NCarolyn Wyborny <carolyn.wyborny@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      603e86fa
    • C
      igb: Fix link setup for I210 devices · ed65bdd8
      Carolyn Wyborny 提交于
      This patch changes the setup copper link function to use a switch
      statement for the PHY id's available for the given PHY types.  It
      also adds a case for the I210 PHY id, so the appropriate setup link
      function is called for it.
      Signed-off-by: NCarolyn Wyborny <carolyn.wyborny@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ed65bdd8
    • A
      igb: Drop BUILD_BUG_ON check from igb_build_rx_buffer · e4f7dbb1
      Alexander Duyck 提交于
      On s390 the igb driver was throwing a build error due to the fact that a frame
      built using build_skb would be larger than 2K.  Since this is not likely to
      change at any point in the future we are better off just dropping the check
      since we already had a check in igb_set_rx_buffer_len that will just disable
      the usage of build_skb anyway.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e4f7dbb1
    • B
      e1000e: workaround DMA unit hang on I218 · e08f626b
      Bruce Allan 提交于
      At 1000Mbps link speed, one of the MAC's internal clocks can be stopped for
      up to 4us when entering K1 (a power mode of the MAC-PHY interconnect).  If
      the MAC is waiting for completion indications for 2 DMA write requests into
      Host memory (e.g. descriptor writeback or Rx packet writing) and the
      indications occur while the clock is stopped, both indications will be
      missed by the MAC causing the MAC to wait for the completion indications
      and be unable to generate further DMA write requests.  This results in an
      apparent hardware hang.
      
      Work-around the issue by disabling the de-assertion of the clock request
      when 1000Mbps link is acquired (K1 must be disabled while doing this).
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NJeff Pieper <jeffrey.e.pieper@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e08f626b
    • F
      net: fec: fix build error in no MXC platform · acac8406
      Frank Li 提交于
      build error cause by
      Commit ff43da86
      ("NET: FEC: dynamtic check DMA desc buff type")
      
      drivers/net/ethernet/freescale/fec.c: In function ‘fec_enet_get_nextdesc’:
      drivers/net/ethernet/freescale/fec.c:215:18: error: invalid use of undefined type ‘struct bufdesc_ex’
      drivers/net/ethernet/freescale/fec.c: In function ‘fec_enet_get_prevdesc’:
      drivers/net/ethernet/freescale/fec.c:224:18: error: invalid use of undefined type ‘struct bufdesc_ex’
      drivers/net/ethernet/freescale/fec.c: In function ‘fec_enet_start_xmit’:
      drivers/net/ethernet/freescale/fec.c:286:37: error: arithmetic on pointer to an incomplete type
      drivers/net/ethernet/freescale/fec.c:287:13: error: arithmetic on pointer to an incomplete type
      drivers/net/ethernet/freescale/fec.c:324:7: error: dereferencing pointer to incomplete type etc....
      Signed-off-by: NFrank Li <Frank.Li@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      acac8406
    • F
      net: fec: put tx to napi poll function to fix dead lock · de5fb0a0
      Frank Li 提交于
      up stack ndo_start_xmit already hold lock.
      fec_enet_start_xmit needn't spin lock.
      stat_xmit just update fep->cur_tx
      fec_enet_tx just update fep->dirty_tx
      
      Reserve a empty bdb to check full or empty
      cur_tx == dirty_tx    means full
      cur_tx == dirty_tx +1 means empty
      
      So needn't is_full variable.
      
      Fix spin lock deadlock
      
      =================================
      [ INFO: inconsistent lock state ]
      3.8.0-rc5+ #107 Not tainted
      ---------------------------------
      inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
      ptp4l/615 [HC1[1]:SC0[0]:HE0:SE1] takes:
       (&(&list->lock)->rlock#3){?.-...}, at: [<8042c3c4>] skb_queue_tail+0x20/0x50
       {HARDIRQ-ON-W} state was registered at:
       [<80067250>] mark_lock+0x154/0x4e8
       [<800676f4>] mark_irqflags+0x110/0x1a4
       [<80069208>] __lock_acquire+0x494/0x9c0
       [<80069ce8>] lock_acquire+0x90/0xa4
       [<80527ad0>] _raw_spin_lock_bh+0x44/0x54
       [<804877e0>] first_packet_length+0x38/0x1f0
       [<804879e4>] udp_poll+0x4c/0x5c
       [<804231f8>] sock_poll+0x24/0x28
       [<800d27f0>] do_poll.isra.10+0x120/0x254
       [<800d36e4>] do_sys_poll+0x15c/0x1e8
       [<800d3828>] sys_poll+0x60/0xc8
       [<8000e780>] ret_fast_syscall+0x0/0x3c
      
       *** DEADLOCK ***
      
       1 lock held by ptp4l/615:
        #0:  (&(&fep->hw_lock)->rlock){-.-...}, at: [<80355f9c>] fec_enet_tx+0x24/0x268
        stack backtrace:
        Backtrace:
        [<800121e0>] (dump_backtrace+0x0/0x10c) from [<80516210>] (dump_stack+0x18/0x1c)
        r6:8063b1fc r5:bf38b2f8 r4:bf38b000 r3:bf38b000
        [<805161f8>] (dump_stack+0x0/0x1c) from [<805189d0>] (print_usage_bug.part.34+0x164/0x1a4)
        [<8051886c>] (print_usage_bug.part.34+0x0/0x1a4) from [<80518a88>] (print_usage_bug+0x78/0x88)
        r8:80065664 r7:bf38b2f8 r6:00000002 r5:00000000 r4:bf38b000
        [<80518a10>] (print_usage_bug+0x0/0x88) from [<80518b58>] (mark_lock_irq+0xc0/0x270)
        r7:bf38b000 r6:00000002 r5:bf38b2f8 r4:00000000
        [<80518a98>] (mark_lock_irq+0x0/0x270) from [<80067270>] (mark_lock+0x174/0x4e8)
        [<800670fc>] (mark_lock+0x0/0x4e8) from [<80067744>] (mark_irqflags+0x160/0x1a4)
        [<800675e4>] (mark_irqflags+0x0/0x1a4) from [<80069208>] (__lock_acquire+0x494/0x9c0)
        r5:00000002 r4:bf38b2f8
        [<80068d74>] (__lock_acquire+0x0/0x9c0) from [<80069ce8>] (lock_acquire+0x90/0xa4)
        [<80069c58>] (lock_acquire+0x0/0xa4) from [<805278d8>] (_raw_spin_lock_irqsave+0x4c/0x60)
        [<8052788c>] (_raw_spin_lock_irqsave+0x0/0x60) from [<8042c3c4>] (skb_queue_tail+0x20/0x50)
        r6:bfbb2180 r5:bf1d0190 r4:bf1d0184
        [<8042c3a4>] (skb_queue_tail+0x0/0x50) from [<8042c4cc>] (sock_queue_err_skb+0xd8/0x188)
        r6:00000056 r5:bfbb2180 r4:bf1d0000 r3:00000000
        [<8042c3f4>] (sock_queue_err_skb+0x0/0x188) from [<8042d15c>] (skb_tstamp_tx+0x70/0xa0)
        r6:bf0dddb0 r5:bf1d0000 r4:bfbb2180 r3:00000004
        [<8042d0ec>] (skb_tstamp_tx+0x0/0xa0) from [<803561d0>] (fec_enet_tx+0x258/0x268)
        r6:c089d260 r5:00001c00 r4:bfbd0000
        [<80355f78>] (fec_enet_tx+0x0/0x268) from [<803562cc>] (fec_enet_interrupt+0xec/0xf8)
        [<803561e0>] (fec_enet_interrupt+0x0/0xf8) from [<8007d5b0>] (handle_irq_event_percpu+0x54/0x1a0)
        [<8007d55c>] (handle_irq_event_percpu+0x0/0x1a0) from [<8007d740>] (handle_irq_event+0x44/0x64)
        [<8007d6fc>] (handle_irq_event+0x0/0x64) from [<80080690>] (handle_fasteoi_irq+0xc4/0x15c)
        r6:bf0dc000 r5:bf811290 r4:bf811240 r3:00000000
        [<800805cc>] (handle_fasteoi_irq+0x0/0x15c) from [<8007ceec>] (generic_handle_irq+0x28/0x38)
        r5:807130c8 r4:00000096
        [<8007cec4>] (generic_handle_irq+0x0/0x38) from [<8000f16c>] (handle_IRQ+0x54/0xb4)
        r4:8071d280 r3:00000180
        [<8000f118>] (handle_IRQ+0x0/0xb4) from [<80008544>] (gic_handle_irq+0x30/0x64)
        r8:8000e924 r7:f4000100 r6:bf0ddef8 r5:8071c974 r4:f400010c
        r3:00000000
        [<80008514>] (gic_handle_irq+0x0/0x64) from [<8000e2e4>] (__irq_svc+0x44/0x5c)
        Exception stack(0xbf0ddef8 to 0xbf0ddf40)
      Signed-off-by: NFrank Li <Frank.Li@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de5fb0a0
  6. 04 3月, 2013 7 次提交
  7. 03 3月, 2013 1 次提交
    • F
      ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to gigabit ethernet adapter driver · e2ca90c2
      Freddy Xin 提交于
      This is a resubmission.
      Added kfree() in ax88179_get_eeprom to prevent memory leakage.
      Modified "__le16 rxctl" to "u16 rxctl" in "struct ax88179_data" and removed pointless casts.
      Removed asix_init and asix_exit functions and added "module_usb_driver(ax88179_178a_driver)".
      Fixed endianness issue on big endian systems and verified this driver on iBook G4.
      Removed steps that change net->features in ax88179_set_features function.
      Added "const" to ethtool_ops structure and fixed the coding style of AX88179_BULKIN_SIZE array.
      Fixed the issue that the default MTU is not 1500.
      Added ax88179_change_mtu function and enabled the hardware jumbo frame function to support an
      MTU higher than 1500.
      Fixed indentation and empty line coding style errors.
      The _nopm version usb functions were added to access register in suspend and resume functions.
      Serveral variables allocted dynamically were removed and replaced by stack variables.
      ax88179_get_eeprom were modified from asix_get_eeprom in asix_common.
      
      This patch adds a driver for ASIX's AX88179 family of USB 3.0/2.0
      to gigabit ethernet adapters. It's based on the AX88xxx driver but
      the usb commands used to access registers for AX88179 are completely different.
      This driver had been verified on x86 system with AX88179/AX88178A and
      Sitcomm LN-032 USB dongles.
      Signed-off-by: NFreddy Xin <freddy@asix.com.tw>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e2ca90c2
  8. 01 3月, 2013 2 次提交