ethdev: remove detachable device flag
This flag is not necessary at the ether layer anymore. Buses are able to advertise their hotplug support. The ether layer can rely upon this capability instead of a special flag. Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: John McNamara <john.mcnamara@intel.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
This commit is contained in:
parent
02f01267de
commit
00a3d8104a
doc/guides
drivers/net
af_packet
ark
avp
bnxt
bonding
e1000
fm10k
i40e
ixgbe
kni
liquidio
mlx4
mlx5
nfp
null
pcap
ring
sfc
softnic
tap
vhost
virtio
vmxnet3
lib/librte_ether
@ -101,10 +101,6 @@ Limitations
|
|||||||
|
|
||||||
* The framework can only be enabled with Linux. BSD is not supported.
|
* The framework can only be enabled with Linux. BSD is not supported.
|
||||||
|
|
||||||
* To detach a port, the port should be backed by a device that igb_uio
|
|
||||||
or VFIO manages.
|
|
||||||
|
|
||||||
* Not all PMDs support detaching feature.
|
* Not all PMDs support detaching feature.
|
||||||
To know whether a PMD can support detaching, search for the
|
The underlying bus must support hot-unplug. If not supported,
|
||||||
"RTE_ETH_DEV_DETACHABLE" flag in rte_eth_dev::data::dev_flags. If the flag is
|
the function ``rte_eth_dev_detach()`` will return negative ENOTSUP.
|
||||||
defined in the PMD, detaching is supported.
|
|
||||||
|
@ -48,14 +48,6 @@ Deprecation Notices
|
|||||||
Target release for removal of the legacy API will be defined once most
|
Target release for removal of the legacy API will be defined once most
|
||||||
PMDs have switched to rte_flow.
|
PMDs have switched to rte_flow.
|
||||||
|
|
||||||
* ethdev: The device flag advertizing hotplug capability
|
|
||||||
``RTE_ETH_DEV_DETACHABLE`` is not needed anymore and will be removed in
|
|
||||||
v17.11.
|
|
||||||
This capability is verified upon calling the relevant hotplug functions in EAL
|
|
||||||
by checking that the ``unplug`` ops is set in the bus. This verification is
|
|
||||||
done by the EAL and not by the ``ethdev`` layer anymore. Users relying on this
|
|
||||||
flag being present only have to remove their checks to follow the change.
|
|
||||||
|
|
||||||
* ethdev: new parameters - ``rte_security_capabilities`` and
|
* ethdev: new parameters - ``rte_security_capabilities`` and
|
||||||
``rte_security_ops`` will be added to ``rte_eth_dev_info`` and
|
``rte_security_ops`` will be added to ``rte_eth_dev_info`` and
|
||||||
``rte_eth_dev`` respectively to support security operations like
|
``rte_eth_dev`` respectively to support security operations like
|
||||||
|
@ -284,6 +284,12 @@ API Changes
|
|||||||
The size of internal device name is increased to 64 characters
|
The size of internal device name is increased to 64 characters
|
||||||
to allow for storing longer bus specific name.
|
to allow for storing longer bus specific name.
|
||||||
|
|
||||||
|
* **Ethdev flag RTE_ETH_DEV_DETACHABLE was removed**
|
||||||
|
|
||||||
|
This flag is not necessary anymore, with the new hotplug implementation.
|
||||||
|
It is now removed from the ether library. Its semantic is expressed at the bus
|
||||||
|
and PMD level.
|
||||||
|
|
||||||
* **Service cores API updated for usability**
|
* **Service cores API updated for usability**
|
||||||
|
|
||||||
The service cores API has been changed, removing pointers from the API
|
The service cores API has been changed, removing pointers from the API
|
||||||
|
@ -814,7 +814,6 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
|
|||||||
|
|
||||||
(*eth_dev)->data = data;
|
(*eth_dev)->data = data;
|
||||||
(*eth_dev)->dev_ops = &ops;
|
(*eth_dev)->dev_ops = &ops;
|
||||||
(*eth_dev)->data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -342,7 +342,6 @@ eth_ark_dev_init(struct rte_eth_dev *dev)
|
|||||||
/* We are a single function multi-port device. */
|
/* We are a single function multi-port device. */
|
||||||
ret = ark_config_device(dev);
|
ret = ark_config_device(dev);
|
||||||
dev->dev_ops = &ark_eth_dev_ops;
|
dev->dev_ops = &ark_eth_dev_ops;
|
||||||
dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
dev->data->mac_addrs = rte_zmalloc("ark", ETHER_ADDR_LEN, 0);
|
dev->data->mac_addrs = rte_zmalloc("ark", ETHER_ADDR_LEN, 0);
|
||||||
if (!dev->data->mac_addrs) {
|
if (!dev->data->mac_addrs) {
|
||||||
|
@ -1004,8 +1004,6 @@ eth_avp_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
|
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
/* Check current migration status */
|
/* Check current migration status */
|
||||||
if (avp_dev_migration_pending(eth_dev)) {
|
if (avp_dev_migration_pending(eth_dev)) {
|
||||||
PMD_DRV_LOG(ERR, "VM live migration operation in progress\n");
|
PMD_DRV_LOG(ERR, "VM live migration operation in progress\n");
|
||||||
|
@ -2800,7 +2800,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
RTE_LOG(INFO, PMD, "%s\n", bnxt_version);
|
RTE_LOG(INFO, PMD, "%s\n", bnxt_version);
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
bp = eth_dev->data->dev_private;
|
bp = eth_dev->data->dev_private;
|
||||||
|
|
||||||
|
@ -2761,8 +2761,7 @@ bond_alloc(struct rte_vdev_device *dev, uint8_t mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
eth_dev->dev_ops = &default_dev_ops;
|
eth_dev->dev_ops = &default_dev_ops;
|
||||||
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_spinlock_init(&internals->lock);
|
rte_spinlock_init(&internals->lock);
|
||||||
|
|
||||||
|
@ -341,7 +341,6 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
hw->hw_addr = (void *)pci_dev->mem_resource[0].addr;
|
hw->hw_addr = (void *)pci_dev->mem_resource[0].addr;
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
|
@ -818,7 +818,6 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
hw->hw_addr= (void *)pci_dev->mem_resource[0].addr;
|
hw->hw_addr= (void *)pci_dev->mem_resource[0].addr;
|
||||||
|
|
||||||
@ -1053,7 +1052,6 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
|
|
||||||
pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
|
pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
hw->vendor_id = pci_dev->id.vendor_id;
|
hw->vendor_id = pci_dev->id.vendor_id;
|
||||||
|
@ -3019,7 +3019,6 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rte_eth_copy_pci_info(dev, pdev);
|
rte_eth_copy_pci_info(dev, pdev);
|
||||||
dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
macvlan = FM10K_DEV_PRIVATE_TO_MACVLAN(dev->data->dev_private);
|
macvlan = FM10K_DEV_PRIVATE_TO_MACVLAN(dev->data->dev_private);
|
||||||
memset(macvlan, 0, sizeof(*macvlan));
|
memset(macvlan, 0, sizeof(*macvlan));
|
||||||
|
@ -1100,7 +1100,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)
|
|||||||
intr_handle = &pci_dev->intr_handle;
|
intr_handle = &pci_dev->intr_handle;
|
||||||
|
|
||||||
rte_eth_copy_pci_info(dev, pci_dev);
|
rte_eth_copy_pci_info(dev, pci_dev);
|
||||||
dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
pf->adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
|
pf->adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
|
||||||
pf->adapter->eth_dev = dev;
|
pf->adapter->eth_dev = dev;
|
||||||
|
@ -1461,7 +1461,6 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
i40e_set_default_ptype_table(eth_dev);
|
i40e_set_default_ptype_table(eth_dev);
|
||||||
i40e_set_default_pctype_table(eth_dev);
|
i40e_set_default_pctype_table(eth_dev);
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
hw->vendor_id = pci_dev->id.vendor_id;
|
hw->vendor_id = pci_dev->id.vendor_id;
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
|
@ -1174,7 +1174,6 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
/* Vendor and Device ID need to be set before init of shared code */
|
/* Vendor and Device ID need to be set before init of shared code */
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
@ -1635,7 +1634,6 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
hw->vendor_id = pci_dev->id.vendor_id;
|
hw->vendor_id = pci_dev->id.vendor_id;
|
||||||
|
@ -397,8 +397,6 @@ eth_kni_create(struct rte_vdev_device *vdev,
|
|||||||
eth_dev->data = data;
|
eth_dev->data = data;
|
||||||
eth_dev->dev_ops = ð_kni_ops;
|
eth_dev->dev_ops = ð_kni_ops;
|
||||||
|
|
||||||
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
internals->no_request_thread = args->no_request_thread;
|
internals->no_request_thread = args->no_request_thread;
|
||||||
|
|
||||||
return eth_dev;
|
return eth_dev;
|
||||||
|
@ -2079,7 +2079,6 @@ lio_eth_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pdev);
|
rte_eth_copy_pci_info(eth_dev, pdev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
if (pdev->mem_resource[0].addr) {
|
if (pdev->mem_resource[0].addr) {
|
||||||
lio_dev->hw_addr = pdev->mem_resource[0].addr;
|
lio_dev->hw_addr = pdev->mem_resource[0].addr;
|
||||||
|
@ -637,7 +637,6 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
|
|||||||
eth_dev->intr_handle = &priv->intr_handle;
|
eth_dev->intr_handle = &priv->intr_handle;
|
||||||
priv->dev = eth_dev;
|
priv->dev = eth_dev;
|
||||||
eth_dev->dev_ops = &mlx4_dev_ops;
|
eth_dev->dev_ops = &mlx4_dev_ops;
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
/* Bring Ethernet device up. */
|
/* Bring Ethernet device up. */
|
||||||
DEBUG("forcing Ethernet interface up");
|
DEBUG("forcing Ethernet interface up");
|
||||||
mlx4_dev_set_link_up(priv->dev);
|
mlx4_dev_set_link_up(priv->dev);
|
||||||
|
@ -918,7 +918,6 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
|
|||||||
eth_dev->data->mac_addrs = priv->mac;
|
eth_dev->data->mac_addrs = priv->mac;
|
||||||
eth_dev->device = &pci_dev->device;
|
eth_dev->device = &pci_dev->device;
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
eth_dev->device->driver = &mlx5_driver.driver;
|
eth_dev->device->driver = &mlx5_driver.driver;
|
||||||
priv->dev = eth_dev;
|
priv->dev = eth_dev;
|
||||||
eth_dev->dev_ops = &mlx5_dev_ops;
|
eth_dev->dev_ops = &mlx5_dev_ops;
|
||||||
|
@ -2668,9 +2668,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
/* hotplug is not possible with multiport PF */
|
|
||||||
if (!hw->pf_multiport_enabled)
|
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
hw->vendor_id = pci_dev->id.vendor_id;
|
hw->vendor_id = pci_dev->id.vendor_id;
|
||||||
@ -3016,6 +3013,22 @@ static int eth_nfp_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
|
|||||||
|
|
||||||
static int eth_nfp_pci_remove(struct rte_pci_device *pci_dev)
|
static int eth_nfp_pci_remove(struct rte_pci_device *pci_dev)
|
||||||
{
|
{
|
||||||
|
struct rte_eth_dev *eth_dev;
|
||||||
|
struct nfp_net_hw *hw, *hwport0;
|
||||||
|
int port = 0;
|
||||||
|
|
||||||
|
eth_dev = rte_eth_dev_allocated(pci_dev->device.name);
|
||||||
|
if ((pci_dev->id.device_id == PCI_DEVICE_ID_NFP4000_PF_NIC) ||
|
||||||
|
(pci_dev->id.device_id == PCI_DEVICE_ID_NFP6000_PF_NIC)) {
|
||||||
|
port = get_pf_port_number(eth_dev->data->name);
|
||||||
|
hwport0 = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
|
||||||
|
hw = &hwport0[port];
|
||||||
|
} else {
|
||||||
|
hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
|
||||||
|
}
|
||||||
|
/* hotplug is not possible with multiport PF */
|
||||||
|
if (!hw->pf_multiport_enabled)
|
||||||
|
return -ENOTSUP;
|
||||||
return rte_eth_dev_pci_generic_remove(pci_dev, NULL);
|
return rte_eth_dev_pci_generic_remove(pci_dev, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -542,8 +542,6 @@ eth_dev_null_create(struct rte_vdev_device *dev,
|
|||||||
eth_dev->data = data;
|
eth_dev->data = data;
|
||||||
eth_dev->dev_ops = &ops;
|
eth_dev->dev_ops = &ops;
|
||||||
|
|
||||||
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
/* finally assign rx and tx ops */
|
/* finally assign rx and tx ops */
|
||||||
if (packet_copy) {
|
if (packet_copy) {
|
||||||
eth_dev->rx_pkt_burst = eth_null_copy_rx;
|
eth_dev->rx_pkt_burst = eth_null_copy_rx;
|
||||||
|
@ -840,7 +840,6 @@ pmd_init_internals(struct rte_vdev_device *vdev,
|
|||||||
*/
|
*/
|
||||||
(*eth_dev)->data = data;
|
(*eth_dev)->data = data;
|
||||||
(*eth_dev)->dev_ops = &ops;
|
(*eth_dev)->dev_ops = &ops;
|
||||||
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -358,7 +358,6 @@ do_eth_dev_ring_create(const char *name,
|
|||||||
|
|
||||||
eth_dev->data = data;
|
eth_dev->data = data;
|
||||||
eth_dev->dev_ops = &ops;
|
eth_dev->dev_ops = &ops;
|
||||||
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
data->kdrv = RTE_KDRV_NONE;
|
data->kdrv = RTE_KDRV_NONE;
|
||||||
data->numa_node = numa_node;
|
data->numa_node = numa_node;
|
||||||
|
|
||||||
|
@ -1791,8 +1791,6 @@ sfc_eth_dev_init(struct rte_eth_dev *dev)
|
|||||||
/* Copy PCI device info to the dev->data */
|
/* Copy PCI device info to the dev->data */
|
||||||
rte_eth_copy_pci_info(dev, pci_dev);
|
rte_eth_copy_pci_info(dev, pci_dev);
|
||||||
|
|
||||||
dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
rc = sfc_kvargs_parse(sa);
|
rc = sfc_kvargs_parse(sa);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
goto fail_kvargs_parse;
|
goto fail_kvargs_parse;
|
||||||
|
@ -557,7 +557,6 @@ pmd_ethdev_register(struct rte_vdev_device *vdev,
|
|||||||
soft_dev->data->promiscuous = 1;
|
soft_dev->data->promiscuous = 1;
|
||||||
soft_dev->data->kdrv = RTE_KDRV_NONE;
|
soft_dev->data->kdrv = RTE_KDRV_NONE;
|
||||||
soft_dev->data->numa_node = numa_node;
|
soft_dev->data->numa_node = numa_node;
|
||||||
soft_dev->data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1268,7 +1268,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
|
|||||||
/* Setup some default values */
|
/* Setup some default values */
|
||||||
rte_memcpy(data, dev->data, sizeof(*data));
|
rte_memcpy(data, dev->data, sizeof(*data));
|
||||||
data->dev_private = pmd;
|
data->dev_private = pmd;
|
||||||
data->dev_flags = RTE_ETH_DEV_DETACHABLE | RTE_ETH_DEV_INTR_LSC;
|
data->dev_flags = RTE_ETH_DEV_INTR_LSC;
|
||||||
data->numa_node = numa_node;
|
data->numa_node = numa_node;
|
||||||
|
|
||||||
data->dev_link = pmd_link;
|
data->dev_link = pmd_link;
|
||||||
|
@ -1086,8 +1086,7 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name,
|
|||||||
internal->max_queues = queues;
|
internal->max_queues = queues;
|
||||||
data->dev_link = pmd_link;
|
data->dev_link = pmd_link;
|
||||||
data->mac_addrs = eth_addr;
|
data->mac_addrs = eth_addr;
|
||||||
data->dev_flags =
|
data->dev_flags = RTE_ETH_DEV_INTR_LSC;
|
||||||
RTE_ETH_DEV_DETACHABLE | RTE_ETH_DEV_INTR_LSC;
|
|
||||||
|
|
||||||
eth_dev->dev_ops = &ops;
|
eth_dev->dev_ops = &ops;
|
||||||
|
|
||||||
|
@ -1384,7 +1384,6 @@ virtio_init_device(struct rte_eth_dev *eth_dev, uint64_t req_features)
|
|||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
eth_dev->data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
/* If host does not support both status and MSI-X then disable LSC */
|
/* If host does not support both status and MSI-X then disable LSC */
|
||||||
if (vtpci_with_feature(hw, VIRTIO_NET_F_STATUS) && hw->use_msix)
|
if (vtpci_with_feature(hw, VIRTIO_NET_F_STATUS) && hw->use_msix)
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
|
eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
|
||||||
|
@ -376,7 +376,6 @@ virtio_user_eth_dev_alloc(struct rte_vdev_device *vdev)
|
|||||||
hw->use_simple_rx = 0;
|
hw->use_simple_rx = 0;
|
||||||
hw->use_simple_tx = 0;
|
hw->use_simple_tx = 0;
|
||||||
hw->virtio_user_dev = dev;
|
hw->virtio_user_dev = dev;
|
||||||
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
|
|
||||||
return eth_dev;
|
return eth_dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +309,6 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
rte_eth_copy_pci_info(eth_dev, pci_dev);
|
||||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
|
|
||||||
|
|
||||||
/* Vendor and Device ID need to be set before init of shared code */
|
/* Vendor and Device ID need to be set before init of shared code */
|
||||||
hw->device_id = pci_dev->id.device_id;
|
hw->device_id = pci_dev->id.device_id;
|
||||||
|
@ -1814,8 +1814,6 @@ struct rte_eth_dev_data {
|
|||||||
/**< VLAN filter configuration. */
|
/**< VLAN filter configuration. */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Device supports hotplug detach */
|
|
||||||
#define RTE_ETH_DEV_DETACHABLE 0x0001
|
|
||||||
/** Device supports link state interrupt */
|
/** Device supports link state interrupt */
|
||||||
#define RTE_ETH_DEV_INTR_LSC 0x0002
|
#define RTE_ETH_DEV_INTR_LSC 0x0002
|
||||||
/** Device is a bonded slave */
|
/** Device is a bonded slave */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user