1. 25 4月, 2008 2 次提交
  2. 18 4月, 2008 1 次提交
  3. 12 4月, 2008 1 次提交
    • A
      forcedeth: mac address fix · a376e79c
      Ayaz Abdulla 提交于
      This critical patch fixes a mac address issue recently introduced.  If the
      device's mac address was in correct order and the flag
      NVREG_TRANSMITPOLL_MAC_ADDR_REV was set, during nv_remove the flag would get
      cleared.  During next load, the mac address would get reversed because the
      flag is missing.
      
      As it has been indicated previously, the flag is cleared across a low power
      transition.  Therefore, the driver should set the mac address back into the
      reversed order when clearing the flag.
      
      Also, the driver should set back the flag after a low power transition to
      protect against kexec command calling nv_probe a second time.
      Signed-off-by: NAyaz Abdulla <aabdulla@nvidia.com>
      Cc: "Yinghai Lu" <yhlu.kernel@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      a376e79c
  4. 05 4月, 2008 1 次提交
  5. 29 3月, 2008 1 次提交
    • I
      forcedeth: fix locking bug with netconsole · bd6ca637
      Ingo Molnar 提交于
      While using netconsole on forcedeth, lockdep noticed the following locking
      bug:
      
      =================================
      [ INFO: inconsistent lock state ]
      2.6.24-rc6 #6Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ---------------------------------
      inconsistent {softirq-on-W} -> {in-softirq-W} usage.
      udevd/719 [HC0[0]:SC1[1]:HE1:SE0] takes:
       (_xmit_ETHER){-+..}, at: [<c043062e>] dev_watchdog+0x1c/0xb9
      {softirq-on-W} state was registered at:
        [<c0147f67>] mark_held_locks+0x4e/0x66
        [<c014810e>] trace_hardirqs_on+0xfe/0x136
        [<c048ae63>] _spin_unlock_irq+0x22/0x42
        [<c02ec617>] nv_start_xmit_optimized+0x347/0x37a
        [<c042c80d>] netpoll_send_skb+0xa4/0x147
        [<c042d4a6>] netpoll_send_udp+0x238/0x242
        [<c02f44f6>] write_msg+0x6d/0x9b
        [<c012c129>] __call_console_drivers+0x4e/0x5a
        [<c012c18c>] _call_console_drivers+0x57/0x5b
        [<c012c2dd>] release_console_sem+0x11c/0x1b9
        [<c012caeb>] register_console+0x1eb/0x1f3
        [<c06ae673>] init_netconsole+0x119/0x15f
        [<c069149b>] kernel_init+0x147/0x294
        [<c01058cb>] kernel_thread_helper+0x7/0x10
        [<ffffffff>] 0xffffffff
      irq event stamp: 950
      hardirqs last  enabled at (950): [<c048ae63>] _spin_unlock_irq+0x22/0x42
      hardirqs last disabled at (949): [<c048aaf7>] _spin_lock_irq+0xc/0x38
      softirqs last  enabled at (0): [<c012a29c>] copy_process+0x375/0x126d
      softirqs last disabled at (947): [<c0106d43>] do_softirq+0x61/0xc6
      
      other info that might help us debug this:
      no locks held by udevd/719.
      
      stack backtrace:
      Pid: 719, comm: udevd Not tainted 2.6.24-rc6 #6
       [<c0105c46>] show_trace_log_lvl+0x12/0x25
       [<c01063ec>] show_trace+0xd/0x10
       [<c010670c>] dump_stack+0x57/0x5f
       [<c0147505>] print_usage_bug+0x10a/0x117
       [<c0147c38>] mark_lock+0x121/0x402
       [<c01488b6>] __lock_acquire+0x3d1/0xb64
       [<c0149405>] lock_acquire+0x4e/0x6a
       [<c048a99b>] _spin_lock+0x23/0x32
       [<c043062e>] dev_watchdog+0x1c/0xb9
       [<c0133e4a>] run_timer_softirq+0x133/0x193
       [<c0130907>] __do_softirq+0x78/0xed
       [<c0106d43>] do_softirq+0x61/0xc6
       =======================
      eth1: link down
      
      The fix is to disable/restore irqs instead of disable/enable.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Ayaz Abdulla <aabdulla@nvidia.com>
      Cc: Jeff Garzik <jeff@garzik.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      bd6ca637
  6. 26 3月, 2008 1 次提交
  7. 17 3月, 2008 1 次提交
    • A
      forcedeth: limit tx to 16 · 3b446c3e
      Ayaz Abdulla 提交于
      This is a critical patch which adds a workaround for a HW bug. The patch
      will limit the number of outstanding tx packets to 16. Otherwise, the HW
      could send out packets with bad checksums.
      
      The driver will still setup the tx packets into the ring, however, will
      only set the Valid bit on 16 packets at a time.
      Signed-off-by: NAyaz Abdulla <aabdulla@nvidia.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      3b446c3e
  8. 12 2月, 2008 2 次提交
  9. 06 2月, 2008 3 次提交
  10. 03 2月, 2008 6 次提交
  11. 29 1月, 2008 1 次提交
    • A
      forcedeth endianness bugs · 5bb7ea26
      Al Viro 提交于
      * misannotation: struct register_test members are actually host-endian
      * bug: cpu_to_le64(n) >> 32 instead of cpu_to_le32(n >> 32) in setting
      ->bufhigh and similar for ->buflow (take low bits, _then_ convert to
      little-endian, not the other way round).
      * bug: setup_hw_rings() should not convert to little-endian at all (we
      feed the result to writel(), not store in shared data structure), let
      alone try to play with shifting and masking little-endian values.  Introduced
      when setup_hw_rings() went in, screwed both 64bit case and the old code for
      32bit rings it had replaced.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5bb7ea26
  12. 09 1月, 2008 1 次提交
    • B
      [FORCEDETH]: Fix reversing the MAC address on suspend. · 2e3884b5
      Björn Steinbrink 提交于
      For cards that initially have the MAC address stored in reverse order,
      the forcedeth driver uses a flag to signal whether the address was
      already corrected, so that it is not reversed again on a subsequent
      probe.
      
      Unfortunately this flag, which is stored in a register of the card,
      seems to get lost during suspend, resulting in the MAC address being
      reversed again. To fix that, the MAC address needs to be written back
      in reversed order before we suspend and the flag needs to be reset.
      
      The flag is still required because at least kexec will never write
      back the reversed address and thus needs to know what state the card
      is in.
      Signed-off-by: NBjörn Steinbrink <B.Steinbrink@gmx.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2e3884b5
  13. 24 11月, 2007 2 次提交
  14. 25 10月, 2007 1 次提交
  15. 18 10月, 2007 2 次提交
  16. 17 10月, 2007 3 次提交
    • J
      [netdrvr] forcedeth: remove in-driver copy of net_device_stats · 8148ff45
      Jeff Garzik 提交于
      A copy of struct net_device_stats now lives in struct net_device,
      making in-driver copies a waste of memory.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      8148ff45
    • J
      [netdrvr] forcedeth: improved probe info; dev_printk() cleanups · 3f88ce49
      Jeff Garzik 提交于
      main change:
      * greatly improve per-NIC probe diagnostic output.  Similar to other
        net drivers, print out MAC address, PHY info, and various hardware and
        software flags that may be relevant.
      
      other changes:
      * similar to other net drivers, only print the initial version message
        when we have found at least one board.
      
      * don't bother to print error message when pci_enable_device() fails,
        it will do so for us.
      
      * use dev_printk() rather than printk() in nv_probe().  This gives
        use a standardized output similar to the rest of the kernel, and
        eliminates the need to manually print out PCI bus id.
      
      * use DRV_NAME constant where appropriate
      
      * clean struct pci_driver indentation
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      3f88ce49
    • I
      forcedeth: fix NAPI rx poll function · bcb5febb
      Ingo Molnar 提交于
      fix the forcedeth NAPI poll function to not emit this warning:
      
      [  186.635916] WARNING: at net/core/dev.c:2166 net_rx_action()
      [  186.641351]  [<c060d9f5>] net_rx_action+0x145/0x1b0
      [  186.646191]  [<c011d752>] __do_softirq+0x42/0x90
      [  186.650784]  [<c011d7c6>] do_softirq+0x26/0x30
      [  186.655202]  [<c011db48>] local_bh_enable+0x48/0xa0
      [  186.660055]  [<c06023e0>] lock_sock_nested+0xa0/0xc0
      [  186.664995]  [<c065da16>] tcp_recvmsg+0x16/0xbc0
      [  186.669588]  [<c013e94b>] __generic_file_aio_write_nolock+0x27b/0x520
      [  186.676001]  [<c0601d75>] sock_common_recvmsg+0x45/0x70
      [  186.681202]  [<c05ff5df>] sock_aio_read+0x11f/0x140
      [  186.686054]  [<c015c086>] do_sync_read+0xc6/0x110
      [  186.690735]  [<c012b9b0>] autoremove_wake_function+0x0/0x40
      [  186.696280]  [<c060dcfc>] net_tx_action+0x3c/0xe0
      [  186.700961]  [<c015c9c2>] vfs_read+0x132/0x140
      [  186.705378]  [<c015cd41>] sys_read+0x41/0x70
      [  186.709625]  [<c0102b66>] sysenter_past_esp+0x5f/0x89
      [  186.714651]  =======================
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      bcb5febb
  17. 11 10月, 2007 6 次提交
  18. 25 8月, 2007 1 次提交
  19. 19 8月, 2007 1 次提交
    • T
      fix random hang in forcedeth driver when using netconsole · 1a2b7330
      Timo Jantunen 提交于
      If the forcedeth driver receives too much work in an interrupt, it
      assumes it has a broken hardware with stuck IRQ.  It works around the
      problem by disabling interrupts on the nic but makes a printk while
      holding device spinlog - which isn't smart thing to do if you have
      netconsole on the same nic.
      
      This patch moves the printk's out of the spinlock protected area.
      
      Without this patch the machine hangs hard.  With this patch everything
      still works even when there is significant increase on CPU usage while
      using the nic.
      Signed-off-by: NTimo Jantunen <jeti@iki.fi>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1a2b7330
  20. 01 8月, 2007 1 次提交
  21. 31 7月, 2007 1 次提交
  22. 25 7月, 2007 1 次提交