On Fri,  6 Feb 2026 18:04:33 +0100
[email protected] wrote:

> +static int
> +nfb_eth_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
> +{
> +     unsigned int i;
> +     struct nc_rxmac_status status;
> +     struct pmd_internals *intl = dev->process_private;
> +     uint16_t frame_length_max_capable;
> +
> +     mtu += RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
> +

Since mtu is 16 bit value, you need to use uint32_t to avoid
overflow.

Something like:
+       uint32_t frame_len = (uint32_t)mtu + RTE_ETHER_HDR_LEN + 
RTE_ETHER_CRC_LEN;
+       if (frame_len > priv->frame_len_max_cap)
+               return -EINVAL;

+       for (i = 0; i < intl->max_rxmac; ++i)
+               nc_rxmac_set_frame_length(intl->rxmac[i], frame_len, 
RXMAC_FRAME_LENGTH_MAX);

Reply via email to