From: Bernard Iremonger <bernard.iremonger@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v6 28/28] bonding: remove pci device
Date: Thu, 29 Oct 2015 18:36:35 +0000 [thread overview]
Message-ID: <1446143795-31841-29-git-send-email-bernard.iremonger@intel.com> (raw)
In-Reply-To: <1446143795-31841-1-git-send-email-bernard.iremonger@intel.com>
remove 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 valid_bonded_device to check_for_bonded_device
remove branches on pci_dev
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
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 | 51 ++++++------------------------
drivers/net/bonding/rte_eth_bond_pmd.c | 18 +++++------
drivers/net/bonding/rte_eth_bond_private.h | 2 +-
5 files changed, 23 insertions(+), 54 deletions(-)
diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index c0f0b99..ee2964a 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -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;
diff --git a/drivers/net/bonding/rte_eth_bond_alb.c b/drivers/net/bonding/rte_eth_bond_alb.c
index 6df318e..3157543 100644
--- a/drivers/net/bonding/rte_eth_bond_alb.c
+++ b/drivers/net/bonding/rte_eth_bond_alb.c
@@ -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);
diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
index a852dd2..c2b626a 100644
--- a/drivers/net/bonding/rte_eth_bond_api.c
+++ b/drivers/net/bonding/rte_eth_bond_api.c
@@ -47,14 +47,17 @@
const char pmd_bond_driver_name[] = "rte_bond_pmd";
int
-valid_bonded_ethdev(const struct rte_eth_dev *eth_dev)
+check_for_bonded_ethdev(const struct rte_eth_dev *eth_dev)
{
/* Check valid pointer */
- if (eth_dev->driver->pci_drv.name == NULL)
+ if (!eth_dev)
return -1;
- /* return 0 if driver name matches */
- return eth_dev->driver->pci_drv.name != pmd_bond_driver_name;
+ /* return 0 if bonded device */
+ if (eth_dev->data->dev_flags & RTE_ETH_DEV_BONDED)
+ return 0;
+ else
+ return 1;
}
int
@@ -63,7 +66,7 @@ valid_bonded_port_id(uint8_t port_id)
if (!rte_eth_dev_is_valid_port(port_id))
return -1;
- return valid_bonded_ethdev(&rte_eth_devices[port_id]);
+ return check_for_bonded_ethdev(&rte_eth_devices[port_id]);
}
int
@@ -74,7 +77,7 @@ valid_slave_port_id(uint8_t port_id)
return -1;
/* Verify that port_id refers to a non bonded port */
- if (!valid_bonded_ethdev(&rte_eth_devices[port_id]))
+ if (check_for_bonded_ethdev(&rte_eth_devices[port_id]) == 0)
return -1;
return 0;
@@ -165,30 +168,11 @@ 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,
- .vendor_id = PCI_ANY_ID,
- .subsystem_vendor_id = PCI_ANY_ID,
-};
-
-static struct eth_driver rte_bond_pmd = {
- .pci_drv = {
- .name = pmd_bond_driver_name,
- .drv_flags = RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE,
- .id_table = &pci_id_table,
- },
-};
-
int
rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
{
- struct rte_pci_device *pci_dev = NULL;
struct bond_dev_private *internals = NULL;
struct rte_eth_dev *eth_dev = NULL;
- struct rte_pci_driver *pci_drv = NULL;
/* now do all data allocation - for eth_dev structure, dummy pci driver
* and internal (private) data
@@ -205,14 +189,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
goto err;
}
- pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, socket_id);
- if (pci_dev == NULL) {
- RTE_BOND_LOG(ERR, "Unable to malloc pci dev on socket");
- goto err;
- }
-
- pci_drv = &rte_bond_pmd.pci_drv;
-
internals = rte_zmalloc_socket(name, sizeof(*internals), 0, socket_id);
if (internals == NULL) {
RTE_BOND_LOG(ERR, "Unable to malloc internals on socket");
@@ -226,11 +202,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
goto err;
}
- pci_dev->numa_node = socket_id;
- pci_drv->name = pmd_bond_driver_name;
- pci_dev->driver = pci_drv;
-
- eth_dev->driver = &rte_bond_pmd;
eth_dev->data->dev_private = internals;
eth_dev->data->nb_rx_queues = (uint16_t)1;
eth_dev->data->nb_tx_queues = (uint16_t)1;
@@ -294,7 +265,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
return eth_dev->data->port_id;
err:
- rte_free(pci_dev);
rte_free(internals);
if (eth_dev != NULL) {
rte_free(eth_dev->data->mac_addrs);
@@ -326,7 +296,6 @@ rte_eth_bond_free(const char *name)
eth_dev->rx_pkt_burst = NULL;
eth_dev->tx_pkt_burst = NULL;
- rte_free(eth_dev->pci_dev);
rte_free(eth_dev->data->dev_private);
rte_free(eth_dev->data->mac_addrs);
@@ -355,7 +324,7 @@ __eth_bond_slave_add_lock_free(uint8_t bonded_port_id, uint8_t slave_port_id)
/* Verify that new slave device is not already a slave of another
* bonded device */
for (i = rte_eth_dev_count()-1; i >= 0; i--) {
- if (valid_bonded_ethdev(&rte_eth_devices[i]) == 0) {
+ if (check_for_bonded_ethdev(&rte_eth_devices[i]) == 0) {
temp_internals = rte_eth_devices[i].data->dev_private;
for (j = 0; j < temp_internals->slave_count; j++) {
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 5cc6372..016c9cb 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -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;
}
@@ -1403,7 +1403,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) {
@@ -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;
diff --git a/drivers/net/bonding/rte_eth_bond_private.h b/drivers/net/bonding/rte_eth_bond_private.h
index 038bca6..82dadfc 100644
--- a/drivers/net/bonding/rte_eth_bond_private.h
+++ b/drivers/net/bonding/rte_eth_bond_private.h
@@ -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. */
--
1.9.1
next prev parent reply other threads:[~2015-10-29 18:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <PATCH v6>
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 00/28] remove pci driver from vdevs Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 01/28] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 02/28] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 03/28] librte_ether: add function rte_eth_copy_dev_info Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 04/28] ixgbe: copy pci device info to eth_dev data Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 05/28] e1000: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 06/28] i40e: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 07/28] fm10k: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 08/28] bnx2x: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 09/28] cxgbe: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 10/28] enic: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 11/28] mlx4: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 12/28] virtio: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 13/28] vmxnet3: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 14/28] null: copy " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 15/28] ring: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 16/28] pcap: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 17/28] af_packet: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 18/28] xenvirt: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 19/28] mpipe: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 20/28] bonding: " Bernard Iremonger
2015-10-30 13:12 ` Kulasek, TomaszX
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 21/28] librte_ether: remove branches on pci_dev Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 22/28] null: remove pci device Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 23/28] ring: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 24/28] pcap: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 25/28] af_packet: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 26/28] xenvirt: " Bernard Iremonger
2015-10-29 18:36 ` [dpdk-dev] [PATCH v6 27/28] mpipe: " Bernard Iremonger
2015-10-29 18:36 ` Bernard Iremonger [this message]
2015-10-30 13:04 ` [dpdk-dev] [PATCH v6 28/28] bonding: " Kulasek, TomaszX
2015-10-30 13:32 ` [dpdk-dev] [PATCH v6 00/28] remove pci driver from vdevs David Marchand
2015-10-30 14:00 ` Bruce Richardson
2015-10-30 14:33 ` Qiu, Michael
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1446143795-31841-29-git-send-email-bernard.iremonger@intel.com \
--to=bernard.iremonger@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).