remove pci driver from vdevs
Subsystems (3)
A message that is not in the archive (sent off-list or not yet received): PATCH v2
v2 cover remove pci driver from vdevs
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 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 ethdev data.
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 (17):
librte_eal: add RTE_KDRV_NONE for vdevs
librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
librte_ether: add function rte_eth_copy_dev_info()
null: remove pci device driver
ring: remove pci device driver
bonding: remove pci device driver
pcap: remove pci device driver
ixgbe: copy pci device info to eth_dev data
e1000: copy pci device info to eth_dev data
i40e: copy pci device info to eth_dev data
fm10k: copy pci device info to eth_dev data
bnx2x: copy pci device info to eth_dev data
cxgbe: copy pci device info to eth_dev data
enic: copy pci device info to eth_dev data
mlx4: copy pci device info to eth_dev data
virtio: copy pci device info to eth_dev data
vmxnet3: copy pci device info to eth_dev data
David Hunt (3):
af_packet: remove pci device driver
xenvirt: remove pci device driver
mpipe: remove pci device driver
drivers/net/af_packet/rte_eth_af_packet.c | 20 +++++------ drivers/net/bnx2x/bnx2x_ethdev.c | 3 ++ drivers/net/bonding/rte_eth_bond_alb.c | 2 +- drivers/net/bonding/rte_eth_bond_api.c | 58 +++++++++--------------------- drivers/net/bonding/rte_eth_bond_pmd.c | 16 ++++----- 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/mpipe/mpipe_tilegx.c | 9 +++-- drivers/net/null/rte_eth_null.c | 28 ++++----------- 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 | 14 +++----- lib/librte_eal/common/include/rte_pci.h | 3 +- lib/librte_ether/rte_ethdev.c | 55 ++++++++++++++++------------ lib/librte_ether/rte_ethdev.h | 29 +++++++++++++++ lib/librte_ether/rte_ether_version.map | 7 ++++ 26 files changed, 173 insertions(+), 172 deletions(-)
Signature · 1 line
1.9.1
PATCH v2 1/20 librte_eal: add RTE_KDRV_NONE for vdevs
--- lib/librte_eal/common/include/rte_pci.h | 3 ++- 1 file changed, 2 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, };/**
Signature · 1 line
1.9.1
PATCH v2 2/20 librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
In reply to Bernard Iremongeradd dev_flags to rte_eth_dev_data, add macros for dev_flags. add kdrv to rte_eth_dev_data.
add numa_node to rte_eth_dev_data.
add drv_name to rte_eth_dev_data.
use dev_type to distinguish between vdev's and pdev's. remove pci_dev branches.
--- lib/librte_ether/rte_ethdev.c | 54 +++++++++++++++++++++++++------------------ lib/librte_ether/rte_ethdev.h | 15 ++++++++++++ 2 files changed, 46 insertions(+), 23 deletions(-)
lib/librte_ether/rte_ethdev.c +31 -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 */
@@ -1143,14 +1141,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 ; - } }/*
@@ -1795,8 +1790,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
@@ -3342,3 +3336,17 @@ rte_eth_dev_set_eeprom(uint8_t port_id, struct rte_dev_eeprom_info *info)FUNC_PTR_OR_ERR_RET (*dev->dev_ops->set_eeprom, -ENOTSUP );return (*dev->dev_ops->set_eeprom)(dev, info); } + +void +rte_eth_copy_dev_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 = pci_dev->driver->drv_flags; + 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 +15 -0
@@ -1471,8 +1471,23 @@ 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; +const char *drv_name; }; +/** Device needs PCI BAR mapping (done with either IGB_UIO or VFIO) */ +#define RTE_ETH_DEV_DRV_NEED_MAPPING RTE_PCI_DRV_NEED_MAPPING +/** Device needs to be unbound even if no module is provided */ +#define RTE_ETH_DEV_DRV_FORCE_UNBIND RTE_PCI_DRV_FORCE_UNBIND +/** Device supports link state interrupt */ +#define RTE_ETH_DEV_INTR_LSC RTE_PCI_DRV_INTR_LSC +/** Device supports detaching capability */ +#define RTE_ETH_DEV_DETACHABLE RTE_PCI_DRV_DETACHABLE +/** Device is a bonded device */ +#define RTE_ETH_DEV_BONDED 0x0020 +/** * @internal * The pool of *rte_eth_dev* structures. The size of the pool
Signature · 1 line
1.9.1
Re: [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
Quoted 7 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Bernard Iremonger
Sent: Monday, October 5, 2015 11:30 AM
To: [email protected]
Subject: [dpdk-dev] [PATCH v2 02/20]librte_ether: add fields fromrte_pci_drivertorte_eth_dev_data
Quoted 6 lines
add
dev_flagstorte_eth_dev_data, add macros fordev_flags. add kdrv torte_eth_dev_data.
addnuma_nodetorte_eth_dev_data.
adddrv_nametorte_eth_dev_data.
usedev_typeto distinguish between vdev's and pdev's. removepci_devbranches.
Hi Bernard,
Patch 02/20 doesn't compile without patch 03/20 also being applied:
$ git log --pretty=oneline --abbrev-commit -2
0958ce7 librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
30e65e6 librte_eal: add RTE_KDRV_NONE for vdevs $ make T=x86_64-native-linuxapp-gcc -j install
...
lib/librte_ether/rte_ethdev.c:3341:1: error: no previous prototype for
'rte_eth_copy_dev_info' [-Werror=missing-prototypes]
cc1: all warnings being treated as errorsJohn
Re: [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
Hi John,
<snip>
Quoted 9 lines
Hi Bernard,
Patch 02/20 doesn't compile without patch 03/20 also being applied:
$ git log --pretty=oneline --abbrev-commit -2 0958ce7 librte_ether: add fields from rte_pci_driver to rte_eth_dev_data 30e65e6 librte_eal: add RTE_KDRV_NONE for vdevs
Quoted 9 lines
$ make T=x86_64-native-linuxapp-gcc -j install ... lib/librte_ether/rte_ethdev.c:3341:1: error: no previous prototype for 'rte_eth_copy_dev_info' [-Werror=missing-prototypes] cc1: all warnings being treated as errorsJohn
I have reworked patch 02/20 and 03/20 to fix this issue. I will send a v3 patch set with the revised patches.
Regards,
Bernard.
PATCH v2 3/20 librte_ether: add function rte_eth_copy_dev_info()
In reply to Bernard Iremonger--- lib/librte_ether/rte_ethdev.c | 1 + lib/librte_ether/rte_ethdev.h | 14 ++++++++++++++ lib/librte_ether/rte_ether_version.map | 7 +++++++ 3 files changed, 22 insertions(+)
lib/librte_ether/rte_ethdev.c +1 -0
@@ -3349,4 +3349,5 @@ rte_eth_copy_dev_info(struct rte_eth_dev *eth_dev, struct rte_pci_device *pci_de 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 +14 -0
@@ -3613,6 +3613,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_dev_info (struct rte_eth_dev *eth_dev,struct rte_pci_device *pci_dev); + + #ifdef __cplusplus }#endif
lib/librte_ether/rte_ether_version.map +7 -0
@@ -127,3 +127,10 @@ DPDK_2.1 { rte_eth_timesync_read_tx_timestamp; } DPDK_2.0; + +DPDK_2.2 { + global: + + rte_eth_copy_dev_info; + +} DPDK_2.1;
Signature · 1 line
1.9.1
PATCH v2 4/20 null: remove pci device driver
In reply to Bernard Iremongerremove rte_null_pmd and pci_dev.
initialise dev_flags, driver, drv_name, kdrv and numa_node fields in eth_dev data
--- drivers/net/null/rte_eth_null.c | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-)
drivers/net/null/rte_eth_null.c +7 -21
@@ -340,13 +340,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) {
@@ -386,7 +379,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 ;
@@ -403,10 +395,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;
@@ -418,8 +406,7 @@ 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 +* - 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
@@ -431,8 +418,6 @@ eth_dev_null_create(const char *name, internals->packet_copy = packet_copy; internals->numa_node = numa_node; - pci_dev->numa_node = numa_node; - data->dev_private = internals; data->port_id = eth_dev->data->port_id; data->nb_rx_queues = (uint16_t )nb_rx_queues;
@@ -443,8 +428,11 @@ 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; + 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 =NULL ; + eth_dev->data->numa_node = numa_node;/* finally assign rx and tx ops */ if (packet_copy) {
@@ -459,7 +447,6 @@ eth_dev_null_create(const char *name, error:rte_free (data); -rte_free (pci_dev);rte_free (internals);return -1 ;
@@ -562,14 +549,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 v2 5/20 ring: remove pci device driver
In reply to Bernard Iremongerremove rte_ring_pmd and pci_dev.
initialise dev_flags, driver, drv_name, kdrv and numa_node fields in eth_dev data.
--- drivers/net/ring/rte_eth_ring.c | 37 ++++++++----------------------------- 1 file changed, 8 insertions(+), 29 deletions(-)
drivers/net/ring/rte_eth_ring.c +8 -29
@@ -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;
@@ -304,11 +288,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
@@ -323,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));
@@ -338,9 +315,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 =NULL ; + eth_dev->data->numa_node = numa_node; +TAILQ_INIT (&(eth_dev->link_intr_cbs));/* finally assign rx and tx ops */
@@ -351,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 ;
@@ -561,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 v2 6/20 bonding: remove pci device driver
In reply to Bernard Iremongerremove pci_dev, pci_drv, rte_bond_pmd and pci_id_table.
initialise dev_flags, kdrv, driver, drv_name and numa_node fields in eth_dev data. handle numa_node for vdevs
handle RTE_ETH_DEV_INTR_LSC for vdevs
rename valid_bonded_device to check_for_bonded_device
--- drivers/net/bonding/rte_eth_bond_alb.c | 2 +- drivers/net/bonding/rte_eth_bond_api.c | 58 +++++++++--------------------- drivers/net/bonding/rte_eth_bond_pmd.c | 16 ++++----- drivers/net/bonding/rte_eth_bond_private.h | 2 +- 4 files changed, 26 insertions(+), 52 deletions(-)
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 +16 -42
127 lines not on this page · raw message
drivers/net/bonding/rte_eth_bond_pmd.c +8 -8
@@ -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 ;/* Configure device */
@@ -1362,9 +1362,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 ; }
@@ -1447,7 +1447,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 ;
@@ -1592,7 +1592,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;
@@ -1605,7 +1605,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 ;
@@ -1629,7 +1629,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 ;
@@ -1873,7 +1873,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
@@ -162,7 +162,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
PATCH v2 7/20 pcap: remove pci device driver
In reply to Bernard Iremongerremove rte_pcap_pmd and pci_dev.
initialise dev_flags, driver, drv_name, kdrv and numa_node fields in eth_dev data
--- drivers/net/pcap/rte_eth_pcap.c | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-)
drivers/net/pcap/rte_eth_pcap.c +9 -22
@@ -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. *
@@ -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;
@@ -845,8 +833,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
@@ -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);
@@ -874,14 +860,16 @@ 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 =NULL ; + (*eth_dev)->data->numa_node = numa_node;return 0 ; error:rte_free (data); -rte_free (pci_dev);rte_free (*internals);return -1 ;
@@ -1096,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
Re: [PATCH v2 07/20] pcap: remove pci device driver
Quoted 11 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Bernard Iremonger
Sent: Monday, October 5, 2015 11:30 AM
To: [email protected]
Subject: [dpdk-dev] [PATCH v2 07/20] pcap: remove pci device driverremove
rte_pcap_pmdandpci_dev.
initialisedev_flags, driver,drv_name, kdrv andnuma_nodefields ineth_devdataSigned-off-by Bernard Iremonger <[email protected]>
PATCH v2 8/20 af_packet: remove pci device driver
In reply to Bernard IremongerFrom: David Hunt <[email protected]>
initialise dev_flags, driver, kdrv, drv_name and numa_node fileds in eth_dev data.
--- drivers/net/af_packet/rte_eth_af_packet.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)
drivers/net/af_packet/rte_eth_af_packet.c +8 -12
@@ -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. *
@@ -431,7 +431,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;
@@ -469,10 +468,6 @@ rte_pmd_init_internals(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 )
@@ -655,8 +650,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 info in eth_dev +* - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */
@@ -669,17 +664,18 @@ 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)->pci_dev = pci_dev; + (*eth_dev)->data->dev_flags =0 ; + (*eth_dev)->driver =NULL ; + (*eth_dev)->data->drv_name =NULL ; + (*eth_dev)->data->kdrv =RTE_KDRV_NONE ; + (*eth_dev)->data->numa_node = numa_node;return 0 ; error:rte_free (data); -rte_free (pci_dev);if (*internals) {for (q =0 ; q < nb_queues; q++) {
Signature · 1 line
1.9.1
PATCH v2 9/20 xenvirt: remove pci device driver
In reply to Bernard IremongerFrom: David Hunt <[email protected]>
Initialise dev_flags, driver, kdrv, drv_name and numa_node in eth_dev data.
--- drivers/net/xenvirt/rte_eth_xenvirt.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)
drivers/net/xenvirt/rte_eth_xenvirt.c +5 -9
@@ -617,7 +617,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;
@@ -639,10 +638,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;
@@ -652,8 +647,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 ;
@@ -668,7 +661,11 @@ eth_dev_xenvirt_create(const char *name, const char *params, eth_dev->data = data; eth_dev->dev_ops = &ops; - eth_dev->pci_dev = pci_dev; + eth_dev->data->dev_flags =0 ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->data->drv_name =NULL ; + 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;
@@ -680,7 +677,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 v2 10/20 mpipe: remove pci device driver
In reply to Bernard IremongerFrom: David Hunt <[email protected]>
initialise dev_flags, kdrv, driver, drv_name and numa_node in eth_dev data.
--- drivers/net/mpipe/mpipe_tilegx.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/net/mpipe/mpipe_tilegx.c +6 -3
@@ -122,7 +122,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. */
@@ -1567,7 +1566,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;
@@ -1591,9 +1589,14 @@ 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 ; + eth_dev->data->kdrv =RTE_KDRV_NONE ; + eth_dev->driver =NULL ; + eth_dev->data->drv_name =NULL ; + 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;
Signature · 1 line
1.9.1
PATCH v2 11/20 ixgbe: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/ixgbe/ixgbe_ethdev.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/net/ixgbe/ixgbe_ethdev.c +4 -0
@@ -887,6 +887,8 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev) } pci_dev = eth_dev->pci_dev; +rte_eth_copy_dev_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;
@@ -1155,6 +1157,8 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev) pci_dev = eth_dev->pci_dev; +rte_eth_copy_dev_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;
Signature · 1 line
1.9.1
PATCH v2 12/20 e1000: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/e1000/em_ethdev.c | 3 +++ drivers/net/e1000/igb_ethdev.c | 5 +++++ 2 files changed, 8 insertions(+)
drivers/net/e1000/em_ethdev.c +3 -0
@@ -232,6 +232,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_dev_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
@@ -531,6 +531,9 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)uint32_t ctrl_ext; pci_dev = eth_dev->pci_dev; + +rte_eth_copy_dev_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;
@@ -739,6 +742,8 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev) pci_dev = eth_dev->pci_dev; +rte_eth_copy_dev_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;
Signature · 1 line
1.9.1
PATCH v2 13/20 i40e: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/i40e/i40e_ethdev.c | 3 +++ drivers/net/i40e/i40e_ethdev_vf.c | 2 ++ 2 files changed, 5 insertions(+)
drivers/net/i40e/i40e_ethdev.c +3 -0
@@ -408,6 +408,9 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)return 0 ; } pci_dev = dev->pci_dev; + +rte_eth_copy_dev_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
@@ -1187,6 +1187,8 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev)return 0 ; } +rte_eth_copy_dev_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;
Signature · 1 line
1.9.1
PATCH v2 14/20 fm10k: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/fm10k/fm10k_ethdev.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/fm10k/fm10k_ethdev.c +2 -0
@@ -2075,6 +2075,8 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)if (rte_eal_process_type () !=RTE_PROC_PRIMARY )return 0 ; +rte_eth_copy_dev_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 */
Signature · 1 line
1.9.1
PATCH v2 15/20 bnx2x: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/bnx2x/bnx2x_ethdev.c | 3 +++ 1 file changed, 3 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_dev_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;
Signature · 1 line
1.9.1
PATCH v2 16/20 cxgbe: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/cxgbe/cxgbe_ethdev.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/cxgbe/cxgbe_ethdev.c +3 -0
@@ -744,6 +744,9 @@ static int eth_cxgbe_dev_init(struct rte_eth_dev *eth_dev)return 0 ; pci_dev = eth_dev->pci_dev; + +rte_eth_copy_dev_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)
Signature · 1 line
1.9.1
PATCH v2 17/20 enic: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/enic/enic_ethdev.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/enic/enic_ethdev.c +1 -0
@@ -597,6 +597,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_dev_info (eth_dev, pdev); enic->pdev = pdev; addr = &pdev->addr;
Signature · 1 line
1.9.1
PATCH v2 18/20 mlx4: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/mlx4/mlx4.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/mlx4/mlx4.c +3 -0
@@ -4973,6 +4973,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_dev_info (eth_dev, pci_dev); + eth_dev->driver = &mlx4_driver; eth_dev->data->rx_mbuf_alloc_failed =0 ; eth_dev->data->mtu =ETHER_MTU ;
Signature · 1 line
1.9.1
PATCH v2 19/20 virtio: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/virtio/virtio_ethdev.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/virtio/virtio_ethdev.c +3 -0
@@ -1185,6 +1185,9 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) } pci_dev = eth_dev->pci_dev; + +rte_eth_copy_dev_info (eth_dev, pci_dev); +if (virtio_resource_init (pci_dev) <0 )return -1 ;
Signature · 1 line
1.9.1
PATCH v2 20/20 vmxnet3: copy pci device info to eth_dev data
In reply to Bernard Iremonger--- drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 ++ 1 file changed, 2 insertions(+)
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_dev_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 v2 1/1 vhost_xen: fix compile error in main.c
In reply to a message not in the archivechanges in v2:
update release notes
--- doc/guides/rel_notes/release_2_2.rst | 3 +++ examples/vhost_xen/main.c | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-)
doc/guides/rel_notes/release_2_2.rst +3 -0
@@ -65,6 +65,9 @@ Libraries Examples ~~~~~~~~ +* **vhost_xen: Fixed compile error.** + + Fixed compile error in examples/vhost_xen/main.c Other ~~~~~
examples/vhost_xen/main.c +5 -3
@@ -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
@@ -579,6 +579,7 @@ virtio_dev_rx(struct virtio_net *dev, struct rte_mbuf **pkts, uint32_t count)uint16_t res_base_idx, res_end_idx;uint16_t free_entries;uint8_t success =0 ; +void *userdata;LOG_DEBUG (VHOST_DATA ,"(%" PRIu64") virtio_dev_rx()\n" , dev->device_fh); vq = dev->virtqueue_rx;
@@ -656,13 +657,14 @@ virtio_dev_rx(struct virtio_net *dev, struct rte_mbuf **pkts, uint32_t count) vq->used->ring[res_cur_idx & (vq->size -1 )].len = packet_len;/* Copy mbuf data to buffer */ -rte_memcpy ((void *)(uintptr_t )buff_addr, (const void *)buff->data,rte_pktmbuf_data_len (buff)); + userdata = rte_pktmbuf_mtod(buff, void *); +rte_memcpy ((void *)(uintptr_t )buff_addr, userdata,rte_pktmbuf_data_len (buff)); res_cur_idx++; packet_success++;/* mergeable is disabled then a header is required per buffer. */ -rte_memcpy ((void *)(uintptr_t )buff_hdr_addr, (const void *)&virtio_hdr, vq->vhost_hlen); +rte_memcpy ((void *)(uintptr_t )buff_hdr_addr, (const void *)&virtio_hdr, vq->vhost_hlen);if (res_cur_idx < res_end_idx) {/* Prefetch descriptor index. */ rte_prefetch0 (&vq->desc[head[packet_success]]);
Signature · 1 line
1.9.1
Re: [PATCH v2 1/1] vhost_xen: fix compile error in main.c
Quoted 8 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Bernard Iremonger
Sent: Thursday, October 22, 2015 2:22 PM
To: [email protected]
Subject: [dpdk-dev] [PATCH v2 1/1]vhost_xen: fix compile error inmain.c
Quoted 5 lines
changes in v2:
update release notesSigned-off-by Bernard Iremonger <[email protected]>---
Quoted 4 lines
doc/guides/rel_notes/release_2_2.rst | 3 +++ examples/vhost_xen/main.c | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-)
Re: [PATCH v2 1/1] vhost_xen: fix compile error in main.c
In reply to Bernard Iremonger2015-10-22 14:21, Bernard Iremonger:
Quoted 4 lines
changes in v2:
update release notesSigned-off-by Bernard Iremonger <[email protected]>
Please what is the error?
examples/vhost_xen/main.c virtio_dev_rx(struct virtio_net *dev, struct rte_mbuf **pkts, uint32_t count) · line 667
Quoted 2 lines
examples/vhost_xen/main.c +1
-1-rte_memcpy ((void *)(uintptr_t )buff_hdr_addr, (const void *)&virtio_hdr, vq->vhost_hlen); +rte_memcpy ((void *)(uintptr_t )buff_hdr_addr, (const void *)&virtio_hdr, vq->vhost_hlen);
Is it just a spacing change here?
Re: [PATCH v2 1/1] vhost_xen: fix compile error in main.c
Hi Thomas,
Quoted 14 lines
-----Original Message-----
From: Thomas Monjalon [mailto:[email protected]]
Sent: Friday, October 30, 2015 5:01 PM
To: Iremonger, Bernard <[email protected]>
Cc: [email protected]
Subject: Re: [dpdk-dev] [PATCH v2 1/1]vhost_xen: fix compile error inmain.c2015-10-22 14:21, Bernard Iremonger:
Quoted 4 lines
changes in v2:
update release notesSigned-off-by Bernard Iremonger <[email protected]>
Quoted 8 lines
Please what is the error?
Review
Quoted 1 line
(quoted diff) +0
-1- rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (constvoid*)&virtio_hdr,
vq->vhost_hlen);Review
Quoted 1 line
(quoted diff) +1
-0+ rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const void*)&virtio_hdr,
vq->vhost_hlen);Is it just a spacing change here?
Yes, if I remember correctly, checkpatch objected.
Regards,
Bernard.
Re: [PATCH v2 1/1] vhost_xen: fix compile error in main.c
2015-10-30 17:07, Iremonger, Bernard:
Quoted 17 lines
Hi Thomas,
Quoted 15 lines
-----Original Message-----
From: Thomas Monjalon [mailto:[email protected]]
Sent: Friday, October 30, 2015 5:01 PM
To: Iremonger, Bernard <[email protected]>
Cc: [email protected]
Subject: Re: [dpdk-dev] [PATCH v2 1/1]vhost_xen: fix compile error inmain.c2015-10-22 14:21, Bernard Iremonger:
Quoted 4 lines
changes in v2:
update release notesSigned-off-by Bernard Iremonger <[email protected]>Please what is the error?
Please send a v3 (keeping the Acked-by) to explain what is the error.
v2 cover vmxnet3 hotplug support
In reply to a message not in the archiveadd PCI Port Hotplug support to the vmxnet3 PMD
This patch depends on 4 patches from the following patch set:
0000-remove-pci-driver-from-vdevs.patch
0001-librte_eal-add-RTE_KDRV_NONE-for-vdevs.patch 0002-librte_ether-add-fields-from-rte_pci_driver-to-rte_e.patch 0003-librte_ether-add-function-rte_eth_copy_dev_info.patch 0020-vmxnet3-copy-pci-device-info-to-eth_dev-data.patch
Changes in v2:
Update release notes.
Bernard Iremonger (1):
vmxnet3: add PCI Port Hotplug support
doc/guides/rel_notes/release_2_2.rst | 1 + drivers/net/vmxnet3/vmxnet3_ethdev.c | 33 +++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-)
Signature · 1 line
1.9.1
PATCH v2 1/1 vmxnet3: add PCI Port Hotplug support
--- doc/guides/rel_notes/release_2_2.rst | 1 + drivers/net/vmxnet3/vmxnet3_ethdev.c | 33 +++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-)
doc/guides/rel_notes/release_2_2.rst +1 -0
@@ -9,6 +9,7 @@ New Features * Added support for Jumbo Frames. * Optimize forwarding performance for Chelsio T5 40GbE cards. +* **Added port hotplug support to the vmxnet3 PMD.** Resolved Issues ---------------
drivers/net/vmxnet3/vmxnet3_ethdev.c +29 -4
@@ -70,6 +70,7 @@#define PROCESS_SYS_EVENTS 0static int eth_vmxnet3_dev_init (struct rte_eth_dev *eth_dev); +static int eth_vmxnet3_dev_uninit (struct rte_eth_dev *eth_dev);static int vmxnet3_dev_configure (struct rte_eth_dev *dev);static int vmxnet3_dev_start (struct rte_eth_dev *dev);static void vmxnet3_dev_stop (struct rte_eth_dev *dev);
@@ -294,13 +295,37 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)return 0 ; } +static int +eth_vmxnet3_dev_uninit (struct rte_eth_dev *eth_dev) +{ +struct vmxnet3_hw *hw = eth_dev->data->dev_private; + +PMD_INIT_FUNC_TRACE (); + +if (rte_eal_process_type () !=RTE_PROC_PRIMARY ) +return 0 ; + +if (hw->adapter_stopped ==0 ) +vmxnet3_dev_close (eth_dev); + + eth_dev->dev_ops =NULL ; + eth_dev->rx_pkt_burst =NULL ; + eth_dev->tx_pkt_burst =NULL ; + +rte_free (eth_dev->data->mac_addrs); + eth_dev->data->mac_addrs =NULL ; + +return 0 ; +} +static struct eth_driver rte_vmxnet3_pmd = { .pci_drv = { .name ="rte_vmxnet3_pmd" , .id_table = pci_id_vmxnet3_map, - .drv_flags =RTE_PCI_DRV_NEED_MAPPING , + .drv_flags =RTE_PCI_DRV_NEED_MAPPING |RTE_PCI_DRV_DETACHABLE , }, .eth_dev_init = eth_vmxnet3_dev_init, + .eth_dev_uninit = eth_vmxnet3_dev_uninit, .dev_private_size =sizeof (struct vmxnet3_hw ), };
@@ -579,7 +604,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)PMD_INIT_FUNC_TRACE (); -if (hw->adapter_stopped == TRUE) { +if (hw->adapter_stopped ==1 ) {PMD_INIT_LOG (DEBUG ,"Device already closed." );return ; }
@@ -595,7 +620,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)/* reset the device */ VMXNET3_WRITE_BAR1_REG (hw,VMXNET3_REG_CMD ,VMXNET3_CMD_RESET_DEV );PMD_INIT_LOG (DEBUG ,"Device reset." ); - hw->adapter_stopped = FALSE; + hw->adapter_stopped =0 ;vmxnet3_dev_clear_queues (dev);
@@ -615,7 +640,7 @@ vmxnet3_dev_close(struct rte_eth_dev *dev)PMD_INIT_FUNC_TRACE ();vmxnet3_dev_stop (dev); - hw->adapter_stopped = TRUE; + hw->adapter_stopped =1 ; } static void
Signature · 1 line
1.9.1
Re: [PATCH v2 1/1] vmxnet3: add PCI Port Hotplug support
Quoted 1 line · Bernard Iremonger
Signed-off-by Bernard Iremonger <[email protected]>
Any specific reason you changed assignment of adapter_stopped from TRUE/FALSE to 1/0? I saw mixed uses of TRUE/FALSE, true/false and 1/0 all over the DPDK code base.
Quoted 98 lines
---
doc/guides/rel_notes/release_2_2.rst| 1 +drivers/net/vmxnet3/vmxnet3_ethdev.c| 33 +++++++++++++++++++++++++++++----2 files changed, 30 insertions(+), 4 deletions(-)doc/guides/rel_notes/release_2_2.rst +1
-0@@ -9,6 +9,7 @@ New Features * Added support for Jumbo Frames. * Optimize forwarding performance for Chelsio T5 40GbE cards. +* **Added port hotplug support to the vmxnet3 PMD.**Resolved Issues
---------------drivers/net/vmxnet3/vmxnet3_ethdev.c +29
-4@@ -70,6 +70,7 @@#define PROCESS_SYS_EVENTS 0static int eth_vmxnet3_dev_init (struct rte_eth_dev *eth_dev); +static int eth_vmxnet3_dev_uninit (struct rte_eth_dev *eth_dev);static int vmxnet3_dev_configure (struct rte_eth_dev *dev);static int vmxnet3_dev_start (struct rte_eth_dev *dev);static void vmxnet3_dev_stop (struct rte_eth_dev *dev);@@ -294,13 +295,37 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)return 0 ; } +static int +eth_vmxnet3_dev_uninit (struct rte_eth_dev *eth_dev) +{ +struct vmxnet3_hw *hw = eth_dev->data->dev_private; + +PMD_INIT_FUNC_TRACE (); + +if (rte_eal_process_type () !=RTE_PROC_PRIMARY ) +return 0 ; + +if (hw->adapter_stopped ==0 ) +vmxnet3_dev_close (eth_dev); + + eth_dev->dev_ops =NULL ; + eth_dev->rx_pkt_burst =NULL ; + eth_dev->tx_pkt_burst =NULL ; + +rte_free (eth_dev->data->mac_addrs); + eth_dev->data->mac_addrs =NULL ; + +return 0 ; +} +static struct eth_driver rte_vmxnet3_pmd = { .pci_drv = { .name ="rte_vmxnet3_pmd" , .id_table = pci_id_vmxnet3_map, - .drv_flags =RTE_PCI_DRV_NEED_MAPPING , + .drv_flags =RTE_PCI_DRV_NEED_MAPPING |RTE_PCI_DRV_DETACHABLE , }, .eth_dev_init = eth_vmxnet3_dev_init, + .eth_dev_uninit = eth_vmxnet3_dev_uninit, .dev_private_size =sizeof (struct vmxnet3_hw ), };@@ -579,7 +604,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)PMD_INIT_FUNC_TRACE (); -if (hw->adapter_stopped == TRUE) { +if (hw->adapter_stopped ==1 ) {PMD_INIT_LOG (DEBUG ,"Device already closed." );return ; }@@ -595,7 +620,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)/* reset the device */ VMXNET3_WRITE_BAR1_REG (hw,VMXNET3_REG_CMD ,VMXNET3_CMD_RESET_DEV );PMD_INIT_LOG (DEBUG ,"Device reset." ); - hw->adapter_stopped = FALSE; + hw->adapter_stopped =0 ;vmxnet3_dev_clear_queues (dev);@@ -615,7 +640,7 @@ vmxnet3_dev_close(struct rte_eth_dev *dev)PMD_INIT_FUNC_TRACE ();vmxnet3_dev_stop (dev); - hw->adapter_stopped = TRUE; + hw->adapter_stopped =1 ; }static void
Signature · 1 line
1.9.1
v2 cover xenvirt hotplug support
In reply to a message not in the archiveadd Port Hotplug support to the xenvirt PMD
This patch depends on v5 of the following patch set:
remove-pci-driver-from-vdevs.patch
Changes in v2:
Rebase
Update release notes.
Bernard Iremonger (2):
xenvirt: add support for Port Hotplug
xenvirt: free queues in dev_close
doc/guides/rel_notes/release_2_2.rst | 2 + drivers/net/xenvirt/rte_eth_xenvirt.c | 73 +++++++++++++++++++++++++++++++++-- drivers/net/xenvirt/rte_xen_lib.c | 26 +++++++++++-- drivers/net/xenvirt/rte_xen_lib.h | 5 ++- 4 files changed, 98 insertions(+), 8 deletions(-)
Signature · 1 line
1.9.1
PATCH v2 1/2 xenvirt: add support for Port Hotplug
update release notes.
--- doc/guides/rel_notes/release_2_2.rst | 2 ++ drivers/net/xenvirt/rte_eth_xenvirt.c | 49 ++++++++++++++++++++++++++++++++++- drivers/net/xenvirt/rte_xen_lib.c | 26 ++++++++++++++++--- drivers/net/xenvirt/rte_xen_lib.h | 5 +++- 4 files changed, 76 insertions(+), 6 deletions(-)
doc/guides/rel_notes/release_2_2.rst +2 -0
@@ -13,6 +13,8 @@ New Features * This change required modifications to librte_ether and all vdev and pdev PMD's. +* **Added Port Hotplug support to xenvirt PMD.** + Resolved Issues ---------------
drivers/net/xenvirt/rte_eth_xenvirt.c +48 -1
71 lines not on this page · raw message
drivers/net/xenvirt/rte_xen_lib.c +22 -4
@@ -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
@@ -50,6 +50,7 @@#include <rte_common.h> #include <rte_string_fns.h> +#include <rte_malloc.h> #include "rte_xen_lib.h"
@@ -72,6 +73,8 @@ int gntalloc_fd = -1;static char *dompath =NULL ;/* handle to xenstore read/write operations */ static struct xs_handle *xs =NULL ; +/* flag to indicate if xenstore cleanup is required */ +static bool is_xenstore_cleaned_up;/* * Reserve a virtual address space.
@@ -275,7 +278,6 @@ xenstore_init(void) {unsigned int len, domid;char *buf; -static int cleanup =0 ;char *end; xs =xs_domain_open ();
@@ -301,16 +303,32 @@ xenstore_init(void)xs_transaction_start (xs);/* When to stop transaction */ -if (cleanup ==0 ) { +if (is_xenstore_cleaned_up ==0 ) {if (xenstore_cleanup ())return -1 ; - cleanup =1 ; + is_xenstore_cleaned_up =1 ; }return 0 ; }int +xenstore_uninit (void ) +{ +xs_close (xs); + +if (is_xenstore_cleaned_up ==0 ) { +if (xenstore_cleanup ()) +return -1 ; + is_xenstore_cleaned_up =1 ; + } +free (dompath); + dompath =NULL ; + +return 0 ; +} + +int xenstore_write (const char *key_str,const char *val_str) {char grant_path[PATH_MAX ];
drivers/net/xenvirt/rte_xen_lib.h +4 -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
@@ -93,6 +93,9 @@ intxenstore_init (void);int +xenstore_uninit (void ); + +int xenstore_write (const char *key_str,const char *val_str);int
Signature · 1 line
1.9.1
PATCH v2 2/2 xenvirt: free queues in dev_close
In reply to Bernard Iremonger--- drivers/net/xenvirt/rte_eth_xenvirt.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-)
drivers/net/xenvirt/rte_eth_xenvirt.c +22 -2
@@ -75,6 +75,9 @@ static struct rte_eth_link pmd_link = { .link_status = 0 }; +static void +eth_xenvirt_free_queues (struct rte_eth_dev *dev); +static inline struct rte_mbuf *rte_rxmbuf_alloc (struct rte_mempool *mp) {
@@ -326,7 +329,7 @@ eth_dev_stop(struct rte_eth_dev *dev)static void eth_dev_close (struct rte_eth_dev *dev) { -RTE_SET_USED (dev); +eth_xenvirt_free_queues (dev); } static void
@@ -362,8 +365,9 @@ eth_stats_reset(struct rte_eth_dev *dev) }static void -eth_queue_release(void *q __rte_unused) +eth_queue_release (void *q) { +rte_free (q); } static int
@@ -524,7 +528,23 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,return 0 ; } +static void +eth_xenvirt_free_queues (struct rte_eth_dev *dev) +{ +int i; +for (i =0 ; i < dev->data->nb_rx_queues; i++) { +eth_queue_release (dev->data->rx_queues[i]); + dev->data->rx_queues[i] =NULL ; + } + dev->data->nb_rx_queues =0 ; + +for (i =0 ; i < dev->data->nb_tx_queues; i++) { +eth_queue_release (dev->data->tx_queues[i]); + dev->data->tx_queues[i] =NULL ; + } + dev->data->nb_tx_queues =0 ; +}static const struct eth_dev_ops ops = { .dev_start = eth_dev_start,
Signature · 1 line
1.9.1
Re: [PATCH v2 0/2] xenvirt hotplug support
In reply to Bernard IremongerQuoted 9 lines · Bernard Iremonger
add Port Hotplug support to the xenvirt PMD
This patch depends on v5 of the following patch set:
remove-pci-driver-from-vdevs.patch
Changes in v2:
Rebase
Update release notes.
Quoted 11 lines
Bernard Iremonger (2):
xenvirt: add support for Port Hotplug
xenvirt: free queues indev_closedoc/guides/rel_notes/release_2_2.rst | 2 + drivers/net/xenvirt/rte_eth_xenvirt.c | 73 +++++++++++++++++++++++++++++++++-- drivers/net/xenvirt/rte_xen_lib.c | 26 +++++++++++-- drivers/net/xenvirt/rte_xen_lib.h | 5 ++- 4 files changed, 98 insertions(+), 8 deletions(-)
Thomas Monjalon
AppliedRe: [PATCH v2 0/2] xenvirt hotplug support
2015-10-30 05:42, Xie, Huawei:
Quoted 11 lines · Bernard Iremonger
Quoted 9 lines
add Port Hotplug support to the xenvirt PMD
This patch depends on v5 of the following patch set:
remove-pci-driver-from-vdevs.patch
Changes in v2:
Rebase
Update release notes.Acked-by Huawei Xie <[email protected]>
Applied, thanks