2.4.x net driver updates
Subsystems (2)
PATCH 1/1 2.4.x net driver updates
Please do a
bk pull bk://gkernel.bkbits.net/net-drivers-2.4
This will update the following files:
drivers/net/e1000/e1000.h | 3 drivers/net/e1000/e1000_ethtool.c | 11 - drivers/net/e1000/e1000_hw.c | 86 ++++++------- drivers/net/e1000/e1000_hw.h | 12 + drivers/net/e1000/e1000_main.c | 251 ++++++++++++++++++++++++++++++++++---- drivers/net/tulip/21142.c | 2 drivers/net/tulip/eeprom.c | 1 drivers/net/tulip/interrupt.c | 2 drivers/net/tulip/media.c | 1 drivers/net/tulip/pnic.c | 1 drivers/net/tulip/pnic2.c | 2 drivers/net/tulip/timer.c | 1 drivers/net/tulip/tulip.h | 15 ++ drivers/net/tulip/tulip_core.c | 2 14 files changed, 312 insertions(+), 78 deletions(-)
through these ChangeSets:
<mallikarjuna.chilakala:intel.com>:
o e1000: Driver version white space,
o e1000: Fixes related to Cable length
o e1000: Report failure code when loopback
o e1000: Checks for desc ring/rx data
o e1000: Patch from Peter Kjellstroem --
o e1000: Fix WOL settings in 82544 based
o e1000: Delay clean-up of last Tx buffer
o e1000: Avoid race between e1000_watchdog
o e1000: 2 use netif_poll_{enable|disable}
o e1000: 1 Robert Olsson's fix and
John W. Linville:
o tulip: make tulip_stop_rxtx() wait for DMA to fully stop
drivers/net/e1000/e1000.h +3 -0
@@ -140,6 +140,7 @@#define E1000_RX_BUFFER_WRITE 16/* Must be power of 2 */ #define AUTO_ALL_MODES 0 +#define E1000_EEPROM_82544_APM 0x0004#define E1000_EEPROM_APME 0x0400#ifndef E1000_MASTER_SLAVE
@@ -211,6 +212,7 @@/* TX */ struct e1000_desc_ring tx_ring; +struct e1000_buffer previous_buffer_info;spinlock_t tx_lock;uint32_t txd_cmd;uint32_t tx_int_delay;
@@ -224,6 +226,7 @@uint32_t tx_fifo_size;atomic_t tx_fifo_stall;boolean_t pcix_82544; +boolean_t detect_tx_hung;/* RX */ struct e1000_desc_ring rx_ring;
drivers/net/e1000/e1000_ethtool.c +6 -5
@@ -1309,7 +1309,7 @@struct e1000_desc_ring *txdr = &adapter->test_tx_ring;struct e1000_desc_ring *rxdr = &adapter->test_rx_ring;struct pci_dev *pdev = adapter->pdev; -int i; +int i, ret_val;E1000_WRITE_REG (&adapter->hw,RDT , rxdr->count -1 );
@@ -1329,11 +1329,12 @@ rxdr->buffer_info[i].length, PCI_DMA_FROMDEVICE); -if (!e1000_check_lbtest_frame (rxdr->buffer_info[i++].skb,1024 )) -return 0 ; - }while (i <64 ); + ret_val =e1000_check_lbtest_frame (rxdr->buffer_info[i].skb, +1024 ); + i++; + }while (ret_val !=0 && i <64 ); -return 13 ; +return ret_val; } static int
drivers/net/e1000/e1000_hw.c +45 -41
148 lines not on this page · raw message
drivers/net/e1000/e1000_hw.h +9 -3
@@ -36,7 +36,6 @@#include "e1000_osdep.h" -/* Forward declarations of structures used by the shared code */ struct e1000_hw ;struct e1000_hw_stats ;
@@ -370,6 +369,7 @@#define E1000_DEV_ID_82546GB_SERDES 0x107B#define E1000_DEV_ID_82546GB_PCIE 0x108A#define E1000_DEV_ID_82547EI 0x1019 +#define NODE_ADDRESS_SIZE 6#define ETH_LENGTH_OF_ADDRESS 6
@@ -1735,6 +1735,9 @@#define PHY_1000T_STATUS 0x0A/* 1000Base-T Status Reg */ #define PHY_EXT_STATUS 0x0F/* Extended Status Reg */ +#define MAX_PHY_REG_ADDRESS 0x1F/* 5 bit address bus (0-0x1F) */ +#define MAX_PHY_MULTI_PAGE_REG 0xF/* Registers equal on all pages */ +/* M88E1000 Specific Registers */ #define M88E1000_PHY_SPEC_CTRL 0x10/* PHY Specific Control Register */ #define M88E1000_PHY_SPEC_STATUS 0x11/* PHY Specific Status Register */
@@ -1795,8 +1798,7 @@#define IGP01E1000_ANALOG_REGS_PAGE 0x20C0 -#define MAX_PHY_REG_ADDRESS 0x1F/* 5 bit address bus (0-0x1F) */ -#define MAX_PHY_MULTI_PAGE_REG 0xF/*Registers that are equal on all pages*/ +/* PHY Control Register */ #define MII_CR_SPEED_SELECT_MSB 0x0040/* bits 6,13: 10=1000, 01=100, 00=10 */ #define MII_CR_COLL_TEST_ENABLE 0x0080/* Collision test enable */
@@ -2099,7 +2101,11 @@#define IGP01E1000_ANALOG_FUSE_FINE_1 0x0080#define IGP01E1000_ANALOG_FUSE_FINE_10 0x0500 +/* Bit definitions for valid PHY IDs. */ +/* I = Integrated +* E = External +*/ #define M88E1000_E_PHY_ID 0x01410C50#define M88E1000_I_PHY_ID 0x01410C30#define M88E1011_I_PHY_ID 0x01410C20
drivers/net/e1000/e1000_main.c +227 -24
430 lines not on this page · raw message
drivers/net/tulip/21142.c +1 -1
@@ -14,8 +14,8 @@*/ -#include "tulip.h" #include <linux/pci.h> +#include "tulip.h" #include <linux/delay.h>
drivers/net/tulip/eeprom.c +1 -0
@@ -14,6 +14,7 @@*/ +#include <linux/pci.h> #include "tulip.h" #include <linux/init.h> #include <asm/unaligned.h>
drivers/net/tulip/interrupt.c +1 -1
@@ -14,10 +14,10 @@*/ +#include <linux/pci.h> #include "tulip.h" #include <linux/config.h> #include <linux/etherdevice.h> -#include <linux/pci.h> int tulip_rx_copybreak;
drivers/net/tulip/media.c +1 -0
@@ -18,6 +18,7 @@#include <linux/mii.h> #include <linux/init.h> #include <linux/delay.h> +#include <linux/pci.h> #include "tulip.h"
drivers/net/tulip/pnic.c +1 -0
@@ -15,6 +15,7 @@*/ #include <linux/kernel.h> +#include <linux/pci.h> #include "tulip.h"
drivers/net/tulip/pnic2.c +1 -1
@@ -76,8 +76,8 @@ -#include "tulip.h" #include <linux/pci.h> +#include "tulip.h" #include <linux/delay.h>
drivers/net/tulip/timer.c +1 -0
@@ -14,6 +14,7 @@*/ +#include <linux/pci.h> #include "tulip.h"
drivers/net/tulip/tulip.h +14 -1
@@ -146,6 +146,9 @@ TxIntr = 0x01, }; +/* bit mask for CSR5 TX/RX process state */ +#define CSR5_TS 0x00700000 +#define CSR5_RS 0x000e0000enum tulip_mode_bits { TxThreshold = (1 <<22 ),
@@ -484,9 +487,19 @@u32 csr6 =inl (ioaddr +CSR6 );if (csr6 & RxTx) { +unsigned i=1300 /10 ;outl (csr6 & ~RxTx, ioaddr +CSR6 );barrier (); - (void )inl (ioaddr +CSR6 );/* mmio sync */ +/* wait until in-flight frame completes. +* Max time @ 10BT: 1500*8b/10Mbps == 1200us (+ 100us margin) +* Typically expect this loop to end in < 50us on 100BT. +*/ +while (--i && (inl (ioaddr +CSR5 ) & (CSR5_TS |CSR5_RS ))) +udelay (10 ); + +if (!i) +printk (KERN_DEBUG "%s: tulip_stop_rxtx() failed\n" , + tp->pdev->slot_name); } }
drivers/net/tulip/tulip_core.c +1 -1
@@ -20,8 +20,8 @@#include <linux/config.h> #include <linux/module.h> -#include "tulip.h" #include <linux/pci.h> +#include "tulip.h" #include <linux/init.h> #include <linux/etherdevice.h> #include <linux/delay.h>