Commit 948d8589 authored by Jeff Garzik's avatar Jeff Garzik

Fix several bugs in DL2K Gigabit Ethernet driver, updating to

vendor revision 1.08.
Contributed by the vendor, D-Link.
parent d4446f7a
D-Link DL2000-based Gigabit Ethernet Adapter Installation D-Link DL2000-based Gigabit Ethernet Adapter Installation
for Linux for Linux
Nov 12, 2001 Jan 02, 2002
Contents Contents
======== ========
...@@ -182,7 +182,7 @@ driver. ...@@ -182,7 +182,7 @@ driver.
mtu=packet_size - Specifies the maximum packet size. default mtu=packet_size - Specifies the maximum packet size. default
is 1500. is 1500.
media=xxxxxxxxx - Specifies the media type the NIC operates at. media=media_type - Specifies the media type the NIC operates at.
autosense Autosensing active media. autosense Autosensing active media.
10mbps_hd 10Mbps half duplex. 10mbps_hd 10Mbps half duplex.
10mbps_fd 10Mbps full duplex. 10mbps_fd 10Mbps full duplex.
...@@ -195,28 +195,41 @@ media=xxxxxxxxx - Specifies the media type the NIC operates at. ...@@ -195,28 +195,41 @@ media=xxxxxxxxx - Specifies the media type the NIC operates at.
2 10Mbps full duplex. 2 10Mbps full duplex.
3 100Mbps half duplex. 3 100Mbps half duplex.
4 100Mbps full duplex. 4 100Mbps full duplex.
5 1000Mbps full duplex. 5 1000Mbps half duplex.
6 1000Mbps half duplex. 6 1000Mbps full duplex.
By default, the NIC operates at autosense. By default, the NIC operates at autosense.
Note that only 1000mbps_fd and 1000mbps_hd Note that only 1000mbps_fd and 1000mbps_hd
types are available for fiber adapter. types are available for fiber adapter.
vlan=x - Specifies the VLAN ID. If vlan=0, the vlan=[0|1] - Specifies the VLAN ID. If vlan=0, the
Virtual Local Area Network (VLAN) function is Virtual Local Area Network (VLAN) function is
disable. disable.
jumbo=x - Specifies the jumbo frame support. If jumbo=1, jumbo=[0|1] - Specifies the jumbo frame support. If jumbo=1,
the NIC accept jumbo frames. By default, this the NIC accept jumbo frames. By default, this
function is disabled. function is disabled.
Jumbo frame usually improve the performance Jumbo frame usually improve the performance
int gigabit. int gigabit.
int_count - Rx frame count each interrupt. rx_coalesce=n - Rx frame count each interrupt.
int_timeout - Rx DMA wait time for an interrupt. Proper rx_timeout=n - Rx DMA wait time for an interrupt. Proper
values of int_count and int_timeout bring values of rx_coalesce and rx_timeout bring
a conspicuous performance in the fast machine. a conspicuous performance in the fast machine.
Ex. int_count=5 and int_timeout=750 Ex. rx_coalesce=5 and rx_timeout=750
tx_coalesce=n - Tx transmit count each TxComp interrupt.
Setting value larger than 1 will improve
performance, but this is possible to lower
stability in slow UP machines. By default,
tx_coalesce=1. (dl2k)
tx_flow=[1|0] - Specifies the Tx flow control. If tx_flow=1,
the Tx flow control enable.
rx_flow=[1|0] - Specifies the Rx flow control. If rx_flow=1,
the Rx flow control enable.
Configuration Script Sample Configuration Script Sample
=========================== ===========================
......
This diff is collapsed.
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/time.h> #include <linux/time.h>
#define TX_RING_SIZE 128 #define TX_RING_SIZE 128
#define TX_QUEUE_LEN 96 /* Limit ring entries actually used. */ #define TX_QUEUE_LEN 120 /* Limit ring entries actually used. */
#define RX_RING_SIZE 128 #define RX_RING_SIZE 128
#define TX_TOTAL_SIZE TX_RING_SIZE*sizeof(struct netdev_desc) #define TX_TOTAL_SIZE TX_RING_SIZE*sizeof(struct netdev_desc)
#define RX_TOTAL_SIZE RX_RING_SIZE*sizeof(struct netdev_desc) #define RX_TOTAL_SIZE RX_RING_SIZE*sizeof(struct netdev_desc)
...@@ -183,12 +183,12 @@ enum IntStatus_bits { ...@@ -183,12 +183,12 @@ enum IntStatus_bits {
/* Bits in the ReceiveMode register. */ /* Bits in the ReceiveMode register. */
enum ReceiveMode_bits { enum ReceiveMode_bits {
ReceiveIPMulticast = 0x0020,
ReceiveMulticastHash = 0x0010,
ReceiveAllFrames = 0x0008,
ReceiveBroadcast = 0x0004,
ReceiveMulticast = 0x0002,
ReceiveUnicast = 0x0001, ReceiveUnicast = 0x0001,
ReceiveMulticast = 0x0002,
ReceiveBroadcast = 0x0004,
ReceiveAllFrames = 0x0008,
ReceiveMulticastHash = 0x0010,
ReceiveIPMulticast = 0x0020,
ReceiveVLANMatch = 0x0100, ReceiveVLANMatch = 0x0100,
ReceiveVLANHash = 0x0200, ReceiveVLANHash = 0x0200,
}; };
...@@ -650,20 +650,20 @@ struct netdev_private { ...@@ -650,20 +650,20 @@ struct netdev_private {
struct pci_dev *pdev; struct pci_dev *pdev;
spinlock_t lock; spinlock_t lock;
struct net_device_stats stats; struct net_device_stats stats;
unsigned int rx_buf_sz; /* Based on MTU+slack. */ unsigned int rx_buf_sz; /* Based on MTU+slack. */
unsigned int speed; /* Operating speed */ unsigned int speed; /* Operating speed */
unsigned int vlan; /* VLAN Id */ unsigned int vlan; /* VLAN Id */
unsigned int chip_id; /* PCI table chip id */ unsigned int chip_id; /* PCI table chip id */
unsigned int int_count; /* Maximum frames each RxDMAComplete intr */ unsigned int rx_coalesce; /* Maximum frames each RxDMAComplete intr */
unsigned int int_timeout; /* Wait time between RxDMAComplete intr */ unsigned int rx_timeout; /* Wait time between RxDMAComplete intr */
unsigned int tx_full:1; /* The Tx queue is full. */ unsigned int tx_full:1; /* The Tx queue is full. */
unsigned int full_duplex:1; /* Full-duplex operation requested. */ unsigned int full_duplex:1; /* Full-duplex operation requested. */
unsigned int an_enable:2; /* Auto-Negotiated Enable */ unsigned int an_enable:2; /* Auto-Negotiated Enable */
unsigned int jumbo:1; /* Jumbo frame enable */ unsigned int jumbo:1; /* Jumbo frame enable */
unsigned int coalesce:1; /* Rx coalescing enable */ unsigned int coalesce:1; /* Rx coalescing enable */
unsigned int tx_flow:1; /* Tx flow control enable */ unsigned int tx_flow:1; /* Tx flow control enable */
unsigned int rx_flow:1; /* Rx flow control enable */ unsigned int rx_flow:1; /* Rx flow control enable */
unsigned int phy_media:1; /* 1: fiber, 0: copper */ unsigned int phy_media:1; /* 1: fiber, 0: copper */
struct netdev_desc *last_tx; /* Last Tx descriptor used. */ struct netdev_desc *last_tx; /* Last Tx descriptor used. */
unsigned long cur_rx, old_rx; /* Producer/consumer ring indices */ unsigned long cur_rx, old_rx; /* Producer/consumer ring indices */
unsigned long cur_tx, old_tx; unsigned long cur_tx, old_tx;
...@@ -698,7 +698,12 @@ static struct pci_device_id rio_pci_tbl[] __devinitdata = { ...@@ -698,7 +698,12 @@ static struct pci_device_id rio_pci_tbl[] __devinitdata = {
MODULE_DEVICE_TABLE (pci, rio_pci_tbl); MODULE_DEVICE_TABLE (pci, rio_pci_tbl);
#define TX_TIMEOUT (4*HZ) #define TX_TIMEOUT (4*HZ)
#define PACKET_SIZE 1536 #define PACKET_SIZE 1536
#define MAX_JUMBO 8000
#define RIO_IO_SIZE 340 #define RIO_IO_SIZE 340
#define DEFAULT_RXC 5
#define DEFAULT_RXT 750
#define DEFAULT_TXC 1
#define MAX_TXC 8
#ifdef RIO_DEBUG #ifdef RIO_DEBUG
#define DEBUG_TFD_DUMP(x) debug_tfd_dump(x) #define DEBUG_TFD_DUMP(x) debug_tfd_dump(x)
#define DEBUG_RFD_DUMP(x,flag) debug_rfd_dump(x,flag) #define DEBUG_RFD_DUMP(x,flag) debug_rfd_dump(x,flag)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment