Hi, 

I have an issue with rte_eth_rx_burst() for IGC poll mode driver never returning any packets and need some advice.

I have this network port:
09:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)

Bound to igb_uio:
Network devices using DPDK-compatible driver
============================================
0000:09:00.0 'Ethernet Controller I225-V 15f3' drv=igb_uio unused=igc

I'm testing this both with testpmd and my own app, which works fine with other drivers such as net/ena and net/i40e. I'm using single RX/TX queue pair with default configs with rte_eth_promiscuous_enable() and rte_eth_allmulticast_enable().

The device seems to rte_eth_dev_start() fine, and rte_eth_stats_get() seem to be detecting inbound packets. Below is the output from testpmd:

Press enter to exit
eth_igc_interrupt_action():  Port 0: Link Up - speed 1000 Mbps - full-duplex

Port 0: link state change event
^CTelling cores to stop...
Waiting for lcores to finish...

  ---------------------- Forward statistics for port 0  ----------------------
  RX-packets: 129            RX-dropped: 800           RX-total: 929
  TX-packets: 0              TX-dropped: 0             TX-total: 0
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 129            RX-dropped: 800           RX-total: 929
  TX-packets: 0              TX-dropped: 0             TX-total: 0
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.

However, rte_eth_rx_burst() never returns anything, neither in testpmd nor in my own app.

In my own app, I log both rte_eth_stats_get() and non-zero xstats from rte_eth_xstats_get_by_id():

07:02:13.406873186 INF stats.rx                                : 0
07:02:13.406892616 INF dev_stats.ipackets                      : 78
07:02:13.406903636 INF dev_stats.opackets                      : 0
07:02:13.406914166 INF dev_stats.imissed                       : 0
07:02:13.406924536 INF dev_stats.ierrors                       : 0
07:02:13.406934116 INF dev_stats.oerrors                       : 0
07:02:13.406943956 INF dev_stats.rx_nombuf                     : 0
07:02:13.407247777 INF xstats rx_good_packets                  : 78
07:02:13.407257147 INF xstats rx_good_bytes                    : 17205
07:02:13.407265267 INF xstats rx_size_64_packets               : 6
07:02:13.407274627 INF xstats rx_size_65_to_127_packets        : 31
07:02:13.407285757 INF xstats rx_size_128_to_255_packets       : 22
07:02:13.407297537 INF xstats rx_size_256_to_511_packets       : 16
07:02:13.407309127 INF xstats rx_size_512_to_1023_packets      : 3
07:02:13.407321327 INF xstats rx_broadcast_packets             : 8
07:02:13.407331597 INF xstats rx_multicast_packets             : 64
07:02:13.407346357 INF xstats rx_total_packets                 : 78
07:02:13.407355547 INF xstats rx_total_bytes                   : 17205
07:02:13.407364127 INF xstats rx_sent_to_host_packets          : 78
07:02:13.407375347 INF xstats interrupt_assert_count           : 1

Still, rte_eth_rx_burst() never returns anything. 

It's worthwhile to note that rte_eth_rx_burst() works fine when I, instead of net/igc, use net/ena (with ENA card) or net/i40e (Intel x710 card).

The debug log from EAL and net/igc is attached, in case that helps.
There's a warning "igc_rx_init(): forcing scatter mode", but I've already tried changing my mbuf sizes so that the warning goes away but that also didn't help.

Any advice?

Thanks,
Fabio