nic_uio: fix device binding at boot
authorBruce Richardson <bruce.richardson@intel.com>
Fri, 24 Mar 2017 14:30:11 +0000 (14:30 +0000)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 4 Apr 2017 10:28:03 +0000 (12:28 +0200)
commit8415429e43cc8df6215d17ac150f75f483058c29
treee94bc29c0be7129fe2a2d056a74bed49eaee17a2
parentdd18a2f0b27614841f258c567407093c3d4fd6c5
nic_uio: fix device binding at boot

When loading nic_uio from /boot/loader.conf as specified in the Getting
Started Guide doc, the NIC devices were not bound at boot. Unloading the
nic_uio driver and reloading it would cause them to be bound, however.

The root cause appears to be the fact that when the module is loaded at
boot, the call to find the pci device when parsing the b:d:f parameter
fails to return the device. That means that later on when the device
is probed as part of a PCI scan, no action is taken as it's not recorded
as a device to be used.

We fix this by having the b:d:f string parsed again on probe if the
initial check to see if it's an already-known device fails. In my tests,
this causes the NIC devices to be successfully bound at boot time, as
well as leaving things working as before in the case the module is loaded
post-boot.

Fixes: 764bf26873b9 ("add FreeBSD support")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/bsdapp/nic_uio/nic_uio.c