1. 18 Apr, 2013 13 commits
    • akepner's avatar
      ixgbe: in shutdown, do netif_running() under rtnl_lock · 499ab5cc
      akepner authored
      During shutdown it's possible for __dev_close() (which holds
      rtnl_lock) to clear the __LINK_STATE_START bit, and for ixgbe
      to then read that bit (without holding rtnl_lock), and then
      not fail to free irqs, etc. The result is a crash like this:
      
      ------------[ cut here ]------------
      kernel BUG at drivers/pci/msi.c:313!
      invalid opcode: 0000 [#1] SMP
      last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map
      CPU 1
      Pid: 5910, comm: reboot Tainted: P           ----------------   2.6.32 #1 empty
      RIP: 0010:[<ffffffff81305c2b>]  [<ffffffff81305c2b>] free_msi_irqs+0x11b/0x130
      RSP: 0018:ffff880185c9bc88  EFLAGS: 00010282
      RAX: ffff880219f58bc0 RBX: ffff88021ac53b00 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: 0000000000000246 RDI: 000000000000004a
      RBP: ffff880185c9bcc8 R08: 0000000000000002 R09: 0000000000000106
      R10: 0000000000000000 R11: 0000000000000006 R12: ffff88021e524778
      R13: 0000000000000001 R14: ffff88021e524000 R15: 0000000000000000
      FS:  00007f90821b7700(0000) GS:ffff880028220000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 00007f90818bd010 CR3: 0000000132c64000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process reboot (pid: 5910, threadinfo ffff880185c9a000, task ffff88021bf04a80)
      Stack:
       ffff880185c9bc98 000000018130529d ffff880185c9bcc8 ffff88021e524000
      <0> 0000000000000004 ffff88021948c700 0000000000000000 ffff880185c9bda7
      <0> ffff880185c9bce8 ffffffff81305cbd ffff880185c9bce8 ffff88021948c700
      Call Trace:
       [<ffffffff81305cbd>] pci_disable_msix+0x3d/0x50
       [<ffffffffa00501d5>] ixgbe_reset_interrupt_capability+0x65/0x90 [ixgbe]
       [<ffffffffa00512f6>] ixgbe_clear_interrupt_scheme+0xb6/0xd0 [ixgbe]
       [<ffffffffa005330b>] __ixgbe_shutdown+0x5b/0x200 [ixgbe]
       [<ffffffffa00534ca>] ixgbe_shutdown+0x1a/0x60 [ixgbe]
       [<ffffffff812f6c7c>] pci_device_shutdown+0x2c/0x50
       [<ffffffff813727fb>] device_shutdown+0x4b/0x160
       [<ffffffff8107d98c>] kernel_restart_prepare+0x2c/0x40
       ehci timer_action, mod_timer io_watchdog
       [<ffffffff8107d9e6>] kernel_restart+0x16/0x60
       [<ffffffff8107dbfd>] sys_reboot+0x1ad/0x200
       [<ffffffff811676cf>] ? __d_free+0x3f/0x60
       [<ffffffff81167748>] ? d_free+0x58/0x60
       [<ffffffff8116f7c0>] ? mntput_no_expire+0x30/0x100
       [<ffffffff81152b11>] ? __fput+0x191/0x200
       [<ffffffff816565fe>] ? do_page_fault+0x3e/0xa0
       [<ffffffff8100b132>] system_call_fastpath+0x16/0x1b
      Code: 4c 89 ef e8 98 8c e3 ff 4d 39 f4 48 8b 43 10 75 cf 48 83 c4 18 5b 41 5c
      41 5d 41 5e 41 5f c9 c3 49 8b 7d 20 e8 07 5a d3 ff eb c9 <0f> 0b 0f 1f 00 eb fb
      66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
       ehci timer_action, mod_timer io_watchdog
      RIP  [<ffffffff81305c2b>] free_msi_irqs+0x11b/0x130
       RSP <ffff880185c9bc88>
      ---[ end trace 27de882a0fe75593 ]---
      
      (This was seen on a pretty old kernel/driver, but looks like
      the same bug is still possible.)
      
      Signed-off-by: <akepner@riverbed.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      499ab5cc
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next · c1cb0d3b
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      This series contains updates to ixgbe only.
      
      v2- Dropped the following 2 patches from the series:
       ixgbe: Support using build_skb in the case that jumbo frames are disabled
       ixgbe: walk pci-e bus to find minimum width
      
      Ben Hutchings found a bug with Alex's patch, so that patch was dropped
      permanently.  Jacob's "walk PCIe bus" patch is being re-worked for
      a more generic solution so that other drivers can benefit.
      
      In the remaining patches...
      Alex provides a fix where we were incorrectly checking the entire frag_off
      field when we only wanted the fragment offset.  Alex also cleans up
      the check for PAGE_SIZE, since the default configuration allocates 32K
      for all buffers.
      
      Emil provides a change to the calculation of eerd so that it is consistent
      between the read and write functions by using | instead of +.
      
      Jacob adds support for displaying PCIe Gen3 link speed, which was
      previously missing from the ixgbe driver.  He also provides a patch
      to clean up ixgbe_get_bus_info_generic to call some conversion
      functions, which are used also in another patch provided by Jacob.
      Jacob modifies the driver to enable certain devices (which have an
      internal switch) to read from the physical slot rather than reading
      data from the internal switch.
      
      Don provides a couple of fixes (which are more appropriate for net-next),
      one of which resolves an issue where ixgbe was only turning on the laser
      when the adapter was up which caused issues for those who wanted to
      access the MNG firmware while the port was in a down state.  The other
      fix is for WoL when currently linked at 1G.  Lastly Don bumps the driver
      version keep the in-kernel driver up to date with the current functionality.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c1cb0d3b
    • Eric Dumazet's avatar
      tcp: introduce TCPSpuriousRtxHostQueues SNMP counter · 0e280af0
      Eric Dumazet authored
      Host queues (Qdisc + NIC) can hold packets so long that TCP can
      eventually retransmit a packet before the first transmit even left
      the host.
      
      Its not clear right now if we could avoid this in the first place :
      
      - We could arm RTO timer not at the time we enqueue packets, but
        at the time we TX complete them (tcp_wfree())
      
      - Cancel the sending of the new copy of the packet if prior one
        is still in queue.
      
      This patch adds instrumentation so that we can at least see how
      often this problem happens.
      
      TCPSpuriousRtxHostQueues SNMP counter is incremented every time
      we detect the fast clone is not yet freed in tcp_transmit_skb()
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Willem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0e280af0
    • Fabio Estevam's avatar
      fec: Remove unneeded asm header files · 5a5967d8
      Fabio Estevam authored
      There is nothing in the driver that requires <asm/coldfire.h> and
      <asm/mcfsim.h>.
      Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a5967d8
    • Don Skidmore's avatar
      ixgbe: bump version number · 8c5afd6d
      Don Skidmore authored
      Bump the version number reflect the corresponding functionality in the
      out of tree driver.
      Signed-of-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      8c5afd6d
    • Don Skidmore's avatar
      ixgbe: Fix 1G link WoL · b8f83638
      Don Skidmore authored
      We reset during the shutdown path which will reset AUTOC register.  This
      would change LMS to 10G.  If we were currently linked at 1G we will lose
      link, which is a bad thing if we wanted WoL to work.  For the fix I needed
      to know if WoL is supported so I created a new bool in the ixgbe_hw struct.
      If this is set we will not allow the reset to change the current LMS value
      in AUTOC.
      Signed-off-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      b8f83638
    • Don Skidmore's avatar
      ixgbe: fix MNG FW support when adapter not up · 0b2679d6
      Don Skidmore authored
      We were only turning the laser on when the adapter was up.  This
      causes issues for those who wanted to access the MNG FW while the
      port was in a down state.  This patch makes sure the laser is turned
      on in probe and remain up even after the port is brought down.
      Signed-off-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      0b2679d6
    • Jacob Keller's avatar
      ixgbe: enable devices with internal switch to read pci parent · b8e82001
      Jacob Keller authored
      This patch modifies the driver to enable certain devices, which have an internal
      switch, to read data from the physical slot rather than reading data from the
      internal switch. The internal switch will always report the same PCI width and
      speed, which is not useful compared to knowing the width and speed of the slot
      the physical card is plugged into.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      b8e82001
    • Jacob Keller's avatar
      ixgbe: create conversion functions from link_status to bus/speed · ef1889d5
      Jacob Keller authored
      This patch cleans up ixgbe_get_bus_info_generic to call some conversion
      functions, which are used also in a follow on patch that needs to convert
      between the link_status PCIe config values into ixgbe's internal enum
      representations.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ef1889d5
    • Jacob Keller's avatar
      ixgbe: Enable support for recognizing PCI-e Gen3 link speed · e8710a5f
      Jacob Keller authored
      This patch adds support for displaying PCIe Gen3 link speed, which was
      previously missing from the driver.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e8710a5f
    • Alexander Duyck's avatar
      ixgbe: Drop check for PAGE_SIZE from ixgbe_xmit_frame_ring · 7f66162b
      Alexander Duyck authored
      The check for PAGE_SIZE is pointless now that the default configuration is to
      allocate 32K for all buffers.  Since the Tx descriptor limit is 16K we can
      just drop the check and always compare the descriptors to the maximum size
      supported.
      Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      7f66162b
    • Emil Tantilov's avatar
      ixgbe: don't do arithmetic operations on bitmasks · d0111575
      Emil Tantilov authored
      Make the calculation of eerd consistent between the read and write functions
      by using | instead of + for IXGBE_EEPROM_RW_REG_START
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      d0111575
    • Alexander Duyck's avatar
      ixgbe: Mask off check of frag_off as we only want fragment offset · 20967f42
      Alexander Duyck authored
      We were incorrectly checking the entire frag_off field when we only wanted the
      fragment offset.  As a result we were not pulling in TCP headers when the DNF
      flag was set.
      
      To correct that we will now check for frag off using the IP_OFFSET mask.
      Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      20967f42
  2. 17 Apr, 2013 15 commits
  3. 16 Apr, 2013 12 commits