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
