From a54d1536bdd3d58dec1278886cfacfdaad922421 Mon Sep 17 00:00:00 2001 From: Mohan Thadikamalla Date: Wed, 13 Oct 2021 20:46:47 +0530 Subject: [PATCH] nvethernet: Check for HW MTU support Issue: When the ethernet server got enabled MTU changes are not getting communicated to the ethernet server. Fix: Call OSI IOCTL to update MTU change to ethernet server. Bug 3402313 Change-Id: I1ac0768cb16dc2fe4e6f78be3703c27208a47855 Signed-off-by: Mohan Thadikamalla Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2610187 Tested-by: mobile promotions Reviewed-by: mobile promotions --- drivers/net/ethernet/nvidia/nvethernet/ether_linux.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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;