mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
netdev-dpdk: Fix failure to configure flow control at netdev-init.
Configuring flow control at ixgbe netdev-init is throwing error in port start. For eg: without this fix, user cannot configure flow control on ixgbe dpdk port as below, " ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk \ options:dpdk-devargs=0000:05:00.1 options:rx-flow-ctrl=true " Instead, it must be configured as two different commands, " ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk \ options:dpdk-devargs=0000:05:00.1 ovs-vsctl set Interface dpdk0 options:rx-flow-ctrl=true " The DPDK ixgbe driver is now validating all the 'rte_eth_fc_conf' fields before trying to configuring the dpdk ethdev. Hence OVS can no longer set the 'dont care' fields to just '0' as before. This commit make sure all the 'rte_eth_fc_conf' fields are populated with default values before the dev init. Also to avoid read error on unsupported ports, the flow control parameters are now read only when user is trying to configure/update it. Signed-off-by: Sugesh Chandran <sugesh.chandran@intel.com> Signed-off-by: Ian Stokes <ian.stokes@intel.com>
This commit is contained in:
committed by
Ian Stokes
parent
18e08953cf
commit
7e1de65e8d
@@ -1065,14 +1065,6 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev)
|
||||
|
||||
mbp_priv = rte_mempool_get_priv(dev->dpdk_mp->mp);
|
||||
dev->buf_size = mbp_priv->mbuf_data_room_size - RTE_PKTMBUF_HEADROOM;
|
||||
|
||||
/* Get the Flow control configuration for DPDK-ETH */
|
||||
diag = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf);
|
||||
if (diag) {
|
||||
VLOG_DBG("cannot get flow control parameters on port "DPDK_PORT_ID_FMT
|
||||
", err=%d", dev->port_id, diag);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1776,6 +1768,12 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args,
|
||||
if (dev->fc_conf.mode != fc_mode || autoneg != dev->fc_conf.autoneg) {
|
||||
dev->fc_conf.mode = fc_mode;
|
||||
dev->fc_conf.autoneg = autoneg;
|
||||
/* Get the Flow control configuration for DPDK-ETH */
|
||||
err = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf);
|
||||
if (err) {
|
||||
VLOG_WARN("Cannot get flow control parameters on port "
|
||||
DPDK_PORT_ID_FMT", err=%d", dev->port_id, err);
|
||||
}
|
||||
dpdk_eth_flow_ctrl_setup(dev);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user