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...

> +}
> +
>  static void hclge_update_link_status(struct hclge_dev *hdev)
>  {
>       struct hnae3_handle *rhandle = &hdev->vport[0].roce;

> @@ -3246,14 +3269,24 @@ static int hclge_set_vf_link_state(struct 
> hnae3_handle *handle, int vf,
>  {
>       struct hclge_vport *vport = hclge_get_vport(handle);
>       struct hclge_dev *hdev = vport->back;
> +     int link_state_old;
> +     int ret;
>  
>       vport = hclge_get_vf_vport(hdev, vf);
>       if (!vport)
>               return -EINVAL;
>  
> +     link_state_old = vport->vf_info.link_state;
>       vport->vf_info.link_state = link_state;
>  
> -     return 0;
> +     ret = hclge_push_vf_link_status(vport);
> +     if (ret) {
> +             vport->vf_info.link_state = link_state_old;
> +             dev_err(&hdev->pdev->dev,
> +                     "failed to push vf%d link status, ret = %d\n", vf, ret);
> +     }

... here?

Otherwise the patches LGTM.

Reply via email to