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 at 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

Reply via email to