mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
netdev-dpdk: Enable HW_CRC_STRIP for virtual functions.
Virtual functions such as igb_vf and i40e_vf require HW_CRC_STRIP to be explicitly enabled before configuration, otherwise device configuration will fail. This commit achieves this by adding NETDEV_RX_HW_CRC_STRIP to dpdk_hw_ol_features. When a dpdk device is added, the driver for the device is examined, if the device is a virtual function enable HW_CRC_STRIP. Signed-off-by: Michal Weglicki <michalx.weglicki@intel.com> Co-Authored: Ian Stokes <ian.stokes@intel.com> Acked-by: Cian Ferriter <cian.ferriter@intel.com> Tested-by: Cian Ferriter <cian.ferriter@intel.com> Signed-off-by: Ian Stokes <ian.stokes@intel.com>
This commit is contained in:
committed by
Ian Stokes
parent
7189d54c54
commit
e10ca8b921
@@ -341,6 +341,7 @@ struct ingress_policer {
|
||||
|
||||
enum dpdk_hw_ol_features {
|
||||
NETDEV_RX_CHECKSUM_OFFLOAD = 1 << 0,
|
||||
NETDEV_RX_HW_CRC_STRIP = 1 << 1,
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -796,6 +797,11 @@ dpdk_eth_dev_port_config(struct netdev_dpdk *dev, int n_rxq, int n_txq)
|
||||
conf.intr_conf.lsc = dev->lsc_interrupt_mode;
|
||||
conf.rxmode.hw_ip_checksum = (dev->hw_ol_features &
|
||||
NETDEV_RX_CHECKSUM_OFFLOAD) != 0;
|
||||
|
||||
if (dev->hw_ol_features & NETDEV_RX_HW_CRC_STRIP) {
|
||||
conf.rxmode.hw_strip_crc = 1;
|
||||
}
|
||||
|
||||
/* A device may report more queues than it makes available (this has
|
||||
* been observed for Intel xl710, which reserves some of them for
|
||||
* SRIOV): rte_eth_*_queue_setup will fail if a queue is not
|
||||
@@ -885,6 +891,13 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev)
|
||||
|
||||
rte_eth_dev_info_get(dev->port_id, &info);
|
||||
|
||||
if (strstr(info.driver_name, "vf") != NULL) {
|
||||
VLOG_INFO("Virtual function detected, HW_CRC_STRIP will be enabled");
|
||||
dev->hw_ol_features |= NETDEV_RX_HW_CRC_STRIP;
|
||||
} else {
|
||||
dev->hw_ol_features &= ~NETDEV_RX_HW_CRC_STRIP;
|
||||
}
|
||||
|
||||
if ((info.rx_offload_capa & rx_chksm_offload_capa) !=
|
||||
rx_chksm_offload_capa) {
|
||||
VLOG_WARN("Rx checksum offload is not supported on port "
|
||||
|
Reference in New Issue
Block a user