Hi Ilya, Thanks for the comments.
On Thu, May 30, 2019 at 12:47 AM Ilya Maximets <[email protected]> wrote: > > On 29.05.2019 20:57, William Tu wrote: > > On Wed, May 29, 2019 at 10:51 AM William Tu <[email protected]> wrote: > >> > > Thanks for the logs. It looks like a bug in DPDK. > Does rte_eal_hotplug_remove() works without issues? > Unfortunately, I have no setup to test myself. Right, no issue. reason below: > > You may also use following patch to get more information about detaching > failure: https://mail.openvswitch.org/pipermail/ovs-dev/2019-May/359367.html Thanks, -1 is returned 2019-05-30T19:41:26.467Z|00055|netdev_dpdk|ERR|Device 'vdev:net_af_xdp0,iface=enp2s0,queue=0' can not be detached: Operation not permitted. The root cause is at rte_dev_remove local_dev_remove ret = dev->bus->unplug(dev); rte_pmd_af_xdp_remove() At rte_pmd_af_xdp_remove() /* find the ethdev entry */ eth_dev = rte_eth_dev_allocated(rte_vdev_device_name(dev)); if (eth_dev == NULL) return -1; // failed here And the reason rte_eth_dev_allocated find no device is that at _rte_eth_dev_allocated the rte_eth_devices[i].data is an empty string. And the reason is that at rte_eth_dev_close it calls if ((dev->data->dev_flags & RTE_ETH_DEV_CLOSE_REMOVE) != 0) { /* new behaviour: send event + reset state + free all data */ rte_eth_dev_release_port(dev); the rte_eth_dev_release_port clear the dev->data->name memset(eth_dev->data, 0, sizeof(struct rte_eth_dev_data)); > > Another possible issue is that you're using driver base name (net_af_xdp) > as a name of DPDK device. Maybe this causes some issues. > Try following devargs: "vdev:net_af_xdp0,iface=enp2s0,queue=0". Yes, I use the above comment. Regards, William > > Best regards, Ilya Maximets. > > >>> > >>> Another option you may try is: > >>> > >>> ovs-vsctl add-port br0 afxdp-p0 -- set interface afxdp-p0 type=dpdk \ > >>> options:dpdk-devargs="vdev:net_af_xdp,iface=enp2s0,queue=0" > >>> > >> It actually works! When adding the device: > >> 2019-05-29T17:45:47.128Z|00044|netdev_dpdk|INFO|Device > >> 'vdev:net_af_xdp,iface=enp2s0,queue=0' attached to DPDK > >> 2019-05-29T17:45:47.128Z|00045|dpif_netdev|INFO|PMD thread on numa_id: > >> 0, core id: 11 created. > >> 2019-05-29T17:45:47.128Z|00046|dpif_netdev|INFO|There are 1 pmd > >> threads on numa node 0 > >> 2019-05-29T17:45:47.128Z|00047|dpdk|INFO|Device with port_id=0 already > >> stopped > >> 2019-05-29T17:45:47.208Z|00048|netdev_dpdk|WARN|Rx checksum offload is > >> not supported on port 0 > >> > >> However , when removing the device, some errors show up. > >> ovs-vsctl del-port br0 afxdp-p0 > >> 2019-05-29T17:47:00.318Z|00053|bridge|INFO|bridge br0: deleted > >> interface afxdp-p0 on port 1 > >> 2019-05-29T17:47:00.318Z|00054|dpif_netdev|INFO|PMD thread on numa_id: > >> 0, core id: 11 destroyed. > >> 2019-05-29T17:47:00.651Z|00055|dpdk|ERR|EAL: Driver cannot detach the > >> device (net_af_xdp) > >> 2019-05-29T17:47:00.651Z|00056|dpdk|ERR|EAL: Failed to detach device > >> on primary process > >> 2019-05-29T17:47:00.651Z|00057|netdev_dpdk|ERR|Device > >> 'vdev:net_af_xdp,iface=enp2s0,queue=0' can not be detached > >> > >> I also measured the performance, it works fine and shows around 7Mpps. > >> > >>> so DPDK will not have to guess the bus type. > >>> > >>>> > >>>> $ ovs-vsctl show > >>>> Port "afxdp-p0" > >>>> Interface "afxdp-p0" > >>>> type: dpdk > >>>> options: {dpdk-devargs="net_af_xdp,iface=enp2s0,queue=0"} > >>>> > >>>> The performance of physical device loopback shows around 7Mpps with 64B > >>>> pkt. > >>>> > >>>> $ ovs-ofctl add-flow br0 "in_port=afxdp-p0, \ > >>>> > >>>> actions=set_field:14->in_port,set_field:a0:36:9f:33:b1:40->dl_src,afxdp-p0" > >>>> > >>>> Note: I have to set e_RTE_METER_GREEN to 0 to pass compile. > >>> > >>> You may use 'dpdk-latest' OVS branch. The proper fix exists there. > >>> In general, patches that intended to work only with latest DPDK that > >>> not yet supported on master should be made on top of 'dpdk-latest' > >>> branch and have [PATCH dpdk-latest] subject prefix. > >> > >> Got it, thank you. > >> William > >> > >>> > >>> Best regards, Ilya Maximets. > > > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
