bonding: remove fake pci interface
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 the function valid_bonded_device to check_for_bonded_device remove branches on pci_dev Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> Acked-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
This commit is contained in:
parent
ce1ad1621c
commit
71ba84b1cc
@ -1,7 +1,7 @@
|
|||||||
/*-
|
/*-
|
||||||
* BSD LICENSE
|
* BSD LICENSE
|
||||||
*
|
*
|
||||||
* Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
|
* Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* 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->rx_ring == NULL);
|
||||||
RTE_VERIFY(port->tx_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)
|
element_size = sizeof(struct slow_protocol_frame) + sizeof(struct rte_mbuf)
|
||||||
+ RTE_PKTMBUF_HEADROOM;
|
+ RTE_PKTMBUF_HEADROOM;
|
||||||
|
@ -65,7 +65,7 @@ bond_mode_alb_enable(struct rte_eth_dev *bond_dev)
|
|||||||
|
|
||||||
uint16_t data_size;
|
uint16_t data_size;
|
||||||
char mem_name[RTE_ETH_NAME_MAX_LEN];
|
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 */
|
/* Fill hash table with initial values */
|
||||||
memset(hash_table, 0, sizeof(struct client_data) * ALB_HASH_TABLE_SIZE);
|
memset(hash_table, 0, sizeof(struct client_data) * ALB_HASH_TABLE_SIZE);
|
||||||
|
@ -47,14 +47,14 @@
|
|||||||
const char pmd_bond_driver_name[] = "rte_bond_pmd";
|
const char pmd_bond_driver_name[] = "rte_bond_pmd";
|
||||||
|
|
||||||
int
|
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 */
|
/* Check valid pointer */
|
||||||
if (eth_dev->driver->pci_drv.name == NULL)
|
if (eth_dev->data->drv_name == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* return 0 if driver name matches */
|
/* return 0 if driver name matches */
|
||||||
return eth_dev->driver->pci_drv.name != pmd_bond_driver_name;
|
return eth_dev->data->drv_name != pmd_bond_driver_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -63,7 +63,7 @@ valid_bonded_port_id(uint8_t port_id)
|
|||||||
if (!rte_eth_dev_is_valid_port(port_id))
|
if (!rte_eth_dev_is_valid_port(port_id))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return valid_bonded_ethdev(&rte_eth_devices[port_id]);
|
return check_for_bonded_ethdev(&rte_eth_devices[port_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -74,7 +74,7 @@ valid_slave_port_id(uint8_t port_id)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Verify that port_id refers to a non bonded port */
|
/* 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 -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -165,28 +165,11 @@ number_of_sockets(void)
|
|||||||
return ++sockets;
|
return ++sockets;
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
int
|
||||||
rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
|
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 bond_dev_private *internals = NULL;
|
||||||
struct rte_eth_dev *eth_dev = 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
|
/* now do all data allocation - for eth_dev structure, dummy pci driver
|
||||||
* and internal (private) data
|
* and internal (private) data
|
||||||
@ -203,14 +186,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
|
|||||||
goto err;
|
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);
|
internals = rte_zmalloc_socket(name, sizeof(*internals), 0, socket_id);
|
||||||
if (internals == NULL) {
|
if (internals == NULL) {
|
||||||
RTE_BOND_LOG(ERR, "Unable to malloc internals on socket");
|
RTE_BOND_LOG(ERR, "Unable to malloc internals on socket");
|
||||||
@ -224,11 +199,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
|
|||||||
goto err;
|
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->dev_private = internals;
|
||||||
eth_dev->data->nb_rx_queues = (uint16_t)1;
|
eth_dev->data->nb_rx_queues = (uint16_t)1;
|
||||||
eth_dev->data->nb_tx_queues = (uint16_t)1;
|
eth_dev->data->nb_tx_queues = (uint16_t)1;
|
||||||
@ -250,8 +220,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
|
|||||||
eth_dev->data->all_multicast = 0;
|
eth_dev->data->all_multicast = 0;
|
||||||
|
|
||||||
eth_dev->dev_ops = &default_dev_ops;
|
eth_dev->dev_ops = &default_dev_ops;
|
||||||
eth_dev->pci_dev = pci_dev;
|
|
||||||
|
|
||||||
eth_dev->data->dev_flags = RTE_ETH_DEV_INTR_LSC |
|
eth_dev->data->dev_flags = RTE_ETH_DEV_INTR_LSC |
|
||||||
RTE_ETH_DEV_DETACHABLE;
|
RTE_ETH_DEV_DETACHABLE;
|
||||||
eth_dev->driver = NULL;
|
eth_dev->driver = NULL;
|
||||||
@ -297,7 +265,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
|
|||||||
return eth_dev->data->port_id;
|
return eth_dev->data->port_id;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
rte_free(pci_dev);
|
|
||||||
rte_free(internals);
|
rte_free(internals);
|
||||||
if (eth_dev != NULL) {
|
if (eth_dev != NULL) {
|
||||||
rte_free(eth_dev->data->mac_addrs);
|
rte_free(eth_dev->data->mac_addrs);
|
||||||
@ -329,7 +296,6 @@ rte_eth_bond_free(const char *name)
|
|||||||
eth_dev->rx_pkt_burst = NULL;
|
eth_dev->rx_pkt_burst = NULL;
|
||||||
eth_dev->tx_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->dev_private);
|
||||||
rte_free(eth_dev->data->mac_addrs);
|
rte_free(eth_dev->data->mac_addrs);
|
||||||
|
|
||||||
@ -358,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
|
/* Verify that new slave device is not already a slave of another
|
||||||
* bonded device */
|
* bonded device */
|
||||||
for (i = rte_eth_dev_count()-1; i >= 0; i--) {
|
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;
|
temp_internals = rte_eth_devices[i].data->dev_private;
|
||||||
|
|
||||||
for (j = 0; j < temp_internals->slave_count; j++) {
|
for (j = 0; j < temp_internals->slave_count; j++) {
|
||||||
|
@ -1307,7 +1307,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
|
|||||||
rte_eth_dev_stop(slave_eth_dev->data->port_id);
|
rte_eth_dev_stop(slave_eth_dev->data->port_id);
|
||||||
|
|
||||||
/* Enable interrupts on slave device if supported */
|
/* 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;
|
slave_eth_dev->data->dev_conf.intr_conf.lsc = 1;
|
||||||
|
|
||||||
/* If RSS is enabled for bonding, try to enable it for slaves */
|
/* If RSS is enabled for bonding, try to enable it for slaves */
|
||||||
@ -1403,7 +1403,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* If lsc interrupt is set, check initial slave's link status */
|
/* 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,
|
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);
|
||||||
|
|
||||||
@ -1444,7 +1444,7 @@ slave_add(struct bond_dev_private *internals,
|
|||||||
|
|
||||||
/* If slave device doesn't support interrupts then we need to enabled
|
/* If slave device doesn't support interrupts then we need to enabled
|
||||||
* polling to monitor link status */
|
* 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;
|
slave_details->link_status_poll_enabled = 1;
|
||||||
|
|
||||||
if (!internals->link_status_polling_enabled) {
|
if (!internals->link_status_polling_enabled) {
|
||||||
@ -1488,7 +1488,7 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* slave eth dev will be started by bonded device */
|
/* 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)",
|
RTE_BOND_LOG(ERR, "User tried to explicitly start a slave eth_dev (%d)",
|
||||||
eth_dev->data->port_id);
|
eth_dev->data->port_id);
|
||||||
return -1;
|
return -1;
|
||||||
@ -1633,7 +1633,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->max_tx_queues = (uint16_t)512;
|
||||||
|
|
||||||
dev_info->min_rx_bufsize = 0;
|
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->rx_offload_capa = internals->rx_offload_capa;
|
||||||
dev_info->tx_offload_capa = internals->tx_offload_capa;
|
dev_info->tx_offload_capa = internals->tx_offload_capa;
|
||||||
@ -1649,7 +1649,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 *)
|
struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)
|
||||||
rte_zmalloc_socket(NULL, sizeof(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)
|
if (bd_rx_q == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -1673,7 +1673,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 *)
|
struct bond_tx_queue *bd_tx_q = (struct bond_tx_queue *)
|
||||||
rte_zmalloc_socket(NULL, sizeof(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)
|
if (bd_tx_q == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
@ -1926,7 +1926,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];
|
bonded_eth_dev = &rte_eth_devices[*(uint8_t *)param];
|
||||||
slave_eth_dev = &rte_eth_devices[port_id];
|
slave_eth_dev = &rte_eth_devices[port_id];
|
||||||
|
|
||||||
if (valid_bonded_ethdev(bonded_eth_dev))
|
if (check_for_bonded_ethdev(bonded_eth_dev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
internals = bonded_eth_dev->data->dev_private;
|
internals = bonded_eth_dev->data->dev_private;
|
||||||
|
@ -174,7 +174,7 @@ struct bond_dev_private {
|
|||||||
extern struct eth_dev_ops default_dev_ops;
|
extern struct eth_dev_ops default_dev_ops;
|
||||||
|
|
||||||
int
|
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.
|
/* Search given slave array to find possition of given id.
|
||||||
* Return slave pos or slaves_count if not found. */
|
* Return slave pos or slaves_count if not found. */
|
||||||
|
Loading…
Reference in New Issue
Block a user