you might be able to tune ITR using ethtool -C ethx rx-usecs N

you may also want to increase or decrease the number of receive buffers using 
ethtool -G ethx rx N

if the stack consumes too many cycles per packet it is normal for the driver to 
drop frames, that is what is architected to happen with NAPI.

you can try turning on multiple RX queues with IGB.   you failed to mention 
what kernel version you're using.  Or maybe you should go the other way and 
disable MSI-X if it is enabled (make it more like 2.4 kernel)



-----Original Message-----
From: Raghukrishna Hegde [mailto:[email protected]] 
Sent: Thursday, February 26, 2009 4:19 AM
To: Naveen Chandra M J; [email protected]
Cc: Puneet Tutliani; Arindam Chatterjee
Subject: Re: [E1000-devel] issue in igb driver : Observing high value in 
rx_missed_errors & rx_no_buffer_count ( in Linux kernel 2.6)

Naveen,

   It seems you have not attached the register dump

--raghu.

 

________________________________

From: Naveen Chandra M J 
Sent: Thursday, February 26, 2009 5:35 PM
To: '[email protected]'
Cc: Arindam Chatterjee; Puneet Tutliani; Raghukrishna Hegde
Subject: issue in igb driver : Observing high value in rx_missed_errors
& rx_no_buffer_count ( in Linux kernel 2.6)

 

Hi All,

  

  We are running the igb driver in 2.6 kernel (running in polling mode
and PBA is 34K) for the Nic Card "Intel Corporation 82575EB Gigabit
Network Ethernet controller (-rev 02).".But we are seeing some problem
in increasing "rx_no_buffer_count (RNBC)" and "rx_missed_errors (MPC)"
values when we send UDP traffic with 200k to 300k PPS and packet size is
256 or 512.  We are seeing high numbers in rx_missed_errors and very
small numbers in rx_no_buffer_count. 

                                                   But we are not facing
such problem when we run the same driver in Linux 2.4 for the Nic Card
"Intel Corporation 82575EB Gigabit Network Ethernet controller (-rev
02)".

   

 

 Here is the ethtool dump for particular interface during test: (Driver:
igb and Kernel 2.6)  

ethtool -S eth8

NIC statistics:

     rx_packets: 23352919184

     tx_packets: 0

     rx_bytes: 5978344567552

     tx_bytes: 0

     rx_broadcast: 0

     tx_broadcast: 0

     rx_multicast: 0

     tx_multicast: 0

     rx_errors: 0

     tx_errors: 0

     tx_dropped: 0

     multicast: 0

     collisions: 0

     rx_length_errors: 0

     rx_over_errors: 0

     rx_crc_errors: 0

     rx_frame_errors: 0

     rx_no_buffer_count: 975831

     rx_missed_errors: 3019559561

     tx_aborted_errors: 0

     tx_carrier_errors: 0

     tx_fifo_errors: 0

     tx_heartbeat_errors: 0

     tx_window_errors: 0

     tx_abort_late_coll: 0

     tx_deferred_ok: 0

     tx_single_coll_ok: 0

     tx_multi_coll_ok: 0

     tx_timeout_count: 0

     tx_restart_queue: 0

     rx_long_length_errors: 0

     rx_short_length_errors: 0

     rx_align_errors: 0

     tx_tcp_seg_good: 0

     tx_tcp_seg_failed: 0

     rx_flow_control_xon: 0

     rx_flow_control_xoff: 0

     tx_flow_control_xon: 0

     tx_flow_control_xoff: 0

     rx_long_byte_count: 5978344567552

     rx_csum_offload_good: 23352918900

     rx_csum_offload_errors: 0

     rx_header_split: 0

     alloc_rx_buff_failed: 0

     tx_smbus: 0

     rx_smbus: 0

     dropped_smbus: 0

 

 

I am also attaching the register dump value for particular interface:

 

 1.  " RegisterDumpForIgbDriverOfKernel2.6.txt " : Which provides
register dump value for the particular interface in the igb driver    (
we are facing problem in
this driver , which is running in polling mode) ---  Here Linux kernel
is 2.6 .24 

 

 2. "RegisterDumpForIgbDriverOfKernel2.4.txt" : Which provides register
dump values for the particular interface in the IGB driver (Working fine
and running in NAPI mode  ) - --Here the Linux Kernel is 2.4 ,this is
for reference 

 

 

       We are seeing some difference in register value on both Register
dump. I have listed some register names where we see different values in
both Register dump

#define E1000_CTRL     0x00000  /* Device Control - RW */

#define E1000_CTRL_DUP 0x00004  /* Device Control Duplicate (Shadow) -
RW */

#define E1000_STATUS   0x00008  /* Device Status - RO */ 

#define E1000_EECD     0x00010  /* EEPROM/Flash Control - RW */  

#define E1000_MDIC     0x00020  /* MDI Control - RW */          

#define E1000_FEXTNVM 0x00028 and #define E1000_FCAL     0x00028 /* Flow
Control Address Low - RW */ and  /* Future Extended NVM - RW */   

#define E1000_CONNSW   0x00034 /* Copper/Fiber switch control - RW */

#define E1000_ITR      0x000C4  /* Interrupt Throttling Rate - RW */ 

#define E1000_TCTL_EXT 0x00404  /* Extended TX Control - RW */

#define E1000_TIPG     0x00410  /* TX Inter-packet gap -RW */

#define E1000_TBT      0x00448  /* TX Burst Timer - RW */

#define E1000_AIT      0x00458  /* Adaptive Interframe Spacing Throttle
- RW */  

 


Actually we wanted to know which of these registers can act as a tunable
knob in overcoming the rx_missed_errors and  rx_no_buffer  count issue.

 

Thanks & Regards,

Naveen Chandra MJ

 

 

 

Regards,

 Naveen Chandra MJ

 


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel

Reply via email to