1. 19 12月, 2008 5 次提交
    • J
      NIU: Implement discard counters, optimize · e98def1f
      Jesper Dangaard Brouer 提交于
      Optimize the lightly loaded case, by only synchronizing discards stats
      when qlen > 10 indicate potential for drops.
      
      Notice Robert Olsson might disagree with this patch.
      Signed-off-by: NJesper Dangaard Brouer <hawk@comx.dk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e98def1f
    • J
      NIU: Implement discard counters, info/debug statements. · d231776f
      Jesper Dangaard Brouer 提交于
      Discard packet counter debug statements that can be turned on
      at runtime by users to assist debugging of the driver code.
      Signed-off-by: NJesper Dangaard Brouer <hawk@comx.dk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d231776f
    • J
      NIU: Implement discard counters · b8a606b8
      Jesper Dangaard Brouer 提交于
      Implementing discard counters for the NIU driver turned out to be more
      complicated than first assumed.
      
      The discard counters for the NIU neptune chip are only 16-bit (even
      though this is a 64-bit chip).  These 16-bit counters can overflow
      quickly, especially considering this is a 10Gbit/s ethernet card.
      
      The overflow indication bit is, unfortunatly, not usable as the
      counter value does not wrap, but remains at max value 0xFFFF.
      Resulting in lost counts until the counter is reset.
      
      The read and reset scheme also poses a problem. Both in theory and in
      practice counters can be lost in between reading nr64() and clearing
      the counter nw64().  For this reason, the number of counter clearings
      nw64() is limited/reduced.  On the fast-path the counters are only
      syncronized once it exceeds 0x7FFF.  When read by userspace, its
      syncronized fully.
      Signed-off-by: NJesper Dangaard Brouer <hawk@comx.dk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b8a606b8
    • B
      enc28j60: reduce the number of spi transfers in enc28j60_set_bank() · 5664dd55
      Baruch Siach 提交于
      A major source of overhead in the enc28j60 driver is the SPI transfers. Each
      SPI transfer entails two kernel thread context switches. One major source of
      SPI transfers is the enc28j60_set_bank() functions which runs before every
      register access. This patch reduces the number of SPI transfers that
      enc28j60_set_bank() performs in two ways:
      
        1. removes unnecessary bank switch for the registers that are present in all
      	 banks
      
        2. when switching from banks 0 or 3 to banks 1 or 2 (i.e. only one bit
      	 changes) enc28j60_set_bank() does only one SPI transfer instead of two
      
      According to my tests these changes reduce the number of SPI transfers in
      about 25%.
      Signed-off-by: NBaruch Siach <baruch@tkos.co.il>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5664dd55
    • W
      netdevice zd1201: Use after free · b88a2a22
      Wang Chen 提交于
      | commit 3d29b0c3
      | Author: John W. Linville <linville@tuxdriver.com>
      | Date:   Fri Oct 31 14:13:12 2008 -0400
      |
      |     netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv()
      |
      |     We have some reasons to kill netdev->priv:
      |     1. netdev->priv is equal to netdev_priv().
      |     2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously
      |        netdev_priv() is more flexible than netdev->priv.
      |     But we cann't kill netdev->priv, because so many drivers reference to it
      |     directly.
      |
      |     OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug",
      |     and I want to kill netdev->priv later, I decided to convert all the direct
      |     reference of netdev->priv first.
      |
      |     (Original patch posted by Wang Chen <wangchen@cn.fujitsu.com> w/ above
      |     changelog but using dev->ml_priv.  That doesn't seem appropriate
      |     to me for this driver, so I've revamped it to use netdev_priv()
      |     instead. -- JWL)
      
      This commit changed the allocation of netdev, but didn't change
      the free method of it.
      This causes "zd" be used after the memory, which is pointed by "zd", being
      freed by free_netdev().
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b88a2a22
  2. 18 12月, 2008 15 次提交
  3. 17 12月, 2008 18 次提交
  4. 16 12月, 2008 2 次提交