On Tue, Sep 01, 2015 at 11:38:31AM +0000, Iremonger, Bernard wrote: > Hi THomas, > > <snip> > > > > @@ -424,7 +425,10 @@ rte_eth_dev_socket_id(uint8_t port_id) { > > > if (!rte_eth_dev_is_valid_port(port_id)) > > > return -1; > > > - return rte_eth_devices[port_id].pci_dev->numa_node; > > > + if (rte_eth_devices[port_id].dev_type == RTE_ETH_DEV_PCI) > > > + return rte_eth_devices[port_id].pci_dev->numa_node; > > > + else > > > + return rte_eth_devices[port_id].data->numa_node; > > > > Clearly not the way to go. > > We should remove the special cases (PCI, PDEV, VDEV) instead of adding > > more checks. > > The dev_type field is not new, just using it now to distinguish between PCI > and non PCI devices. > > I have moved some of the RTE_PCI_DRV flags to a new dev_flags field in struct > rte_eth_dev{}, > These flags are independent of the driver type (PCI or non PCI). > Do you have view on this new dev_flags field and macros? > > Regards, > > Bernard. > Just to give my 2c.
The branch in the snippet above should not exist. Each PMD should set the data numa_node and the flags fields appropriately at initialization, either directly or by copying in the relevant data from the interface specific structure e.g. pci. The ethdev should never need to check the device type here, it should always just read data->numa_node. /Bruce