Subject: Re: e1000 -> 82540EM on linux 2.6.0-test[45] very slow in one direction

From: Ookhoi <[email-masked]>
Date: Fri, 3 Oct 2003 12:30:25 +0200

Hi Florian and others,

Florian Zwoch wrote (ao):
> issue seems to partly solved. the e1000 driver seems to be ok!
> i reconfigured my kernel and intentionally left out netfilter options. 
> after that my network performance was back to normal.
> 
> netfilter was only compiled in the kernel. it was not used with any rules!
> 
> so my wild guess would be that something with the netfilter code (i am 
> not 100% sure it was netfilter.. _maybe_ it was some small odd kernel 
> option i accidently enabled/disabled) is broken since test3 (again 
> uncertified. but i firstly noticed this switching from test3 to test4).

I have the same problem with a dual port gigabit intel nic. Download is
very fast, upload around 40k/sec.

Kernel is 2.6.0-test6
Nic is dual port gigabit intel 82546EB
The nic is connected to a 100Mbit switch, only one port in use.

If I do 'ethtool -A eth0 tx on' the machine is offline for 50 seconds.
When it is back online the upload is fast for a few seconds, and then
returns to its old speed. Full 'ethtool -d eth0' output below.

I have netfilter enabled, and will try another -test6 kernel with
netfilter not compiled in to see if that indeed makes a difference.

Btw, I had to compile the e1000 driver as a module. Compiled in it
doesn't work, as is stated on the intel support page:

http://www.intel.com/support/network/adapter/1000/linux/e1000.htm

" This driver is only supported as a loadable module at this time. Intel
is not supplying patches against the kernel source to allow for static
linking of the driver."

This is not clear from the kernel config help. A patch against
2.6.0-test6 is attached (I don't know how to only give n/m as an
option).

Btw2, can somebody please explain what the option E1000_NAPI does?

"
      Use Rx Polling (NAPI) (E1000_NAPI) [N/y] (NEW) ?

Sorry, no help available for this option yet.
"

Thanks in advance.

ethtool -d eth0 gives:

MAC Registers
-------------
0x00000: CTRL (Device control register)  0x08F00249
      Duplex:                            full
      Endian mode (buffers):             little
      Link reset:                        reset
      Set link up:                       1
      Invert Loss-Of-Signal:             no
      Receive flow control:              enabled
      Transmit flow control:             disabled
      VLAN mode:                         disabled
      Auto speed detect:                 disabled
      Speed select:                      1000Mb/s
      Force speed:                       no
      Force duplex:                      no
0x00008: STATUS (Device status register) 0x0000BB43
      Duplex:                            full
      Link up:                           link config
      TBI mode:                          disabled
      Link speed:                        100Mb/s
      Bus type:                          PCI-X
      Bus speed:                         133MHz
      Bus width:                         64-bit
0x00100: RCTL (Receive control register) 0x00008002
      Receiver:                          enabled
      Store bad packets:                 disabled
      Unicast promiscuous:               disabled
      Multicast promiscuous:             disabled
      Long packet:                       disabled
      Descriptor minimum threshold size: 1/2
      Broadcast accept mode:             accept
      VLAN filter:                       disabled
      Cononical form indicator:          disabled
      Discard pause frames:              filtered
      Pass MAC control frames:           don't pass
      Receive buffer size:               2048
0x02808: RDLEN (Receive desc length)     0x00001000
0x02810: RDH   (Receive desc head)       0x00000014
0x02818: RDT   (Receive desc tail)       0x00000010
0x02820: RDTR  (Receive delay timer)     0x00000000
0x00400: TCTL (Transmit ctrl register)   0x0004010A
      Transmitter:                       enabled
      Pad short packets:                 enabled
      Software XOFF Transmission:        disabled
      Re-transmit on late collision:     disabled
0x03808: TDLEN (Transmit desc length)    0x00001000
0x03810: TDH   (Transmit desc head)      0x000000DC
0x03818: TDT   (Transmit desc tail)      0x000000DC
0x03820: TIDV  (Transmit delay timer)    0x00000040
--- drivers/net/Kconfig.orig	2003-10-03 12:17:48.000000000 +0200
+++ drivers/net/Kconfig	2003-10-03 12:27:56.000000000 +0200
@@ -1876,9 +1876,12 @@
 	  More specific information on configuring the driver is in 
 	  <file:Documentation/networking/e1000.txt>.
 
-	  To compile this driver as a module, choose M here and read
-	  <file:Documentation/networking/net-modules.txt>.  The module
-	  will be called e1000.
+	  This driver is only supported as a loadable module at this
+	  time. Intel is not supplying patches against the kernel source
+	  to allow for static linking of the driver.
+
+	  Read <file:Documentation/networking/net-modules.txt>. The
+	  module will be called e1000.
 
 config E1000_NAPI
 	bool "Use Rx Polling (NAPI)"