On Wed, 14 Apr 2021 09:51:38 +0800 Huazhong Tan wrote: > On 2021/4/14 1:18, Jakub Kicinski wrote: > > On Tue, 13 Apr 2021 14:17:00 +0800 Huazhong Tan wrote: > >> +static void hclge_push_link_status(struct hclge_dev *hdev) > >> +{ > >> + struct hclge_vport *vport; > >> + int ret; > >> + u16 i; > >> + > >> + for (i = 0; i < pci_num_vf(hdev->pdev); i++) { > >> + vport = &hdev->vport[i + HCLGE_VF_VPORT_START_NUM]; > >> + > >> + if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state) || > >> + vport->vf_info.link_state != IFLA_VF_LINK_STATE_AUTO) > >> + continue; > >> + > >> + ret = hclge_push_vf_link_status(vport); > >> + if (ret) { > >> + dev_err(&hdev->pdev->dev, > >> + "failed to push link status to vf%u, ret = > >> %d\n", > >> + i, ret); > > Isn't this error printed twice? Here and... > > They are in different contexts. here will be called to > update the link status of all VFs when the underlying > link status is changed, while the below one is called > when the admin set up the specific VF link status.
I see.