Hi all,
I'm trying to solve Rx overflow problem.
I am using USRP N210 and CBX daughter board. As I know, my machine's maximum sample rate is up to 25 MSps. Yes, it works well at Tx (ex ./benchmark -f 2.5G -r 25000000).
However, when I use USRP to Rx mode (ex ./benchmark -f 2.5G -r 25000000), letter 'D' (overflow) be occurred.
Rx overflow 'D' is happened when host cannot consume packet fast enough.
I observed incoming packet from USRP to host using wireshark tool.
After Rx command be launched (ex ./benchmark -f 2.5G -r 25000000), USRP sends many packet to host very fast.
So, I checked cpu utilization at those moments. As a result, cpu utilization is over 200% (PC has 2.7GHz quad-cores). I couldn't believe it.
However, I found "interrupt coalescing".
Incoming packet occurs interrupt to host and interrupt coalescing adjust how long/many packets make one interrupt to PC.
So, I changed these value using ethtool -C eth0 rx-usecs 1000 rx-frames 200.
But, it doesn't any effect for my case.
I'm using tg3 network driver and my setting like below:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Link partner advertised link modes: 1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: Transmit-only
Link partner advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: on
Supports Wake-on: g
Wake-on: g
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
Did I miss something ?
How can I solve Rx overflow problem at high sample rate ?
Thanks.