net/gve: support MTU setting

Support dev_ops mtu_set.

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
This commit is contained in:
Junfeng Guo 2022-10-25 17:07:26 +08:00 committed by Ferruh Yigit
parent 440f551dd0
commit f19c864e4d
3 changed files with 31 additions and 0 deletions

View File

@ -5,6 +5,7 @@
;
[Features]
Link status = Y
MTU update = Y
Linux = Y
x86-32 = Y
x86-64 = Y

View File

@ -72,3 +72,5 @@ Jumbo Frame is not supported in PMD for now.
It'll be added in a future DPDK release.
Also, only GQI_QPL queue format is in use on GCP
since GQI_RDA hasn't been released in production.
Currently, setting MTU with value larger than 1460 is not supported.

View File

@ -95,12 +95,40 @@ gve_dev_close(struct rte_eth_dev *dev)
return err;
}
static int
gve_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
{
struct gve_priv *priv = dev->data->dev_private;
int err;
if (mtu < RTE_ETHER_MIN_MTU || mtu > priv->max_mtu) {
PMD_DRV_LOG(ERR, "MIN MTU is %u, MAX MTU is %u",
RTE_ETHER_MIN_MTU, priv->max_mtu);
return -EINVAL;
}
/* mtu setting is forbidden if port is start */
if (dev->data->dev_started) {
PMD_DRV_LOG(ERR, "Port must be stopped before configuration");
return -EBUSY;
}
err = gve_adminq_set_mtu(priv, mtu);
if (err) {
PMD_DRV_LOG(ERR, "Failed to set mtu as %u err = %d", mtu, err);
return err;
}
return 0;
}
static const struct eth_dev_ops gve_eth_dev_ops = {
.dev_configure = gve_dev_configure,
.dev_start = gve_dev_start,
.dev_stop = gve_dev_stop,
.dev_close = gve_dev_close,
.link_update = gve_link_update,
.mtu_set = gve_dev_mtu_set,
};
static void