The test setup is as follows. I set the e1000 card in the promiscuous
mode and had SmartBits generate network traffic with speed varing from
100Mbps to 1Gbps. And I also created a program and run in 2650 to
count the number of packets received at 2650. The program count the
number of packets at the three difference levels: 1) driver level
(counted in /proc/net/dev), 2) backlog level (counded in
/proc/net/softnet_stat), and 3) user-space level (counting in Socket).
Without proper tuning of e1000, 2650 started to drop packets at the
speed arount 300Mbps. After tuning the driver of e1000 at
/etc/modules.conf we could achieve zero packet drop counted in the
driver level. But a lot of packet dropes were occurred at the backlog
level.
Then, I studied the protocol stack and found I can increase the size
of the backlog queue by increaseing
/proc/sys/net/core/netdev_max_backlog. The default was 300 and I
increased this value to 30000.
After the increment there were no packet drops at the backlog level
but the packets were dropped at the driver level.
This is a part that I do not understand. Why increasing the value of
/proc/sys/net/core/netdev_max_backlog resutled in the drop in the
driver.
The other question is about the MAC flow control. When the driver
started dropping packets after increasing the value of
/proc/sys/net/core/netdev_max_backlog 2650 sent a lot of MAC flow
control packets. What initiated the NIC card to generate the
flow-control packet and what situations are they generated?
Thank you in advance.