From c804eef959ad683d526e50abbfc846989d98c7a3 Mon Sep 17 00:00:00 2001 From: Mahesh Patil Date: Thu, 13 May 2021 16:32:52 -0700 Subject: [PATCH] nvethernet: Reduce mtu if macsec enabled Reduce mtu size due to macsec sectag in probe and change_mtu call instead of open call to avoid wrong update of mtu size when interface up/down is performed. Bug 200730979 Change-Id: I17198d25295bc40d37204f5d0603696a0071f490 Signed-off-by: Mahesh Patil Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2529412 Reviewed-by: svc_kernel_abi Reviewed-by: Narayan Reddy Reviewed-by: Bhadram Varka Reviewed-by: Srinivas Ramachandran GVS: Gerrit_Virtual_Submit --- .../ethernet/nvidia/nvethernet/ether_linux.c | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index 2d9d7f32..99a1253d 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -2212,17 +2212,6 @@ static int ether_open(struct net_device *dev) goto err_alloc; } -#ifdef MACSEC_SUPPORT - /* Macsec is initialized, reduce MTU - * TODO: MTU_ADDONS also to be reduced ? - */ - osi_core->mtu -= MACSEC_TAG_ICV_LEN; - pdata->osi_dma->mtu = osi_core->mtu; - pdata->ndev->mtu = osi_core->mtu; - dev_info(&dev->dev, "Macsec: Reduced MTU: %d Max: %d\n", - pdata->ndev->mtu, pdata->ndev->max_mtu); -#endif /* MACSEC_SUPPORT */ - #ifdef THERMAL_CAL atomic_set(&pdata->therm_state, 0); ret = ether_therm_init(pdata); @@ -3371,6 +3360,16 @@ static int ether_change_mtu(struct net_device *ndev, int new_mtu) osi_core->mtu = new_mtu; osi_dma->mtu = new_mtu; +#ifdef MACSEC_SUPPORT + /* Macsec is enabled, reduce MTU + */ + osi_core->mtu -= MACSEC_TAG_ICV_LEN; + osi_dma->mtu = osi_core->mtu; + ndev->mtu = osi_core->mtu; + netdev_info(pdata->ndev, "Macsec: Reduced MTU: %d Max: %d\n", + ndev->mtu, ndev->max_mtu); +#endif /* MACSEC_SUPPORT */ + netdev_update_features(ndev); return 0; @@ -5430,7 +5429,6 @@ static int ether_probe(struct platform_device *pdev) osi_core->mtu = ndev->mtu; osi_dma->mtu = ndev->mtu; - tegra_pre_si_platform(osi_core, osi_dma); /* Parse the ethernet DT node */ @@ -5544,7 +5542,15 @@ static int ether_probe(struct platform_device *pdev) ; //Nothing to do, macsec is not supported dev_info(&pdev->dev, "Macsec not enabled - ignore\n"); } -#endif /* MACSEC_SUPPORT */ + + /* Macsec is enabled, reduce MTU + */ + osi_core->mtu -= MACSEC_TAG_ICV_LEN; + osi_dma->mtu = osi_core->mtu; + ndev->mtu = osi_core->mtu; + dev_info(&pdev->dev, "Macsec: Reduced MTU: %d Max: %d\n", + ndev->mtu, ndev->max_mtu); +#endif /* MACSEC_SUPPORT */ ret = register_netdev(ndev); if (ret < 0) {