[dpdk-dev] transmit lockup on i210

2017-01-23 Thread Dennis Montgomery
Hello DPDK community,

I haven’t found any relevant errata/fix notes so I’m asking here. I’m running 
into a transmit lockup on an i210 NIC: the transmit descriptor ring fills up 
and never drains. I’ve instrumented my code to dump out all extended stats and 
registers and found that when the transmitter gets ‘stuck’, the E1000_TDH 
register pegs to a particular index, and TDT catches up to it.

I have the transmitter configured with these thresholds: pthresh == 8 hthresh 
== 1 wthresh == 16, four queues, 512 tx descriptors. I’m running DPDK 16.07.

When this happens, restarting my application (including a NIC unbind/bind 
cycle) fixes it up, so the hardware isn’t wedged.

I wonder if (a) anyone has run into a tx lockup with the IGB driver, and/or (b) 
what should I be looking at?

Regards, and thanks for any help,

Dennis Montgomery

[dpdk-dev] virtio: rte_ethdev port_ids consumed by rte_eal_init()

2018-04-12 Thread Dennis Montgomery
Hi,

I've run into a problem with DPDK v17.08, when built with
CONFIG_RTE_LIBRTE_VIRTIO_PMD=y.  After rte_eal_init() calls rte_bus_probe()
we end up with the first several entries (matching the number of virtio-pci
eth devices on the system) in rte_eth_devices[] showing state ==
RTE_ETH_DEV_ATTACHED.  Subsequently when we try to allocate a new device
(via rte_eth_dev_attach()), rte_eth_dev_find_free_port() returns a nonzero
number the for the first device we really want to use.  The device
functions properly so this isn't too much of a problem, but effectively it
limits the number of virtio eth devices to be half of RTE_MAX_ETHPORTS.

I'd greatly appreciate some guidance on how to work around this - i.e.
whether it's fixed in a newer release or if the structures filled in by
rte_bus_probe() can be started without attaching, or whatever.

Thanks in advance,

Dennis Montgomery


[dpdk-dev] How can I recover from CONFIG_RTE_MAX_MEMSEG overrun?

2015-03-11 Thread Dennis Montgomery
Hello,

I?m running into an occasional problem where rte_eal_init() returns -ENOMEM and 
the following error is logged:

EAL: Can only reserve 991 pages from 1024 requested
Current CONFIG_RTE_MAX_MEMSEG=256 is not enough

When this happens a reboot will take care of it, but I?m hoping for a more 
elegant solution. I don?t have much direct experience with hugetlbfs so I?m 
hoping someone on this list can suggest something.

I did boost max-memseg and it works, but I?m worried that it will just crop up 
again - I instrumented rte_eal_hugepage_init() and found that the number of 
segments used slowly creeps up as I cycle my application (i.e. repeated 
rte_eal_init() invocations with process-type == primary). I?m theorizing that 
hugetlbfs fragments (for lack of a better phrase) over time. Does anyone on the 
list know of a way to reset hugetlbfs short of rebooting?

DPDK version:
EAL: RTE Version: 'RTE 1.8.0-rc0'
Linux version 3.16.6-200.fc20.x86_64 (mockbuild at 
bkernel01.phx2.fedoraproject.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-7) 
(GCC) ) #1 SMP Wed Oct 15 13:06:51 UTC 2014


Thank you,

Dennis Montgomery

PS this is my first post to this list; apologies if I?m violating any protocols.