diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index cd93ef0d..6e538678 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -3762,6 +3762,8 @@ static int ether_change_mtu(struct net_device *ndev, int new_mtu) struct ether_priv_data *pdata = netdev_priv(ndev); struct osi_core_priv_data *osi_core = pdata->osi_core; struct osi_dma_priv_data *osi_dma = pdata->osi_dma; + struct osi_ioctl ioctl_data = {}; + int ret = 0; if (netif_running(ndev)) { netdev_err(pdata->ndev, "must be stopped to change its MTU\n"); @@ -3777,6 +3779,15 @@ static int ether_change_mtu(struct net_device *ndev, int new_mtu) return -EINVAL; } + ioctl_data.cmd = OSI_CMD_MAC_MTU; + ioctl_data.arg1_u32 = new_mtu; + ret = osi_handle_ioctl(osi_core, &ioctl_data); + if (ret < 0) { + dev_info(pdata->dev, "HW Fail to set MTU to %d\n", + new_mtu); + return -EINVAL; + } + ndev->mtu = new_mtu; osi_core->mtu = new_mtu; osi_dma->mtu = new_mtu;