1. 22 1月, 2009 1 次提交
  2. 11 1月, 2009 1 次提交
    • R
      cxgb3: Keep LRO off if disabled when interface is down · 47fd23fe
      Roland Dreier 提交于
      I have a system with a Chelsio adapter (driven by cxgb3) whose ports are
      part of a Linux bridge.  Recently I updated the kernel and discovered
      that things stopped working because cxgb3 was doing LRO on packets that
      were passed into the bridge code for forwarding.  (Incidentally, this
      problem manifested itself in a strange way that made debugging a bit
      interesting -- for some reason, the skb_warn_if_lro() check in bridge
      didn't trigger and these LROed packets were forwarded out a forcedeth
      interface, and caused the forcedeth transmit path to get stuck)
      
      This is because cxgb3 has no way of keeping state for the LRO flag until
      the interface is brought up, so if the bridging code disables LRO while
      the interface is down, then cxgb3_up() will just reenable LRO, and on my
      Debian system at least, the init scripts add interfaces to a bridge
      before bringing the interfaces up.
      
      Fix this by keeping track of each interface's LRO state in cxgb3 so that
      when bridge disables LRO, it stays disabled in cxgb3_up() when the
      interface is brought up.  I did this by changing the rx_csum_offload
      flag into a pair of bit flags; the effect of this on the rx_eth() fast
      path is miniscule enough that it should be fine (eg on x86, a cmpb
      instruction becomes a testb instruction).
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      47fd23fe
  3. 16 12月, 2008 2 次提交
  4. 27 11月, 2008 2 次提交
  5. 21 11月, 2008 1 次提交
  6. 20 11月, 2008 1 次提交
  7. 13 11月, 2008 1 次提交
    • S
      RDMA/cxgb3: Fix deadlock in iw_cxgb3 (hang when configuring interface) · b3e123cf
      Steve Wise 提交于
      When the iw_cxgb3 module's cxgb3_client "add" func gets called by the
      cxgb3 module, the iwarp driver ends up calling the ethtool ops
      get_drvinfo function in cxgb3 to get the fw version and other info.
      Currently the iwarp driver grabs the rtnl lock around this down call
      to serialize.  As of 2.6.27 or so, things changed such that the rtnl
      lock is held around the call to the netdev driver open function.  Also
      the cxgb3_client "add" function doesn't get called if the device is
      down.
      
      So, if you load cxgb3, then load iw_cxgb3, then ifconfig up the
      device, the iw_cxgb3 add func gets called with the rtnl_lock held.  If
      you load cxgb3, ifconfig up the device, then load iw_cxgb3, the add
      func gets called without the rtnl_lock held.  The former causes the
      deadlock, the latter does not.
      
      In addition, there are iw_cxgb3 sysfs handlers that also can call down
      into cxgb3 to gather the fw and hw versions.  These can be called
      concurrently on different processors and at any time.  Thus we need to
      push this serialization down in the cxgb3 driver get_drvinfo func.
      
      The fix is to remove rtnl lock usage, and use a per-device lock in cxgb3.
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Acked-by: NDivy Le Ray <divy@chelsio.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      b3e123cf
  8. 11 11月, 2008 2 次提交
    • S
      RDMA/cxgb3: deadlock in iw_cxgb3 can cause hang when configuring interface. · cf3760da
      Steve Wise 提交于
      When the iw_cxgb3 module's cxgb3_client "add" func gets called by the
      cxgb3 module, the iwarp driver ends up calling the ethtool ops get_drvinfo
      function in cxgb3 to get the fw version and other info.  Currently the
      iwarp driver grabs the rtnl lock around this down call to serialize.
      As of 2.6.27 or so, things changed such that the rtnl lock is held around
      the call to the netdev driver open function.  Also the cxgb3_client "add"
      function doesn't get called if the device is down.
      
      So, if you load cxgb3, then load iw_cxgb3, then ifconfig up the device,
      the iw_cxgb3 add func gets called with the rtnl_lock held.   If you
      load cxgb3, ifconfig up the device, then load iw_cxgb3, the add func
      gets called without the rtnl_lock held.  The former causes the deadlock,
      the latter does not.
      
      In addition, there are iw_cxgb3 sysfs handlers that also can call
      down into cxgb3 to gather the fw and hw versions.  These can be called
      concurrently on different processors and at any time.  Thus we need to
      push this serialization down in the cxgb3 driver get_drvinfo func.
      
      The fix is to remove rtnl lock usage, and use a per-device lock in cxgb3.
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      cf3760da
    • D
      cxgb3 - Limit multiqueue setting to msi-x · f9ee3882
      Divy Le Ray 提交于
      Allow multiqueue setting in MSI-X mode only
      Signed-off-by: NDivy Le Ray <divy@chelsio.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      f9ee3882
  9. 31 10月, 2008 1 次提交
  10. 14 10月, 2008 1 次提交
  11. 09 10月, 2008 6 次提交
  12. 22 5月, 2008 1 次提交
  13. 13 5月, 2008 2 次提交
  14. 07 5月, 2008 1 次提交
  15. 18 4月, 2008 1 次提交
    • D
      cxgb3: Fix __must_check warning with dev_dbg. · d96a51f6
      Dan Noe 提交于
      Fix the warning:
      drivers/net/cxgb3/cxgb3_main.c: In function ‘offload_open’:
      drivers/net/cxgb3/cxgb3_main.c:936: warning: ignoring return value of
       ‘sysfs_create_group’, declared with attribute warn_unused_result
      
      Now the return value is checked; if sysfs_create_group() returns failure,
      a warning is printed using dev_dbg, and the code continues as before.  Use
      of dev_dbg ensures printk is not needlessly included unless desired for
      debugging.
      Signed-off-by: NDan Noe <dpn@isomerica.net>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      d96a51f6
  16. 29 1月, 2008 10 次提交
  17. 11 10月, 2007 6 次提交