summaryrefslogtreecommitdiffstats
path: root/drivers/net/r6040.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* r6040: rework init_one error handlingFlorian Fainelli2008-07-231-19/+25
| | | | | | | | | | This patch reworks the error handling in r6040_init_one in order not to leak resources and correcly unmap and release PCI regions of the MAC. Also prefix printk's with the driver name for clarity. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: bump release number to 0.18Florian Fainelli2008-07-231-2/+2
| | | | | | | | | This patch bumps the release of the r6040 driver. There has been quite some versions of it out there, but this one is the one people should report bugs against. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: handle RX fifo full and no descriptor interruptsFlorian Fainelli2008-07-231-7/+15
| | | | | | | | | This patch allows the MAC to handle the RX FIFO full and no descriptor available interrupts. While we are at it replace the TX interrupt with its corresponding definition. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: change the default waiting timeFlorian Fainelli2008-07-231-2/+2
| | | | | | | | | This patch changes the default waiting time of a packet, which along with our previous r6040_rx path, was causing huge delays with another host (160 to 230 ms). Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: use definitions for magic values in descriptor statusFlorian Fainelli2008-07-231-11/+26
| | | | | | | Define all the descriptor status the MAC can set. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: completely rework the RX pathFlorian Fainelli2008-07-231-82/+62
| | | | | | | | | | | | | | | | | This patch completely reworks the RX path in order to be more accurate about what is going on with the MAC. We no longer read the error from the MLSR register instead read the descriptor status register which reflects, the error per descriptor. We now allocate skbs on the fly in r6040_rx, and we handle allocation failure instead of simply dropping the packet. Remove the rx_free_desc counter of r6040_private structure since we allocate skbs in the RX path. r6040_rx_buf_alloc is now removed and becomes unuseless. Signed-Off-By: Joerg Albert <jal2@gmx.de> Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: call napi_disable when puting down the interface and set lp->dev ↵Florian Fainelli2008-07-231-2/+2
| | | | | | | | | | | accordingly. We did not call napi_disabled when putting down the interface which should be done. Finally initialize lp->dev when everything is set. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: rework the RX buffers allocation routineFlorian Fainelli2008-07-231-9/+44
| | | | | | | | | | | | | | Rework the RX buffers allocation function so that we do not leak memory in the case we could not allocate skbs for the RX path. Propagate the errors to the r6040_up function where we call the RX buffers allocation function. Also rename the r6040_alloc_txbufs function to r6040_init_txbufs, to reflect what it really does. Signed-Off-By: Joerg Albert <jal2@gmx.de> Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: fix scheduling while atomic in r6040_tx_timeoutFlorian Fainelli2008-07-231-41/+58
| | | | | | | | | | | Add a helper function which only modifies R6040 MAC registers use it when we timeout, and on adapter initialization. Fix the scheduling while atomic but in the timeout routine due to the reallocation of rx/tx buffers. Signed-Off-By: Joerg Albert <jal2@gmx.de> Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: fix null pointer access and tx timeoutsFlorian Fainelli2008-07-231-8/+20
| | | | | | | | | | | This patch fixes a null pointer access in r6040_rx due to lp->dev not being initialized. Fix the TX timeouts, TX irq was not re-enabled on RX irq Signed-Off-By: Joerg Albert <jal2@gmx.de> Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040: prefix all functions with r6040Florian Fainelli2008-07-231-30/+30
| | | | | | | | Prefix all functions inside the r6040 driver with r6040 to avoid namespace clashing. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* drivers/net/r6040.c: Eliminate double sizeofJulia Lawall2008-06-271-1/+1
| | | | | | | | | | | | | | | | | | | | | Taking sizeof the result of sizeof is quite strange and does not seem to be what is wanted here. This was fixed using the following semantic patch. (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ expression E; @@ - sizeof ( sizeof (E) - ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* drivers/net/r6040.c: correct bad use of round_jiffies()Christophe Jaillet2008-06-121-1/+1
| | | | | | | | Compared to other places in the kernel, I think that this driver misuses the function round_jiffies. Signed-off-by: Christophe Jaillet <christophe.jaillet@wanadoo.fr> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* r6040 endianness fixesAl Viro2008-03-171-4/+6
| | | | | | | pci_unmap_single() on little-endian address Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* r6040: cleanupsFlorian Fainelli2008-02-051-5/+3
| | | | | | | | | | - use netdev_alloc_skb - remove an useless variable in the IRQ handler - remove an unused private structure member - fix a spelling mistake Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: recover from transmit timeoutFlorian Fainelli2008-02-051-24/+33
| | | | | Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: add helpers to allocate and free the Tx/Rx buffersFlorian Fainelli2008-02-051-60/+84
| | | | | | | r6040_init_ring_desc moves around but it is kept unchanged. Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: do not use a private stats structure to store statisticsFlorian Fainelli2008-02-051-14/+20
| | | | | Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: cleanupsFrancois Romieu2008-01-291-20/+13
| | | | | | | | | | | - whitespaces vs tabs - use 80 cols - use if_mii - use netdev_priv - remove useless cast to void * - PCI device id does not need to be globally available Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: erroneous dev->privFrancois Romieu2008-01-291-1/+1
| | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: remove virt_to_busFrancois Romieu2008-01-291-53/+50
| | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* r6040: compile errorFrancois Romieu2008-01-291-1/+1
| | | | | | | drivers/net/r6040.c: In function 'rx_buf_alloc': drivers/net/r6040.c:262: warning: passing argument 2 of 'pci_map_single' makes pointer from integer without a cast Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* drivers/net/r6040: fix obvious problems (but more remain)Jeff Garzik2008-01-291-17/+14
| | | | | | | | | | | | | | - checkpatch fixes - fix bogus and uninitialized return codes in r6040_start_xmit() - netdev_get_settings() fix obvious locking bug flagged by compiler warning - set DMA consistent mask - remove unnecessary setting of dev->base_addr Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [NET]: Add support for the RDC R6040 Fast Ethernet controllerSten Wang2008-01-291-0/+1109
This patch adds support for the RDC R6040 MAC we can find in the RDC R-321x System-on-chips. Signed-off-by: Sten Wang <sten.wang@rdc.com.tw> Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu>