diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c index 76fb40c27639bf43a864150dc09aa01daabe9c77..7deed8551a8067462f2da5664bb9b8c2cad946ea 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ext.c @@ -239,6 +239,13 @@ int nic_set_cpu_affinity(struct net_device *ndev, cpumask_t *affinity_mask) goto err_unlock; } + if (test_bit(HNS3_NIC_STATE_DOWN, &priv->state)) { + netdev_err(ndev, + "ethernet is down, not support cpu affinity set\n"); + ret = -ENETDOWN; + goto err_unlock; + } + for (i = 0; i < priv->vector_num; i++) { tqp_vector = &priv->tqp_vector[i]; if (tqp_vector->irq_init_flag != HNS3_VECTOR_INITED) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 2c61ff5ef9ceb8c89d2db2a2427c82bfe5d9a622..cfc32534ef3032b46015c291d182eb60530aeb3d 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -12083,7 +12083,7 @@ int hclge_get_wol_supported_mode(struct hclge_dev *hdev, hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_WOL_GET_SUPPORTED_MODE, true); - wol_supported_cmd = (struct hclge_query_wol_supported_cmd *)&desc.data; + wol_supported_cmd = (struct hclge_query_wol_supported_cmd *)desc.data; ret = hclge_cmd_send(&hdev->hw, &desc, 1); if (ret) { @@ -12111,7 +12111,7 @@ int hclge_get_wol_cfg(struct hclge_dev *hdev, u32 *mode) return ret; } - wol_cfg_cmd = (struct hclge_wol_cfg_cmd *)&desc.data; + wol_cfg_cmd = (struct hclge_wol_cfg_cmd *)desc.data; *mode = le32_to_cpu(wol_cfg_cmd->wake_on_lan_mode); return 0; @@ -12125,7 +12125,7 @@ static int hclge_set_wol_cfg(struct hclge_dev *hdev, int ret; hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_WOL_CFG, false); - wol_cfg_cmd = (struct hclge_wol_cfg_cmd *)&desc.data; + wol_cfg_cmd = (struct hclge_wol_cfg_cmd *)desc.data; wol_cfg_cmd->wake_on_lan_mode = cpu_to_le32(wol_info->wol_current_mode); wol_cfg_cmd->sopass_size = wol_info->wol_sopass_size; memcpy(&wol_cfg_cmd->sopass, wol_info->wol_sopass, SOPASS_MAX); diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_sysfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_sysfs.c index b7cc89c3f6d88f1c8181a157662b996d83a5cf53..6840d7bda82e1ea27914545cf7a6edb11627a089 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_sysfs.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_sysfs.c @@ -7,11 +7,16 @@ static ssize_t lane_num_show(struct device *dev, struct device_attribute *attr, char *buf) { +#define HCLGE_GE_PORT_ONE_LANE 1 struct pci_dev *pdev = container_of(dev, struct pci_dev, dev); struct hnae3_ae_dev *ae_dev = pci_get_drvdata(pdev); struct hclge_dev *hdev = ae_dev->priv; - return scnprintf(buf, PAGE_SIZE, "%u\n", hdev->hw.mac.lane_num); + if (hdev->hw.mac.media_type == HNAE3_MEDIA_TYPE_COPPER) + return scnprintf(buf, PAGE_SIZE, "%u\n", + HCLGE_GE_PORT_ONE_LANE); + else + return scnprintf(buf, PAGE_SIZE, "%u\n", hdev->hw.mac.lane_num); } static ssize_t lane_num_store(struct device *dev,