From 7e1a34028c5ab29f6c2a8fda7008a84956d1abc0 Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Tue, 25 Jul 2023 15:48:37 +0800 Subject: [PATCH 243/283] net: hns3: fix setting wrong tx_timeout value issue driver inclusion category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EN49 CVE: NA ---------------------------------------------------------------------- When user set tx_timeout, hns3 driver should set tx_timeout * HZ to ndev->watchdog_timeo but tx_timeout. So, change it to be correct. Fixes: dd347d0de71ab (net: hns3: add support modified tx timeout) Signed-off-by: Hao Chen Signed-off-by: Jijie Shao Signed-off-by: Xiaodong Li --- drivers/net/ethernet/hisilicon/hns3/hns3_ext.c | 6 ++++-- drivers/net/ethernet/hisilicon/hns3/hns3_ext.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c index 168c9c903158..45189aaea9a3 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c @@ -326,13 +326,15 @@ EXPORT_SYMBOL(nic_get_port_num_per_chip); int nic_set_tx_timeout(struct net_device *ndev, int tx_timeout) { + int watchdog_timeo = tx_timeout * HZ; + if (nic_netdev_match_check(ndev)) return -ENODEV; - if (tx_timeout <= 0) + if (watchdog_timeo <= 0 || watchdog_timeo > HNS3_MAX_TX_TIMEOUT) return -EINVAL; - ndev->watchdog_timeo = tx_timeout; + ndev->watchdog_timeo = watchdog_timeo; return 0; } diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ext.h b/drivers/net/ethernet/hisilicon/hns3/hns3_ext.h index d9c107f5e231..f883beae8bf4 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ext.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ext.h @@ -13,6 +13,7 @@ #define HNS3_PFC_STORM_PARA_ENABLE 1 #define HNS3_PFC_STORM_PARA_PERIOD_MIN 5 #define HNS3_PFC_STORM_PARA_PERIOD_MAX 2000 +#define HNS3_MAX_TX_TIMEOUT (10 * 60 * HZ) #define nic_set_8211_phy_reg nic_set_phy_reg #define nic_get_8211_phy_reg nic_get_phy_reg -- 2.34.1