On 6/19/2018 10:30 PM, Ajit Khaparde wrote:
> There is no need to update hardware configuration if new MTU is
> not greater than the max data the mbuf can accommodate.

If app sets a smaller MTU won't it expect that HW will drop received packets
bigger than provided size? Will this logic work if HW is not updated?

> 
> Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Ajit Khaparde <ajit.khapa...@broadcom.com>
> ---
>  drivers/net/bnxt/bnxt_ethdev.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
> index 9cfa43778..1145bc195 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -1597,6 +1597,7 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, 
> uint16_t new_mtu)
>  
>       for (i = 0; i < bp->nr_vnics; i++) {
>               struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
> +             uint16_t size = 0;
>  
>               vnic->mru = bp->eth_dev->data->mtu + ETHER_HDR_LEN +
>                                       ETHER_CRC_LEN + VLAN_TAG_SIZE * 2;
> @@ -1604,9 +1605,14 @@ static int bnxt_mtu_set_op(struct rte_eth_dev 
> *eth_dev, uint16_t new_mtu)
>               if (rc)
>                       break;
>  
> -             rc = bnxt_hwrm_vnic_plcmode_cfg(bp, vnic);
> -             if (rc)
> -                     return rc;
> +             size = rte_pktmbuf_data_room_size(bp->rx_queues[0]->mb_pool);
> +             size -= RTE_PKTMBUF_HEADROOM;
> +
> +             if (size < new_mtu) {
> +                     rc = bnxt_hwrm_vnic_plcmode_cfg(bp, vnic);
> +                     if (rc)
> +                             return rc;
> +             }
>       }
>  
>       return rc;
> 

Reply via email to