From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 8B2338E8C for ; Mon, 12 Oct 2015 18:25:46 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP; 12 Oct 2015 09:25:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,673,1437462000"; d="scan'208";a="579076464" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by FMSMGA003.fm.intel.com with ESMTP; 12 Oct 2015 09:25:44 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t9CGPhLk005588; Mon, 12 Oct 2015 17:25:43 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id t9CGPhUe013208; Mon, 12 Oct 2015 17:25:43 +0100 Received: (from bairemon@localhost) by sivswdev01.ir.intel.com with id t9CGPh6B013204; Mon, 12 Oct 2015 17:25:43 +0100 From: Bernard Iremonger To: dev@dpdk.org Date: Mon, 12 Oct 2015 17:25:06 +0100 Message-Id: <1444667120-12891-7-git-send-email-bernard.iremonger@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1444667120-12891-1-git-send-email-bernard.iremonger@intel.com> References: <1444667120-12891-1-git-send-email-bernard.iremonger@intel.com> Subject: [dpdk-dev] [PATCH v3 06/20] bonding: remove pci device driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Oct 2015 16:25:47 -0000 remove 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 Signed-off-by: Bernard Iremonger --- 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(-) 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 0681d1a..55f028f 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -45,14 +45,17 @@ #define DEFAULT_POLLING_INTERVAL_10_MS (10) 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 @@ -61,7 +64,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 @@ -72,7 +75,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; @@ -163,30 +166,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 @@ -203,14 +187,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"); @@ -224,11 +200,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; @@ -250,7 +221,12 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id) eth_dev->data->all_multicast = 0; 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 | RTE_ETH_DEV_BONDED; + eth_dev->driver = NULL; + eth_dev->data->kdrv = RTE_KDRV_NONE; + eth_dev->data->drv_name = NULL; + eth_dev->data->numa_node = socket_id; rte_spinlock_init(&internals->lock); @@ -287,7 +263,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); @@ -319,7 +294,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); @@ -348,7 +322,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..f4f29c5 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; } @@ -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