remove pci driver from vdevs
Subsystems (3)
v8 cover remove pci driver from vdevs
In reply to a message not in the archiveThere is a dummy pci driver in the vdev PMD's at present.
This patch set removes the pci driver from the vdev PMD's.
Changes have been made to librte_ether to handle vdevs and pdevs in the same way.
The following vdev PMD's have had the pci driver removed:
null
ring
bonding
pcapaf_packet
xenvirt
mpipe
All the pdev PMD's have been modified to copy the pci device info into eth_dev data.
Changes in v8:
rebase
changes to librte patch in response to comments
changes to bonding patch in response to comments
squashed pdev copy device info patches
squashed vdev copy device info patches
Changes in v7:
rebase to latest code.
Changes in v6:
Initialise data->drv_name with the PMD driver name in the vdevs. Remove two more branches on pci_dev from the bonding vdev.
Changes in v5:
rebase to latest code.
refactor patches to avoid potential problems with git bisect.
Changes in v4:
rebase to latest code.
add doxygen comments to rte_ethdev.h
update release notes in patch 0002.
Changes in v3:
rebase to latest code.
restructure patches 0002 and 0003 to fix compile issue in patch 0002.
Changes in V2:
rebase to latest code.
fix compile error in rte_ethdev.c when debug disabled.
remove Intel copyright from bnx2x, cxgbe, enic, mlx4, mpipe and null PMD's.
Bernard Iremonger (11):
librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
pdev: copy pci device info to eth_dev data
vdev: copy device info to eth_dev data
librte_ether: remove branches on pci_dev
null: remove pci device
ring: remove pci device
pcap: remove pci device
af_packet: remove pci device
xenvirt: remove pci device
mpipe: remove pci device
bonding: remove pci device
doc/guides/rel_notes/release_2_2.rst | 3 ++ drivers/net/af_packet/rte_eth_af_packet.c | 20 ++++------ drivers/net/bnx2x/bnx2x_ethdev.c | 3 ++ drivers/net/bonding/rte_eth_bond_8023ad.c | 4 +- drivers/net/bonding/rte_eth_bond_alb.c | 2 +- drivers/net/bonding/rte_eth_bond_api.c | 55 +++++++------------------ drivers/net/bonding/rte_eth_bond_pmd.c | 18 ++++----- drivers/net/bonding/rte_eth_bond_private.h | 2 +- drivers/net/cxgbe/cxgbe_ethdev.c | 3 ++ drivers/net/e1000/em_ethdev.c | 3 ++ drivers/net/e1000/igb_ethdev.c | 5 +++ drivers/net/enic/enic_ethdev.c | 1 + drivers/net/fm10k/fm10k_ethdev.c | 2 + drivers/net/i40e/i40e_ethdev.c | 3 ++ drivers/net/i40e/i40e_ethdev_vf.c | 2 + drivers/net/ixgbe/ixgbe_ethdev.c | 4 ++ drivers/net/mlx4/mlx4.c | 3 ++ drivers/net/mlx5/mlx5.c | 3 ++ drivers/net/mpipe/mpipe_tilegx.c | 10 +++-- drivers/net/null/rte_eth_null.c | 32 +++++---------- drivers/net/pcap/rte_eth_pcap.c | 31 +++++---------- drivers/net/ring/rte_eth_ring.c | 37 ++++------------- drivers/net/virtio/virtio_ethdev.c | 3 ++ drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 + drivers/net/xenvirt/rte_eth_xenvirt.c | 18 ++++----- lib/librte_eal/common/include/rte_pci.h | 3 +- lib/librte_ether/rte_ethdev.c | 64 +++++++++++++++++++----------- lib/librte_ether/rte_ethdev.h | 27 +++++++++++++ lib/librte_ether/rte_ether_version.map | 1 + 29 files changed, 187 insertions(+), 177 deletions(-)
Signature · 1 line
1.9.1
PATCH v8 1/11 librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
The driver fields have been added the rte_eth_dev_data so that it is no longer necessary access this data through the pci_dev pointer.
The following fields have been added to rte_eth_dev_data:
dev_flags, and macros for dev_flags.
kdrvnuma_nodedrv_name
add function rte_eth_copy_pci_info
remove branches on pci_dev
librte_eal: add RTE_KDRV_NONE for vdevs
--- lib/librte_eal/common/include/rte_pci.h | 3 ++- lib/librte_ether/rte_ethdev.c | 24 ++++++++++++++++++++++++ lib/librte_ether/rte_ethdev.h | 27 +++++++++++++++++++++++++++ lib/librte_ether/rte_ether_version.map | 1 + 4 files changed, 54 insertions(+), 1 deletion(-)
lib/librte_eal/common/include/rte_pci.h +2 -1
@@ -1,7 +1,7 @@/*- * BSD LICENSE * -* Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +* Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without
@@ -149,6 +149,7 @@ enum rte_kernel_driver {RTE_KDRV_VFIO ,RTE_KDRV_UIO_GENERIC ,RTE_KDRV_NIC_UIO , + RTE_KDRV_NONE, };/**
lib/librte_ether/rte_ethdev.c +24 -0
@@ -3229,3 +3229,27 @@ rte_eth_dev_get_dcb_info(uint8_t port_id,FUNC_PTR_OR_ERR_RET (*dev->dev_ops->get_dcb_info, -ENOTSUP );return (*dev->dev_ops->get_dcb_info)(dev, dcb_info); } + +void +rte_eth_copy_pci_info (struct rte_eth_dev *eth_dev,struct rte_pci_device *pci_dev) +{ +if ((eth_dev ==NULL ) || (pci_dev ==NULL )) { +PMD_DEBUG_TRACE ("NULL pointer eth_dev=%p pci_dev=%p\n" , + eth_dev, pci_dev); + } + + eth_dev->data->dev_flags =0 ; + +if (pci_dev->driver->drv_flags &RTE_PCI_DRV_NEED_MAPPING ) + eth_dev->data->dev_flags |=RTE_ETH_DEV_DRV_NEED_MAPPING ; +if (pci_dev->driver->drv_flags &RTE_PCI_DRV_FORCE_UNBIND ) + eth_dev->data->dev_flags |=RTE_ETH_DEV_DRV_FORCE_UNBIND ; +if (pci_dev->driver->drv_flags &RTE_PCI_DRV_INTR_LSC ) + eth_dev->data->dev_flags |=RTE_ETH_DEV_INTR_LSC ; +if (pci_dev->driver->drv_flags &RTE_PCI_DRV_DETACHABLE ) + eth_dev->data->dev_flags |=RTE_ETH_DEV_DETACHABLE ; + + eth_dev->data->kdrv = pci_dev->kdrv; + eth_dev->data->numa_node = pci_dev->numa_node; + eth_dev->data->drv_name = pci_dev->driver->name; +}
lib/librte_ether/rte_ethdev.h +27 -0
@@ -1551,8 +1551,21 @@ struct rte_eth_dev_data { all_multicast : 1, /**< RX all multicast mode ON(1) / OFF(0). */ dev_started : 1, /**< Device state: STARTED(1) / STOPPED(0). */ lro : 1; /**< RX LRO is ON(1) / OFF(0) */ +uint32_t dev_flags;/**< Flags controlling handling of device. */ +enum rte_kernel_driver kdrv;/**< Kernel driver passthrough */ +int numa_node;/**< NUMA node connection */ +const char *drv_name;/**< Driver name */ }; +/** Device needs PCI BAR mapping (done with either IGB_UIO or VFIO) */ +#define RTE_ETH_DEV_DRV_NEED_MAPPING 0x0001 +/** Device needs to be unbound even if no module is provided */ +#define RTE_ETH_DEV_DRV_FORCE_UNBIND 0x0002 +/** Device supports link state interrupt */ +#define RTE_ETH_DEV_INTR_LSC 0x0003 +/** Device supports detaching capability */ +#define RTE_ETH_DEV_DETACHABLE 0x0004 +/** * @internal * The pool of *rte_eth_dev* structures. The size of the pool
@@ -3733,6 +3746,20 @@ extern int rte_eth_timesync_read_rx_timestamp(uint8_t port_id,extern int rte_eth_timesync_read_tx_timestamp (uint8_t port_id,struct timespec *timestamp); +/** +* Copy pci device info to the Ethernet device data. +* +* @param eth_dev +* The *eth_dev* pointer is the address of the *rte_eth_dev* structure. +* @param pci_dev +* The *pci_dev* pointer is the address of the *rte_pci_device* structure. +* +* @return +* - 0 on success, negative on error +*/ +extern void rte_eth_copy_pci_info (struct rte_eth_dev *eth_dev,struct rte_pci_device *pci_dev); + + #ifdef __cplusplus }#endif
lib/librte_ether/rte_ether_version.map +1 -0
@@ -134,5 +134,6 @@ DPDK_2.2 { rte_eth_dev_get_dcb_info; rte_eth_rx_queue_info_get; rte_eth_tx_queue_info_get; + rte_eth_copy_pci_info; } DPDK_2.1;
Signature · 1 line
1.9.1
PATCH v8 4/11 librte_ether: remove branches on pci_dev
In reply to Bernard Iremongeruse dev_type to distinguish between vdev's and pdev's. remove pci_dev branches.
update release notes.
--- doc/guides/rel_notes/release_2_2.rst | 3 +++ lib/librte_ether/rte_ethdev.c | 40 +++++++++++++++--------------------- 2 files changed, 20 insertions(+), 23 deletions(-)
doc/guides/rel_notes/release_2_2.rst +3 -0
@@ -59,6 +59,9 @@ New Features * **Added port hotplug support to xenvirt.** +* **Removed the PCI device from vdev PMD's.** + + * This change required modifications to librte_ether and all vdev and pdev PMD's. Resolved Issues ---------------
lib/librte_ether/rte_ethdev.c +17 -23
@@ -424,7 +424,7 @@ 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; +return rte_eth_devices[port_id].data->numa_node; }uint8_t
@@ -503,27 +503,25 @@ rte_eth_dev_get_name_by_port(uint8_t port_id, char *name)static int rte_eth_dev_is_detachable (uint8_t port_id) { -uint32_t drv_flags; +uint32_t dev_flags;if (!rte_eth_dev_is_valid_port (port_id)) {PMD_DEBUG_TRACE ("Invalid port_id=%d\n" , port_id);return -EINVAL ; } -if (rte_eth_devices[port_id].dev_type ==RTE_ETH_DEV_PCI ) { -switch (rte_eth_devices[port_id].pci_dev->kdrv) { -case RTE_KDRV_IGB_UIO : -case RTE_KDRV_UIO_GENERIC : -case RTE_KDRV_NIC_UIO : -break ; -case RTE_KDRV_VFIO : -default : -return -ENOTSUP ; - } +switch (rte_eth_devices[port_id].data->kdrv) { +case RTE_KDRV_IGB_UIO : +case RTE_KDRV_UIO_GENERIC : +case RTE_KDRV_NIC_UIO : +case RTE_KDRV_NONE : +break ; +case RTE_KDRV_VFIO : +default : +return -ENOTSUP ; } - - drv_flags = rte_eth_devices[port_id].driver->pci_drv.drv_flags; -return !(drv_flags &RTE_PCI_DRV_DETACHABLE ); + dev_flags = rte_eth_devices[port_id].data->dev_flags; +return !(dev_flags &RTE_ETH_DEV_DETACHABLE ); }/* attach the new physical device, then store port_id of the device */
@@ -952,14 +950,11 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,* If link state interrupt is enabled, check that the * device supports it. */ -if (dev_conf->intr_conf.lsc ==1 ) { -const struct rte_pci_driver *pci_drv = &dev->driver->pci_drv; - -if (!(pci_drv->drv_flags &RTE_PCI_DRV_INTR_LSC )) { +if ((dev_conf->intr_conf.lsc ==1 ) && + (!(dev->data->dev_flags &RTE_ETH_DEV_INTR_LSC ))) {PMD_DEBUG_TRACE ("driver %s does not support lsc\n" , - pci_drv->name); + dev->data->drv_name);return -EINVAL ; - } }/*
@@ -1616,8 +1611,7 @@ rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info *dev_info)FUNC_PTR_OR_RET (*dev->dev_ops->dev_infos_get); (*dev->dev_ops->dev_infos_get)(dev, dev_info); dev_info->pci_dev = dev->pci_dev; -if (dev->driver) - dev_info->driver_name = dev->driver->pci_drv.name; + dev_info->driver_name = dev->data->drv_name; }void
Signature · 1 line
1.9.1
PATCH v8 6/11 ring: remove pci device
In reply to Bernard Iremongerremove rte_ring_pmd and pci_dev.
--- drivers/net/ring/rte_eth_ring.c | 24 ------------------------ 1 file changed, 24 deletions(-)
drivers/net/ring/rte_eth_ring.c +0 -24
@@ -44,8 +44,6 @@#define ETH_RING_ACTION_CREATE "CREATE"#define ETH_RING_ACTION_ATTACH "ATTACH" -static const char *ring_ethdev_driver_name ="Ring PMD" ; -static const char *valid_arguments[] = {ETH_RING_NUMA_NODE_ACTION_ARG ,NULL
@@ -252,15 +250,6 @@ static const struct eth_dev_ops ops = { .mac_addr_add = eth_mac_addr_add, }; -static struct eth_driver rte_ring_pmd = { - .pci_drv = { - .name ="rte_ring_pmd" , - .drv_flags =RTE_PCI_DRV_DETACHABLE , - }, -}; - -static struct rte_pci_id id_table; - int rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], const unsigned nb_rx_queues,
@@ -269,7 +258,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], const unsigned numa_node) {struct rte_eth_dev_data *data =NULL ; -struct rte_pci_device *pci_dev =NULL ;struct pmd_internals *internals =NULL ;struct rte_eth_dev *eth_dev =NULL ;
@@ -291,10 +279,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],if (data ==NULL ) goto error; - pci_dev =rte_zmalloc_socket (name,sizeof (*pci_dev),0 , numa_node); -if (pci_dev ==NULL ) - goto error; - internals =rte_zmalloc_socket (name,sizeof (*internals),0 , numa_node);if (internals ==NULL ) goto error;
@@ -322,12 +306,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], internals->tx_ring_queues[i].rng = tx_queues[i]; } - rte_ring_pmd.pci_drv.name = ring_ethdev_driver_name; - rte_ring_pmd.pci_drv.id_table = &id_table; - - pci_dev->numa_node = numa_node; - pci_dev->driver = &rte_ring_pmd.pci_drv; - data->dev_private = internals; data->port_id = eth_dev->data->port_id;memmove (data->name, eth_dev->data->name,sizeof (data->name));
@@ -354,7 +332,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], error:rte_free (data); -rte_free (pci_dev);rte_free (internals);return -1 ;
@@ -564,7 +541,6 @@ rte_pmd_ring_devuninit(const char *name)eth_dev_stop (eth_dev);rte_free (eth_dev->data->dev_private);rte_free (eth_dev->data); -rte_free (eth_dev->pci_dev);rte_eth_dev_release_port (eth_dev);return 0 ;
Signature · 1 line
1.9.1
PATCH v8 7/11 pcap: remove pci device
In reply to Bernard Iremongerremove rte_pcap_pmd and pci_dev.
--- drivers/net/pcap/rte_eth_pcap.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-)
drivers/net/pcap/rte_eth_pcap.c +1 -17
@@ -617,13 +617,6 @@ static const struct eth_dev_ops ops = { .stats_reset = eth_stats_reset, }; -static struct eth_driver rte_pcap_pmd = { - .pci_drv = { - .name ="rte_pcap_pmd" , - .drv_flags =RTE_PCI_DRV_DETACHABLE , - }, -}; -/* * Function handler that opens the pcap file for reading a stores a * reference of it for use it later on.
@@ -806,7 +799,6 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues, struct rte_kvargs *kvlist) {struct rte_eth_dev_data *data =NULL ; -struct rte_pci_device *pci_dev =NULL ;unsigned k_idx;struct rte_kvargs_pair *pair =NULL ;
@@ -819,17 +811,13 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,RTE_LOG (INFO ,PMD ,"Creating pcap-backed ethdev on numa socket %u\n" , numa_node); -/* now do all data allocation - for eth_dev structure, dummy pci driver +/* now do all data allocation - for eth_dev structure * and internal (private) data */ data =rte_zmalloc_socket (name,sizeof (*data),0 , numa_node);if (data ==NULL ) goto error; - pci_dev =rte_zmalloc_socket (name,sizeof (*pci_dev),0 , numa_node); -if (pci_dev ==NULL ) - goto error; - *internals =rte_zmalloc_socket (name,sizeof (**internals),0 , numa_node);if (*internals ==NULL ) goto error;
@@ -860,8 +848,6 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,else (*internals)->if_index =if_nametoindex (pair->value); - pci_dev->numa_node = numa_node; - data->dev_private = *internals; data->port_id = (*eth_dev)->data->port_id;snprintf (data->name,sizeof (data->name),"%s" , (*eth_dev)->data->name);
@@ -884,7 +870,6 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues, error:rte_free (data); -rte_free (pci_dev);rte_free (*internals);return -1 ;
@@ -1099,7 +1084,6 @@ rte_pmd_pcap_devuninit(const char *name)rte_free (eth_dev->data->dev_private);rte_free (eth_dev->data); -rte_free (eth_dev->pci_dev);rte_eth_dev_release_port (eth_dev);
Signature · 1 line
1.9.1
PATCH v8 10/11 mpipe: remove pci device
In reply to Bernard Iremonger--- drivers/net/mpipe/mpipe_tilegx.c | 3 --- 1 file changed, 3 deletions(-)
drivers/net/mpipe/mpipe_tilegx.c +0 -3
@@ -123,7 +123,6 @@ struct mpipe_dev_priv {int channel;/* Device channel. */ int port_id;/* DPDK port index. */ struct rte_eth_dev *eth_dev;/* DPDK device. */ -struct rte_pci_device pci_dev;/* PCI device data. */ struct rte_mbuf **tx_comps;/* TX completion array. */ struct rte_mempool *rx_mpool;/* mpool used by the rx queues. */ unsigned rx_offset;/* Receive head room. */
@@ -1568,7 +1567,6 @@ rte_pmd_mpipe_devinit(const char *ifname, priv->context = context; priv->instance = instance; priv->is_xaui = (strncmp (ifname,"xgbe" ,4 ) ==0 ); - priv->pci_dev.numa_node = instance; priv->channel =-1 ; mac = priv->mac_addr.addr_bytes;
@@ -1593,7 +1591,6 @@ rte_pmd_mpipe_devinit(const char *ifname, priv->eth_dev = eth_dev; priv->port_id = eth_dev->data->port_id; eth_dev->data->dev_private = priv; - eth_dev->pci_dev = &priv->pci_dev; eth_dev->data->mac_addrs = &priv->mac_addr; eth_dev->data->dev_flags =0 ;
Signature · 1 line
1.9.1
PATCH v8 2/11 pdev: copy pci device info to eth_dev data
In reply to Bernard Iremongeruse new function rte_eth_copy_pci_info.
copy device info for the following pdevs:
ixgbe
e1000
i40e
fm10k
bnx2x
cxgbe
enic
mlx4
vmxnet3
virtio
mlx5
--- drivers/net/bnx2x/bnx2x_ethdev.c | 3 +++ drivers/net/cxgbe/cxgbe_ethdev.c | 3 +++ drivers/net/e1000/em_ethdev.c | 3 +++ drivers/net/e1000/igb_ethdev.c | 5 +++++ drivers/net/enic/enic_ethdev.c | 1 + drivers/net/fm10k/fm10k_ethdev.c | 2 ++ drivers/net/i40e/i40e_ethdev.c | 3 +++ drivers/net/i40e/i40e_ethdev_vf.c | 2 ++ drivers/net/ixgbe/ixgbe_ethdev.c | 4 ++++ drivers/net/mlx4/mlx4.c | 3 +++ drivers/net/mlx5/mlx5.c | 3 +++ drivers/net/virtio/virtio_ethdev.c | 3 +++ drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 ++ 13 files changed, 37 insertions(+)
drivers/net/bnx2x/bnx2x_ethdev.c +3 -0
@@ -419,6 +419,9 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf) eth_dev->dev_ops = is_vf ? &bnx2xvf_eth_dev_ops : &bnx2x_eth_dev_ops; pci_dev = eth_dev->pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); + sc = eth_dev->data->dev_private; sc->pcie_bus = pci_dev->addr.bus; sc->pcie_device = pci_dev->addr.devid;
drivers/net/cxgbe/cxgbe_ethdev.c +3 -0
@@ -801,6 +801,9 @@ static int eth_cxgbe_dev_init(struct rte_eth_dev *eth_dev)return 0 ; pci_dev = eth_dev->pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); +snprintf (name,sizeof (name),"cxgbeadapter%d" , eth_dev->data->port_id); adapter =rte_zmalloc (name,sizeof (*adapter),0 );if (!adapter)
drivers/net/e1000/em_ethdev.c +3 -0
@@ -243,6 +243,9 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev)E1000_DEV_PRIVATE_TO_VFTA (eth_dev->data->dev_private); pci_dev = eth_dev->pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); + eth_dev->dev_ops = ð_em_ops; eth_dev->rx_pkt_burst = (eth_rx_burst_t)ð_em_recv_pkts; eth_dev->tx_pkt_burst = (eth_tx_burst_t)ð_em_xmit_pkts;
drivers/net/e1000/igb_ethdev.c +5 -0
@@ -546,6 +546,9 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)uint32_t ctrl_ext; pci_dev = eth_dev->pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); + eth_dev->dev_ops = ð_igb_ops; eth_dev->rx_pkt_burst = ð_igb_recv_pkts; eth_dev->tx_pkt_burst = ð_igb_xmit_pkts;
@@ -754,6 +757,8 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev) pci_dev = eth_dev->pci_dev; +rte_eth_copy_pci_info (eth_dev, pci_dev); + hw->device_id = pci_dev->id.device_id; hw->vendor_id = pci_dev->id.vendor_id; hw->hw_addr = (void *)pci_dev->mem_resource[0 ].addr;
drivers/net/enic/enic_ethdev.c +1 -0
@@ -603,6 +603,7 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev) eth_dev->tx_pkt_burst = &enicpmd_xmit_pkts; pdev = eth_dev->pci_dev; +rte_eth_copy_pci_info (eth_dev, pdev); enic->pdev = pdev; addr = &pdev->addr;
drivers/net/fm10k/fm10k_ethdev.c +2 -0
@@ -2423,6 +2423,8 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)if (rte_eal_process_type () !=RTE_PROC_PRIMARY )return 0 ; +rte_eth_copy_pci_info (dev, dev->pci_dev); + macvlan =FM10K_DEV_PRIVATE_TO_MACVLAN (dev->data->dev_private);memset (macvlan,0 ,sizeof (*macvlan));/* Vendor and Device ID need to be set before init of shared code */
drivers/net/i40e/i40e_ethdev.c +3 -0
@@ -468,6 +468,9 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)return 0 ; } pci_dev = dev->pci_dev; + +rte_eth_copy_pci_info (dev, pci_dev); + pf->adapter =I40E_DEV_PRIVATE_TO_ADAPTER (dev->data->dev_private); pf->adapter->eth_dev = dev; pf->dev_data = dev->data;
drivers/net/i40e/i40e_ethdev_vf.c +2 -0
@@ -1202,6 +1202,8 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev)return 0 ; } +rte_eth_copy_pci_info (eth_dev, eth_dev->pci_dev); + hw->vendor_id = eth_dev->pci_dev->id.vendor_id; hw->device_id = eth_dev->pci_dev->id.device_id; hw->subsystem_vendor_id = eth_dev->pci_dev->id.subsystem_vendor_id;
drivers/net/ixgbe/ixgbe_ethdev.c +4 -0
@@ -910,6 +910,8 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev) } pci_dev = eth_dev->pci_dev; +rte_eth_copy_pci_info (eth_dev, pci_dev); +/* Vendor and Device ID need to be set before init of shared code */ hw->device_id = pci_dev->id.device_id; hw->vendor_id = pci_dev->id.vendor_id;
@@ -1178,6 +1180,8 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev) pci_dev = eth_dev->pci_dev; +rte_eth_copy_pci_info (eth_dev, pci_dev); + hw->device_id = pci_dev->id.device_id; hw->vendor_id = pci_dev->id.vendor_id; hw->hw_addr = (void *)pci_dev->mem_resource[0 ].addr;
drivers/net/mlx4/mlx4.c +3 -0
@@ -5138,6 +5138,9 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) eth_dev->data->dev_private = priv; eth_dev->pci_dev = pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); + eth_dev->driver = &mlx4_driver; eth_dev->data->rx_mbuf_alloc_failed =0 ; eth_dev->data->mtu =ETHER_MTU ;
drivers/net/mlx5/mlx5.c +3 -0
@@ -444,6 +444,9 @@ mlx5_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) eth_dev->data->dev_private = priv; eth_dev->pci_dev = pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); + eth_dev->driver = &mlx5_driver; eth_dev->data->rx_mbuf_alloc_failed =0 ; eth_dev->data->mtu =ETHER_MTU ;
drivers/net/virtio/virtio_ethdev.c +3 -0
@@ -1184,6 +1184,9 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) } pci_dev = eth_dev->pci_dev; + +rte_eth_copy_pci_info (eth_dev, pci_dev); +if (virtio_resource_init (pci_dev) <0 )return -1 ;
drivers/net/vmxnet3/vmxnet3_ethdev.c +2 -0
@@ -235,6 +235,8 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)if (rte_eal_process_type () !=RTE_PROC_PRIMARY )return 0 ; +rte_eth_copy_pci_info (eth_dev, pci_dev); +/* Vendor and Device ID need to be set before init of shared code */ hw->device_id = pci_dev->id.device_id; hw->vendor_id = pci_dev->id.vendor_id;
Signature · 1 line
1.9.1
PATCH v8 3/11 vdev: copy device info to eth_dev data
In reply to Bernard Iremongerinitialise dev_flags, driver, kdrv, drv_name and numa_node fields in eth_dev data.
for the following vdevs:
null
ring
pcapaf_packet
xenvirt
mpipe
bonding
--- drivers/net/af_packet/rte_eth_af_packet.c | 12 ++++++++---- drivers/net/bonding/rte_eth_bond_api.c | 11 +++++++++-- drivers/net/mpipe/mpipe_tilegx.c | 7 +++++++ drivers/net/null/rte_eth_null.c | 13 +++++++++---- drivers/net/pcap/rte_eth_pcap.c | 13 ++++++++----- drivers/net/ring/rte_eth_ring.c | 13 ++++++++----- drivers/net/xenvirt/rte_eth_xenvirt.c | 8 ++++++-- 7 files changed, 55 insertions(+), 22 deletions(-)
drivers/net/af_packet/rte_eth_af_packet.c +8 -4
@@ -5,7 +5,7 @@* * Originally based upon librte_pmd_pcap code: * -* Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +* Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * Copyright(c) 2014 6WIND S.A. * All rights reserved. *
@@ -656,8 +656,8 @@ rte_pmd_init_internals(const char *name,/* * now put it all together * - store queue data in internals, -* - store numa_node info in pci_driver -* - point eth_dev_data to internals and pci_driver +* - store numa_node in eth_dev +* - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */
@@ -674,7 +674,11 @@ rte_pmd_init_internals(const char *name, (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; - (*eth_dev)->pci_dev = pci_dev; + (*eth_dev)->driver =NULL ; + (*eth_dev)->data->dev_flags =0 ; + (*eth_dev)->data->drv_name = drivername; + (*eth_dev)->data->kdrv =RTE_KDRV_NONE ; + (*eth_dev)->data->numa_node = numa_node;return 0 ;
drivers/net/bonding/rte_eth_bond_api.c +9 -2
@@ -44,6 +44,8 @@#define DEFAULT_POLLING_INTERVAL_10_MS (10) +const char pmd_bond_driver_name[] ="rte_bond_pmd" ; +int valid_bonded_ethdev (const struct rte_eth_dev *eth_dev) {
@@ -163,8 +165,6 @@ number_of_sockets(void)return ++sockets; } -const char pmd_bond_driver_name[] ="rte_bond_pmd" ; -static struct rte_pci_id pci_id_table = { .device_id =PCI_ANY_ID , .subsystem_device_id =PCI_ANY_ID ,
@@ -252,6 +252,13 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id) eth_dev->dev_ops = &default_dev_ops; eth_dev->pci_dev = pci_dev; + eth_dev->data->dev_flags =RTE_ETH_DEV_INTR_LSC | +RTE_ETH_DEV_DETACHABLE ; + eth_dev->driver =NULL ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name = pmd_bond_driver_name; + eth_dev->data->numa_node = socket_id; +rte_spinlock_init (&internals->lock); internals->port_id = eth_dev->data->port_id;
drivers/net/mpipe/mpipe_tilegx.c +7 -0
@@ -80,6 +80,7 @@ struct mpipe_context {static struct mpipe_context mpipe_contexts[GXIO_MPIPE_INSTANCE_MAX ];static int mpipe_instances; +static const char *drivername ="MPIPE PMD" ;/* Per queue statistics. */ struct mpipe_queue_stats {
@@ -1595,6 +1596,12 @@ rte_pmd_mpipe_devinit(const char *ifname, eth_dev->pci_dev = &priv->pci_dev; eth_dev->data->mac_addrs = &priv->mac_addr; + eth_dev->data->dev_flags =0 ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->driver =NULL ; + eth_dev->data->drv_name = drivername; + eth_dev->data->numa_node = instance; + eth_dev->dev_ops = &mpipe_dev_ops; eth_dev->rx_pkt_burst = &mpipe_recv_pkts; eth_dev->tx_pkt_burst = &mpipe_xmit_pkts;
drivers/net/null/rte_eth_null.c +9 -4
@@ -540,8 +540,8 @@ eth_dev_null_create(const char *name,/* now put it all together * - store queue data in internals, -* - store numa_node info in pci_driver -* - point eth_dev_data to internals and pci_driver +* - store numa_node info in ethdev data +* - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ /* NOTE: we'll replace the data element, of originally allocated eth_dev
@@ -571,10 +571,15 @@ eth_dev_null_create(const char *name, eth_dev->data = data; eth_dev->dev_ops = &ops; - eth_dev->pci_dev = pci_dev; - eth_dev->driver = &rte_null_pmd; +TAILQ_INIT (ð_dev->link_intr_cbs); + eth_dev->driver =NULL ; + eth_dev->data->dev_flags =RTE_ETH_DEV_DETACHABLE ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name = drivername; + eth_dev->data->numa_node = numa_node; +/* finally assign rx and tx ops */ if (packet_copy) { eth_dev->rx_pkt_burst = eth_null_copy_rx;
drivers/net/pcap/rte_eth_pcap.c +8 -5
@@ -1,7 +1,7 @@/*- * BSD LICENSE * -* Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +* Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * Copyright(c) 2014 6WIND S.A. * All rights reserved. *
@@ -845,8 +845,8 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,/* now put it all together * - store queue data in internals, -* - store numa_node info in pci_driver -* - point eth_dev_data to internals and pci_driver +* - store numa_node info in eth_dev +* - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ /* NOTE: we'll replace the data element, of originally allocated eth_dev
@@ -874,8 +874,11 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues, (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; - (*eth_dev)->pci_dev = pci_dev; - (*eth_dev)->driver = &rte_pcap_pmd; + (*eth_dev)->data->dev_flags =RTE_ETH_DEV_DETACHABLE ; + (*eth_dev)->driver =NULL ; + (*eth_dev)->data->kdrv =RTE_KDRV_NONE ; + (*eth_dev)->data->drv_name = drivername; + (*eth_dev)->data->numa_node = numa_node;return 0 ;
drivers/net/ring/rte_eth_ring.c +8 -5
@@ -304,11 +304,10 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],if (eth_dev ==NULL ) goto error; -/* now put it all together * - store queue data in internals, -* - store numa_node info in pci_driver -* - point eth_dev_data to internals and pci_driver +* - store numa_node info in eth_dev_data +* - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ /* NOTE: we'll replace the data element, of originally allocated eth_dev
@@ -338,9 +337,13 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], data->mac_addrs = &internals->address; eth_dev->data = data; - eth_dev->driver = &rte_ring_pmd; + eth_dev->driver =NULL ; eth_dev->dev_ops = &ops; - eth_dev->pci_dev = pci_dev; + eth_dev->data->dev_flags =RTE_ETH_DEV_DETACHABLE ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name = drivername; + eth_dev->data->numa_node = numa_node; +TAILQ_INIT (&(eth_dev->link_intr_cbs));/* finally assign rx and tx ops */
drivers/net/xenvirt/rte_eth_xenvirt.c +6 -2
@@ -67,7 +67,7 @@/* virtio_idx is increased after new device is created.*/ static int virtio_idx =0 ; -static const char *drivername ="xen dummy virtio PMD" ; +static const char *drivername ="xen virtio PMD" ;static struct rte_eth_link pmd_link = { .link_speed =10000 ,
@@ -688,8 +688,12 @@ eth_dev_xenvirt_create(const char *name, const char *params, eth_dev->data = data; eth_dev->dev_ops = &ops; + eth_dev->data->dev_flags =RTE_PCI_DRV_DETACHABLE ; - eth_dev->pci_dev = pci_dev; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name = drivername; + eth_dev->driver =NULL ; + eth_dev->data->numa_node = numa_node; eth_dev->rx_pkt_burst = eth_xenvirt_rx; eth_dev->tx_pkt_burst = eth_xenvirt_tx;
Signature · 1 line
1.9.1
PATCH v8 5/11 null: remove pci device
In reply to Bernard Iremongerremove rte_null_pmd and pci_dev.
--- drivers/net/null/rte_eth_null.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-)
drivers/net/null/rte_eth_null.c +1 -18
@@ -366,13 +366,6 @@ eth_stats_reset(struct rte_eth_dev *dev) } } -static struct eth_driver rte_null_pmd = { - .pci_drv = { - .name ="rte_null_pmd" , - .drv_flags =RTE_PCI_DRV_DETACHABLE , - }, -}; -static void eth_queue_release (void *q) {
@@ -501,7 +494,6 @@ eth_dev_null_create(const char *name,const unsigned nb_rx_queues =1 ;const unsigned nb_tx_queues =1 ;struct rte_eth_dev_data *data =NULL ; -struct rte_pci_device *pci_dev =NULL ;struct pmd_internals *internals =NULL ;struct rte_eth_dev *eth_dev =NULL ;
@@ -525,10 +517,6 @@ eth_dev_null_create(const char *name,if (data ==NULL ) goto error; - pci_dev =rte_zmalloc_socket (name,sizeof (*pci_dev),0 , numa_node); -if (pci_dev ==NULL ) - goto error; - internals =rte_zmalloc_socket (name,sizeof (*internals),0 , numa_node);if (internals ==NULL ) goto error;
@@ -558,9 +546,6 @@ eth_dev_null_create(const char *name,rte_memcpy (internals->rss_key, default_rss_key,40 ); - pci_dev->numa_node = numa_node; - pci_dev->driver = &rte_null_pmd.pci_drv; - data->dev_private = internals; data->port_id = eth_dev->data->port_id; data->nb_rx_queues = (uint16_t )nb_rx_queues;
@@ -593,7 +578,6 @@ eth_dev_null_create(const char *name, error:rte_free (data); -rte_free (pci_dev);rte_free (internals);return -1 ;
@@ -696,14 +680,13 @@ rte_pmd_null_devuninit(const char *name)RTE_LOG (INFO ,PMD ,"Closing null ethdev on numa socket %u\n" ,rte_socket_id ()); -/* reserve an ethdev entry */ +/* find the ethdev entry */ eth_dev =rte_eth_dev_allocated (name);if (eth_dev ==NULL )return -1 ;rte_free (eth_dev->data->dev_private);rte_free (eth_dev->data); -rte_free (eth_dev->pci_dev);rte_eth_dev_release_port (eth_dev);
Signature · 1 line
1.9.1
PATCH v8 8/11 af_packet: remove pci device
In reply to Bernard Iremonger--- drivers/net/af_packet/rte_eth_af_packet.c | 8 -------- 1 file changed, 8 deletions(-)
drivers/net/af_packet/rte_eth_af_packet.c +0 -8
@@ -432,7 +432,6 @@ rte_pmd_init_internals(const char *name, struct rte_kvargs *kvlist) {struct rte_eth_dev_data *data =NULL ; -struct rte_pci_device *pci_dev =NULL ;struct rte_kvargs_pair *pair =NULL ;struct ifreq ifr;size_t ifnamelen;
@@ -470,10 +469,6 @@ rte_pmd_init_internals(const char *name,if (data ==NULL ) goto error_early; - pci_dev =rte_zmalloc_socket (name,sizeof (*pci_dev),0 , numa_node); -if (pci_dev ==NULL ) - goto error_early; - *internals =rte_zmalloc_socket (name,sizeof (**internals),0 , numa_node);if (*internals ==NULL )
@@ -670,8 +665,6 @@ rte_pmd_init_internals(const char *name, data->dev_link = pmd_link; data->mac_addrs = &(*internals)->eth_addr; - pci_dev->numa_node = numa_node; - (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; (*eth_dev)->driver =NULL ;
@@ -697,7 +690,6 @@ error: }rte_free (*internals); error_early: -rte_free (pci_dev);rte_free (data);return -1 ; }
Signature · 1 line
1.9.1
PATCH v8 9/11 xenvirt: remove pci device
In reply to Bernard Iremonger--- drivers/net/xenvirt/rte_eth_xenvirt.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)
drivers/net/xenvirt/rte_eth_xenvirt.c +1 -9
@@ -1,7 +1,7 @@/*- * BSD LICENSE * -* Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +* Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without
@@ -637,7 +637,6 @@ eth_dev_xenvirt_create(const char *name, const char *params, enum dev_action action) {struct rte_eth_dev_data *data =NULL ; -struct rte_pci_device *pci_dev =NULL ;struct pmd_internals *internals =NULL ;struct rte_eth_dev *eth_dev =NULL ;struct xenvirt_dict dict;
@@ -659,10 +658,6 @@ eth_dev_xenvirt_create(const char *name, const char *params,if (data ==NULL ) goto err; - pci_dev =rte_zmalloc_socket (name,sizeof (*pci_dev),0 , numa_node); -if (pci_dev ==NULL ) - goto err; - internals =rte_zmalloc_socket (name,sizeof (*internals),0 , numa_node);if (internals ==NULL ) goto err;
@@ -672,8 +667,6 @@ eth_dev_xenvirt_create(const char *name, const char *params,if (eth_dev ==NULL ) goto err; - pci_dev->numa_node = numa_node; - data->dev_private = internals; data->port_id = eth_dev->data->port_id; data->nb_rx_queues = (uint16_t )1 ;
@@ -705,7 +698,6 @@ eth_dev_xenvirt_create(const char *name, const char *params, err:rte_free (data); -rte_free (pci_dev);rte_free (internals);return -1 ;
Signature · 1 line
1.9.1
PATCH v8 11/11 bonding: remove pci device
In reply to Bernard Iremongerremove pci_dev, pci_drv, rte_bond_pmd and pci_id_table. handle numa_node for vdevs
handle RTE_ETH_DEV_INTR_LSC for vdevs
rename the function valid_bonded_device to check_for_bonded_device remove branches on pci_dev
--- drivers/net/bonding/rte_eth_bond_8023ad.c | 4 +-- drivers/net/bonding/rte_eth_bond_alb.c | 2 +- drivers/net/bonding/rte_eth_bond_api.c | 46 ++++-------------------------- drivers/net/bonding/rte_eth_bond_pmd.c | 18 ++++++------ drivers/net/bonding/rte_eth_bond_private.h | 2 +- 5 files changed, 19 insertions(+), 53 deletions(-)
drivers/net/bonding/rte_eth_bond_8023ad.c +2 -2
@@ -1,7 +1,7 @@/*- * BSD LICENSE * -* Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +* Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without
@@ -879,7 +879,7 @@ bond_mode_8023ad_activate_slave(struct rte_eth_dev *bond_dev, uint8_t slave_id)RTE_VERIFY (port->rx_ring ==NULL );RTE_VERIFY (port->tx_ring ==NULL ); - socket_id = rte_eth_devices[slave_id].pci_dev->numa_node; + socket_id = rte_eth_devices[slave_id].data->numa_node; element_size =sizeof (struct slow_protocol_frame ) +sizeof (struct rte_mbuf ) +RTE_PKTMBUF_HEADROOM ;
drivers/net/bonding/rte_eth_bond_alb.c +1 -1
@@ -65,7 +65,7 @@ bond_mode_alb_enable(struct rte_eth_dev *bond_dev)uint16_t data_size;char mem_name[RTE_ETH_NAME_MAX_LEN ]; -int socket_id = bond_dev->pci_dev->numa_node; +int socket_id = bond_dev->data->numa_node;/* Fill hash table with initial values */ memset (hash_table,0 ,sizeof (struct client_data ) *ALB_HASH_TABLE_SIZE );
drivers/net/bonding/rte_eth_bond_api.c +6 -40
116 lines not on this page · raw message
drivers/net/bonding/rte_eth_bond_pmd.c +9 -9
@@ -1307,7 +1307,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,rte_eth_dev_stop (slave_eth_dev->data->port_id);/* Enable interrupts on slave device if supported */ -if (slave_eth_dev->driver->pci_drv.drv_flags &RTE_PCI_DRV_INTR_LSC ) +if (slave_eth_dev->data->dev_flags &RTE_ETH_DEV_INTR_LSC ) slave_eth_dev->data->dev_conf.intr_conf.lsc =1 ;/* If RSS is enabled for bonding, try to enable it for slaves */
@@ -1403,9 +1403,9 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, }/* If lsc interrupt is set, check initial slave's link status */ -if (slave_eth_dev->driver->pci_drv.drv_flags &RTE_PCI_DRV_INTR_LSC ) +if (slave_eth_dev->data->dev_flags &RTE_ETH_DEV_INTR_LSC )bond_ethdev_lsc_event_callback (slave_eth_dev->data->port_id, -RTE_ETH_EVENT_INTR_LSC , &bonded_eth_dev->data->port_id); +RTE_ETH_EVENT_INTR_LSC , &bonded_eth_dev->data->port_id);return 0 ; }
@@ -1444,7 +1444,7 @@ slave_add(struct bond_dev_private *internals,/* If slave device doesn't support interrupts then we need to enabled * polling to monitor link status */ -if (!(slave_eth_dev->pci_dev->driver->drv_flags &RTE_PCI_DRV_INTR_LSC )) { +if (!(slave_eth_dev->data->dev_flags &RTE_PCI_DRV_INTR_LSC )) { slave_details->link_status_poll_enabled =1 ;if (!internals->link_status_polling_enabled) {
@@ -1488,7 +1488,7 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)int i;/* slave eth dev will be started by bonded device */ -if (valid_bonded_ethdev (eth_dev)) { +if (check_for_bonded_ethdev (eth_dev)) {RTE_BOND_LOG (ERR ,"User tried to explicitly start a slave eth_dev (%d)" , eth_dev->data->port_id);return -1 ;
@@ -1633,7 +1633,7 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) dev_info->max_tx_queues = (uint16_t )512 ; dev_info->min_rx_bufsize =0 ; - dev_info->pci_dev = dev->pci_dev; + dev_info->pci_dev =NULL ; dev_info->rx_offload_capa = internals->rx_offload_capa; dev_info->tx_offload_capa = internals->tx_offload_capa;
@@ -1649,7 +1649,7 @@ bond_ethdev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id, {struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)rte_zmalloc_socket (NULL ,sizeof (struct bond_rx_queue ), -0 , dev->pci_dev->numa_node); +0 , dev->data->numa_node);if (bd_rx_q ==NULL )return -1 ;
@@ -1673,7 +1673,7 @@ bond_ethdev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, {struct bond_tx_queue *bd_tx_q = (struct bond_tx_queue *)rte_zmalloc_socket (NULL ,sizeof (struct bond_tx_queue ), -0 , dev->pci_dev->numa_node); +0 , dev->data->numa_node);if (bd_tx_q ==NULL )return -1 ;
@@ -1926,7 +1926,7 @@ bond_ethdev_lsc_event_callback(uint8_t port_id, enum rte_eth_event_type type, bonded_eth_dev = &rte_eth_devices[*(uint8_t *)param]; slave_eth_dev = &rte_eth_devices[port_id]; -if (valid_bonded_ethdev (bonded_eth_dev)) +if (check_for_bonded_ethdev (bonded_eth_dev))return ; internals = bonded_eth_dev->data->dev_private;
drivers/net/bonding/rte_eth_bond_private.h +1 -1
@@ -174,7 +174,7 @@ struct bond_dev_private {extern struct eth_dev_ops default_dev_ops;int -valid_bonded_ethdev (const struct rte_eth_dev *eth_dev); +check_for_bonded_ethdev (const struct rte_eth_dev *eth_dev);/* Search given slave array to find possition of given id. * Return slave pos or slaves_count if not found. */
Signature · 1 line
1.9.1
Re: [PATCH v8 01/11] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
In reply to Bernard Iremonger2015-11-03 13:01, Bernard Iremonger:
lib/librte_ether/rte_ethdev.h struct rte_eth_dev_data { · line 1563
Quoted 4 lines
lib/librte_ether/rte_ethdev.h +4
-0+/** Device needs PCI BAR mapping (done with either IGB_UIO or VFIO) */ +#define RTE_ETH_DEV_DRV_NEED_MAPPING 0x0001 +/** Device needs to be unbound even if no module is provided */ +#define RTE_ETH_DEV_DRV_FORCE_UNBIND 0x0002
These flags seems useless at ethdev level.
lib/librte_ether/rte_ether_version.map DPDK_2.2 { · line 137
Quoted 4 lines
lib/librte_ether/rte_ether_version.map +1
-0rte_eth_dev_get_dcb_info; rte_eth_rx_queue_info_get; rte_eth_tx_queue_info_get; + rte_eth_copy_pci_info;
Not in alphabetical order.
Re: [PATCH v8 03/11] vdev: copy device info to eth_dev data
In reply to Bernard IremongerBelow, a lot of pci values are removed and break the build. Will move in later patches.
2015-11-03 13:01, Bernard Iremonger:
Quoted 65 lines
drivers/net/af_packet/rte_eth_af_packet.c +22
-8@@ -674,7 +674,11 @@ rte_pmd_init_internals(const char *name, (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; - (*eth_dev)->pci_dev = pci_dev; + (*eth_dev)->driver =NULL ; + (*eth_dev)->data->dev_flags =0 ; + (*eth_dev)->data->drv_name = drivername; + (*eth_dev)->data->kdrv =RTE_KDRV_NONE ; + (*eth_dev)->data->numa_node = numa_node;@@ -571,10 +571,15 @@ eth_dev_null_create(const char *name, eth_dev->data = data; eth_dev->dev_ops = &ops; - eth_dev->pci_dev = pci_dev; - eth_dev->driver = &rte_null_pmd; +TAILQ_INIT (ð_dev->link_intr_cbs);@@ -874,8 +874,11 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues, (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; - (*eth_dev)->pci_dev = pci_dev; - (*eth_dev)->driver = &rte_pcap_pmd; + (*eth_dev)->data->dev_flags =RTE_ETH_DEV_DETACHABLE ; + (*eth_dev)->driver =NULL ; + (*eth_dev)->data->kdrv =RTE_KDRV_NONE ; + (*eth_dev)->data->drv_name = drivername; + (*eth_dev)->data->numa_node = numa_node;return 0 ;@@ -338,9 +337,13 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], data->mac_addrs = &internals->address; eth_dev->data = data; - eth_dev->driver = &rte_ring_pmd; + eth_dev->driver =NULL ; eth_dev->dev_ops = &ops; - eth_dev->pci_dev = pci_dev; + eth_dev->data->dev_flags =RTE_ETH_DEV_DETACHABLE ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name = drivername; + eth_dev->data->numa_node = numa_node; +TAILQ_INIT (&(eth_dev->link_intr_cbs));@@ -688,8 +688,12 @@ eth_dev_xenvirt_create(const char *name, const char *params, eth_dev->data = data; eth_dev->dev_ops = &ops; + eth_dev->data->dev_flags =RTE_PCI_DRV_DETACHABLE ; - eth_dev->pci_dev = pci_dev; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name = drivername; + eth_dev->driver =NULL ; + eth_dev->data->numa_node = numa_node; eth_dev->rx_pkt_burst = eth_xenvirt_rx; eth_dev->tx_pkt_burst = eth_xenvirt_tx;
2015-11-03 13:01, Bernard Iremonger:
Quoted 3 lines
There is a dummy pci driver in the vdev PMD's at present.
This patch set removes the pci driver from the vdev PMD's.
Changes have been made tolibrte_etherto handle vdevs and pdevs in the same way.
Applied with some fixes, thanks