From 7b075e220e690c20ae9d6a3307c86acece4521fe Mon Sep 17 00:00:00 2001 From: Chiqijun Date: Wed, 12 Aug 2020 15:05:43 +0000 Subject: [PATCH] net/hinic: Add pause/pfc mutual exclusion protection driver inclusion category: bugfix bugzilla: 4472 ----------------------------------------------------------------------- PFC and Pause of 1822 cannot be enabled at the same time, so if PFC is turned on, pause is not allowed. Signed-off-by: Chiqijun Reviewed-by: Zengweiliang Signed-off-by: Yang Yingliang --- drivers/net/ethernet/huawei/hinic/hinic_ethtool.c | 2 +- drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c b/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c index 0b9ce861c981..98e230d4e3c1 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c @@ -1824,7 +1824,7 @@ static int hinic_set_pauseparam(struct net_device *netdev, err = hinic_set_pause_info(nic_dev->hwdev, nic_pause); if (err) { nicif_err(nic_dev, drv, netdev, "Failed to set pauseparam\n"); - return -EFAULT; + return err; } nicif_info(nic_dev, drv, netdev, "Set pause options, tx: %s, rx: %s\n", diff --git a/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c b/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c index 5cdcc3ec16c0..90b16ea9658d 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c @@ -1029,6 +1029,10 @@ int hinic_set_pause_info(void *hwdev, struct nic_pause_config nic_pause) return -EINVAL; nic_cfg = &nic_hwdev->nic_io->nic_cfg; + if (nic_cfg->pfc_en) { + nic_err(nic_hwdev->dev_hdl, "Failed to set pause, please disable pfc first\n"); + return -EPERM; + } down(&nic_cfg->cfg_lock); -- GitLab