netdev
[Top] [All Lists]

[PATCH] 2.4, 2.6 patchset for fealnx.c

To: Jeff Garzik <jgarzik@xxxxxxxxx>, Francois Romieu <romieu@xxxxxxxxxxxxx>, andreas@xxxxxxxxxxxx
Subject: [PATCH] 2.4, 2.6 patchset for fealnx.c
From: Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 5 Apr 2004 22:18:06 +0300
Cc: netdev@xxxxxxxxxxx, Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: KMail/1.5.4
I almost emptied my TODO. Hurray ;)

2.4 patches are stress-tested. As before, I used UDP flood
in extremely memory constrained box (kernel OOM killed
several processes while I ran test). Looks ok.

2.6.5 kernel have console-related slab corruption issues
on test machine, can't stress-test patches. Compile and boot
tested only. Pings work.

24/*
    patches against 2.4.25
    
26/*
    patches against 2.6.5

fealnx.0.diff
    replace dev->base_addr with ioaddr
    2.4 only: sync with 2.6

fealnx.1.diff
    replace magic constants with enums

fealnx.2.diff
    add 'static'
    fix wrapped comment

fealnx.3.diff
    fix pointer substraction bug

fealnx.4.diff
    stop doing stop_nic_rx()/writel(np->crvalue, ioaddr+TCRRCR)
    in rest_rx_descriptors(), this can inadvertently (re)enable
    tx and/or rx.

fealnx.5.diff
    introduce stop_nic_rxtx(), use it where makes sense

fealnx.6.diff
    Francois' fixes for low memory handling
    remove free_one_rx_descriptor(), not used anymore

fealnx.7.diff
    Garzik fix (AFAIR): add locking to tx_timeout

fealnx.8.diff
    Move reset code from tx_timeout into two separate routines:
    reset_and_disable_rxtx() and enable_rxtx()
    New function reset_tx_descriptors(): clean up tx ring
    after tx_timeout. tx_timeout now does:
        reset_and_disable_rxtx()
        reset_tx_descriptors()
        enable_rxtx()
        netif_wake_queue()
    Absense of netif_wake_queue() call was probably the cause of
    tx_timeout() stalling all future tx.
    Add reset timer, fire it 1/2 sec after 'Too much work in interrupt'
    It cleans up rx ring and resets device a-la tx_timeout()
    Remove stop_nic_tx(), not used anymore

fealnx.9.diff
    set_rx_mode() can be called by core code, needs locking.
    __set_rx_mode() is a 'dont lock' variant

fealnx.10.diff
    replace local delay functions with udelay

fealnx.11.diff
    beautify some code a bit
    make driver coding style uniform
    fix bug in dead code
--
vda


Attachment: fealnx.tar.gz
Description: application/tgz

<Prev in Thread] Current Thread [Next in Thread>