From patchwork Thu Oct 29 18:36:35 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Iremonger, Bernard" X-Patchwork-Id: 8276 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 50EAD9246; Thu, 29 Oct 2015 19:37:41 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id E30FD91E7 for ; Thu, 29 Oct 2015 19:37:20 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 29 Oct 2015 11:37:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,215,1444719600"; d="scan'208";a="838661769" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga002.fm.intel.com with ESMTP; 29 Oct 2015 11:37:09 -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 t9TIb75O030139; Thu, 29 Oct 2015 18:37:07 GMT Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id t9TIb7bx032233; Thu, 29 Oct 2015 18:37:07 GMT Received: (from bairemon@localhost) by sivswdev01.ir.intel.com with id t9TIb7qu032229; Thu, 29 Oct 2015 18:37:07 GMT From: Bernard Iremonger To: dev@dpdk.org Date: Thu, 29 Oct 2015 18:36:35 +0000 Message-Id: <1446143795-31841-29-git-send-email-bernard.iremonger@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1446143795-31841-1-git-send-email-bernard.iremonger@intel.com> References: <1446143795-31841-1-git-send-email-bernard.iremonger@intel.com> Subject: [dpdk-dev] [PATCH v6 28/28] bonding: remove pci device 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 Acked-by: Tomasz Kulasek --- 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. */