2.4.x net driver updates
Subsystems (4)
PATCH 1/1 2.4.x net driver updates
Marcelo, please do a
bk pull bk://kernel.bkbits.net/jgarzik/net-drivers-2.4
This will update the following files:
drivers/net/8139too.c | 2 drivers/net/b44.c | 23 +---- drivers/net/e1000/e1000_main.c | 30 +++++- drivers/net/natsemi.c | 2 drivers/net/pcmcia/xircom_cb.c | 114 ++++++++++++------------- drivers/net/sk98lin/h/skversion.h | 13 +- drivers/net/sk98lin/skge.c | 171 ++++++++++++++++++++++++++------------ drivers/net/tulip/tulip_core.c | 1 include/linux/ethtool.h | 11 +- include/linux/pci_ids.h | 1 net/core/ethtool.c | 49 ++++++---- 11 files changed, 254 insertions(+), 163 deletions(-)
through these ChangeSets:
<[email protected]> (03/10/14 1.1198)
[PATCH] b44 enable interrupts after tx timeout (2.4.23-pre6)
Here's the 2.4.23-pre6 version, which syncs the driver fully with 2.6. Seems to work (tm).
<[email protected]> (03/10/14 1.1197)
[netdrvr natsemi] fix ring clean
Too much copy&paste in a call to pci_unmap_single.
<[email protected]> (03/10/14 1.1196)
[netdrvr tulip] add pci id
Contributed by Ken Zalewski.
<[email protected]> (03/10/14 1.1195)
[netdrvr 8139too] another new PCI ID
Contributed by Josh Litherland, Donald Becker, and others.
<[email protected]> (03/10/14 1.1194)
[netdrvr 8139too] add pci id
contributed by "JaReK" and Donald Becker.
<[email protected]> (03/10/14 1.1193)
[PATCH] hang on ZEROCOPY/TSO when hitting no-Tx-resources
* Critical bug fix: under heavy Tx stress using ZEROCOPY or TSO, if we run out of Tx descriptors, we don't calculate for the context descriptor used as the first of the ZEROCOPY/TSO send, nor do we clean up the context descriptor bits in the case where the send isn't going to fit and we need to undo the mappings. This bug was introduced with the 5.2.16 patch set which included a workaround for a hang on 82544 over PCI-X. This workaround caused the check for no-Tx- resource logic to change, and this bug slipped in.
<[email protected]> (03/10/14 1.1192)
[PATCH] ethtool_ops eeprom stuff
Finally got around to adding ethtool_ops to e100-3.0.x. I found a bug with get_eeprom() and it seems to work best if we add get_eeprom_len() to the ops list. Also moved check for offest + len < size into ethtool.c.
I was able to test [GS]EEPROM, PHYS_ID, GSTATS, GSTRINGS, and TEST, and everything looks good.
Should I send same for 2.4?
<[email protected]> (03/10/14 1.1191)
[PATCH] sk98lin-2.4: Driver update to version 6.18
here is a new version of the sk98lin driver (v6.18) with some changes for the kernel 2.4.22-bk25.
Patch 1/1
* Add: New Gigabit LOM vendors (Epox, Gigabyte, Abit, Iwill, ECS, Asus)
* Add: Better Support for Yukon Plus chipset
* Fix: IO-control return race condition
* Fix: Interrupt moderation value check
* Fix: PCI initialization (SkGeInitPCI)
* Fix: TCP and UDP HW Checksum calculation
<[email protected]> (03/10/14 1.1190)
[netdrvr xircom_cb] backport 2.6 changes
* use alloc_etherdev; fixes races in stats pointer setting (by Stephen Hemminger)
* kill unnecessary whitespace and #includes
* use C99-style initializers
* speling and irqreturn_t changes
drivers/net/8139too.c +2 -0
@@ -247,6 +247,8 @@ {0x14ea, 0xab06, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, {0x14ea, 0xab07, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, {0x11db, 0x1234, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, + {0x1432, 0x9130, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, + {0x02ac, 0x1012, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, #ifdef CONFIG_SH_SECUREEDGE5410/* Bogus 8139 silicon reports 8129 without external PROM :-( */
drivers/net/b44.c +8 -15
@@ -25,8 +25,8 @@#define DRV_MODULE_NAME "b44"#define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "0.9" -#define DRV_MODULE_RELDATE "Jul 14, 2003" +#define DRV_MODULE_VERSION "0.91" +#define DRV_MODULE_RELDATE "Oct 3, 2003"#define B44_DEF_MSG_ENABLE \ (NETIF_MSG_DRV | \
@@ -80,16 +80,7 @@static int b44_debug =-1 ;/* -1 == use B44_DEF_MSG_ENABLE as value */ -#ifndef PCI_DEVICE_ID_BCM4401 -#define PCI_DEVICE_ID_BCM4401 0x4401 -#endif - -#if LINUX_VERSION_CODE <KERNEL_VERSION (2 ,5 ,0 ) -#define IRQ_RETVAL (x) -#define irqreturn_t void -#endif - -static struct pci_device_id b44_pci_tbl[]__devinitdata = { +static struct pci_device_id b44_pci_tbl[] = { {PCI_VENDOR_ID_BROADCOM ,PCI_DEVICE_ID_BCM4401 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0UL }, { }/* terminate list with empty entry */
@@ -870,6 +861,8 @@spin_unlock_irq (&bp->lock); +b44_enable_ints (bp); +netif_wake_queue (dev); }
@@ -1393,7 +1386,7 @@strcpy (info.driver,DRV_MODULE_NAME );strcpy (info.version,DRV_MODULE_VERSION );memset (&info.fw_version,0 ,sizeof (info.fw_version)); -strcpy (info.bus_info, pci_dev->slot_name); +strcpy (info.bus_info,pci_name (pci_dev)); info.eedump_len =0 ; info.regdump_len =0 ;if (copy_to_user (useraddr, &info,sizeof (info)))
@@ -1834,7 +1827,7 @@iounmap ((void *) bp->regs); err_out_free_dev: -kfree (dev); +free_netdev (dev); err_out_free_res:pci_release_regions (pdev);
@@ -1852,7 +1845,7 @@if (dev) {unregister_netdev (dev);iounmap ((void *) ((struct b44 *)(dev->priv))->regs); -kfree (dev); +free_netdev (dev);pci_release_regions (pdev);pci_disable_device (pdev);pci_set_drvdata (pdev,NULL );
drivers/net/e1000/e1000_main.c +23 -7
@@ -59,7 +59,7 @@char e1000_driver_name[] ="e1000" ;char e1000_driver_string[] ="Intel(R) PRO/1000 Network Driver" ; -char e1000_driver_version[] ="5.2.16-k1" ; +char e1000_driver_version[] ="5.2.16-k2" ;char e1000_copyright[] ="Copyright (c) 1999-2003 Intel Corporation." ;/* e1000_pci_tbl - PCI Device ID Table
@@ -1532,6 +1532,7 @@ unsigned int first) {struct e1000_desc_ring *tx_ring = &adapter->tx_ring; +struct e1000_tx_desc *tx_desc;struct e1000_buffer *buffer_info;unsigned int len = skb->len, max_per_txd =E1000_MAX_DATA_PER_TXD ;unsigned int offset =0 , size, count =0 , i;
@@ -1622,17 +1623,29 @@ } } -if (E1000_DESC_UNUSED (&adapter->tx_ring) < count) { +if (E1000_DESC_UNUSED (&adapter->tx_ring) < count +2 ) {/* There aren't enough descriptors available to queue up -* this send, so undo the mapping and abort the send. -* We could have done the check before we mapped the skb, -* but because of all the workarounds (above), it's too -* difficult to predict how many we're going to need.*/ - i = first; +* this send (need: count + 1 context desc + 1 desc gap +* to keep tail from touching head), so undo the mapping +* and abort the send. We could have done the check before +* we mapped the skb, but because of all the workarounds +* (above), it's too difficult to predict how many we're +* going to need.*/ + i = adapter->tx_ring.next_to_use; + +if (i == first) { +/* Cleanup after e1000_tx_[csum|tso] scribbling +* on descriptors. */ + tx_desc =E1000_TX_DESC (*tx_ring, first); + tx_desc->buffer_addr =0 ; + tx_desc->lower.data =0 ; + tx_desc->upper.data =0 ; + }while (count--) { buffer_info = &tx_ring->buffer_info[i]; +if (buffer_info->dma) { pci_unmap_page(adapter->pdev, buffer_info->dma,
@@ -1640,8 +1653,11 @@ PCI_DMA_TODEVICE); buffer_info->dma =0 ; } +if (++i == tx_ring->count) i =0 ; } + + adapter->tx_ring.next_to_use = first;return 0 ; }
drivers/net/natsemi.c +1 -1
@@ -1528,7 +1528,7 @@for (i =0 ; i <TX_RING_SIZE ; i++) {if (np->tx_skbuff[i]) {pci_unmap_single (np->pci_dev, - np->rx_dma[i], np->rx_skbuff[i]->len, + np->tx_dma[i], np->tx_skbuff[i]->len,PCI_DMA_TODEVICE );dev_kfree_skb (np->tx_skbuff[i]); np->stats.tx_dropped++;
drivers/net/pcmcia/xircom_cb.c +57 -57
242 lines not on this page · raw message
drivers/net/sk98lin/h/skversion.h +8 -5
@@ -2,8 +2,8 @@* * Name: version.h * Project: GEnesis, PCI Gigabit Ethernet Adapter -* Version: $Revision: 1.2 $ -* Date: $Date: 2003/08/13 12:01:01 $ +* Version: $Revision: 1.3 $ +* Date: $Date: 2003/08/25 13:34:48 $ * Purpose: SK specific Error log support * ******************************************************************************/
@@ -25,6 +25,9 @@* * History: * $Log: skversion.h,v $ +* Revision 1.3 2003/08/25 13:34:48 mlindner +* Fix: Lint changes +* * Revision 1.2 2003/08/13 12:01:01 mlindner * Add: Changes for Lint *
@@ -51,12 +54,12 @@#ifdef lintstatic const char SysKonnectFileId[] ="@(#) (C) SysKonnect GmbH." ;static const char SysKonnectBuildNumber[] = -"@(#)SK-BUILD: 6.17 PL: 01" ; +"@(#)SK-BUILD: 6.18 PL: 01" ;#endif /* !defined(lint) */ -#define BOOT_STRING "sk98lin: Network Device Driver v6.17\n" \ +#define BOOT_STRING "sk98lin: Network Device Driver v6.18\n" \ "(C)Copyright 1999-2003 Marvell(R)." -#define VER_STRING "6.17" +#define VER_STRING "6.18"
drivers/net/sk98lin/skge.c +117 -54
277 lines not on this page · raw message
drivers/net/tulip/tulip_core.c +1 -0
@@ -229,6 +229,7 @@ { 0x1186, 0x1561, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x1626, 0x8410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x1737, 0xAB09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, + { 0x1737, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x14f1, 0x1803, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CONEXANT }, { 0x10b9, 0x5261, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X }, /* ALi 1563 integrated ethernet */
include/linux/ethtool.h +6 -5
@@ -303,14 +303,14 @@* * get_eeprom: * Should fill in the magic field. Don't need to check len for zero -* or wraparound but must check offset + len < size. Fill in the data -* argument with the eeprom values from offset to offset + len. Update -* len to the amount read. Returns an error or zero. +* or wraparound. Fill in the data argument with the eeprom values +* from offset to offset + len. Update len to the amount read. +* Returns an error or zero. * * set_eeprom: * Should validate the magic field. Don't need to check len for zero -* or wraparound but must check offset + len < size. Update len to -* the amount written. Returns an error or zero. +* or wraparound. Update len to the amount written. Returns an error +* or zero. */ struct ethtool_ops {int (*get_settings)(struct net_device *,struct ethtool_cmd *);
@@ -324,6 +324,7 @@void (*set_msglevel)(struct net_device *,u32 );int (*nway_reset)(struct net_device *);u32 (*get_link)(struct net_device *); +int (*get_eeprom_len)(struct net_device *);int (*get_eeprom)(struct net_device *,struct ethtool_eeprom *,u8 *);int (*set_eeprom)(struct net_device *,struct ethtool_eeprom *,u8 *);int (*get_coalesce)(struct net_device *,struct ethtool_coalesce *);
include/linux/pci_ids.h +1 -0
@@ -1669,6 +1669,7 @@#define PCI_DEVICE_ID_TIGON3_5703A3 0x16c7#define PCI_DEVICE_ID_TIGON3_5901 0x170d#define PCI_DEVICE_ID_TIGON3_5901_2 0x170e +#define PCI_DEVICE_ID_BCM4401 0x4401#define PCI_VENDOR_ID_SYBA 0x1592#define PCI_DEVICE_ID_SYBA_2P_EPP 0x0782
net/core/ethtool.c +30 -19
98 lines not on this page · raw message