[PATCH v1 15/18] net/r8169: impelment MTU configuration

Stephen Hemminger stephen at networkplumber.org
Tue Oct 15 17:26:48 CEST 2024


On Tue, 15 Oct 2024 11:09:25 +0800
Howard Wang <howard_wang at realsil.com.cn> wrote:

> +static int
> +rtl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
> +{
> +	struct rte_eth_dev_info dev_info;
> +	struct rtl_adapter *adapter = RTL_DEV_PRIVATE(dev);
> +	struct rtl_hw *hw = &adapter->hw;
> +	int ret;
> +	uint32_t frame_size = mtu + RTL_ETH_OVERHEAD;
> +
> +	ret = rtl_dev_infos_get(dev, &dev_info);
> +	if (ret != 0)
> +		return ret;
> +
> +	if (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)
> +		return -EINVAL;
> +

This validation is already done in ethdev, not needed here.


int
rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)
{
...

		ret = rte_eth_dev_info_get(port_id, &dev_info);
		if (ret != 0)
			return ret;

		ret = eth_dev_validate_mtu(port_id, &dev_info, mtu);
		if (ret != 0)
			return ret;


static int
eth_dev_validate_mtu(uint16_t port_id, struct rte_eth_dev_info *dev_info,
		uint16_t mtu)
{
	uint32_t overhead_len;
	uint32_t frame_size;

	if (mtu < dev_info->min_mtu) {
		RTE_ETHDEV_LOG_LINE(ERR,
			"MTU (%u) < device min MTU (%u) for port_id %u",
			mtu, dev_info->min_mtu, port_id);
		return -EINVAL;
	}
	if (mtu > dev_info->max_mtu) {
		RTE_ETHDEV_LOG_LINE(ERR,
			"MTU (%u) > device max MTU (%u) for port_id %u",
			mtu, dev_info->max_mtu, port_id);
		return -EINVAL;
	}


More information about the dev mailing list