]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/qlogic/qed/qed_sriov.c
qed: Always publish VF link from leading hwfn
[karo-tx-linux.git] / drivers / net / ethernet / qlogic / qed / qed_sriov.c
index 0d37d73335a236fdecb5d969e2bef2a915de2933..18fc6e62ca41b88e55e01d26c532c9e52e744ae5 100644 (file)
@@ -3945,6 +3945,7 @@ static int qed_get_vf_config(struct qed_dev *cdev,
 
 void qed_inform_vf_link_state(struct qed_hwfn *hwfn)
 {
+       struct qed_hwfn *lead_hwfn = QED_LEADING_HWFN(hwfn->cdev);
        struct qed_mcp_link_capabilities caps;
        struct qed_mcp_link_params params;
        struct qed_mcp_link_state link;
@@ -3961,9 +3962,15 @@ void qed_inform_vf_link_state(struct qed_hwfn *hwfn)
                if (!vf_info)
                        continue;
 
-               memcpy(&params, qed_mcp_get_link_params(hwfn), sizeof(params));
-               memcpy(&link, qed_mcp_get_link_state(hwfn), sizeof(link));
-               memcpy(&caps, qed_mcp_get_link_capabilities(hwfn),
+               /* Only hwfn0 is actually interested in the link speed.
+                * But since only it would receive an MFW indication of link,
+                * need to take configuration from it - otherwise things like
+                * rate limiting for hwfn1 VF would not work.
+                */
+               memcpy(&params, qed_mcp_get_link_params(lead_hwfn),
+                      sizeof(params));
+               memcpy(&link, qed_mcp_get_link_state(lead_hwfn), sizeof(link));
+               memcpy(&caps, qed_mcp_get_link_capabilities(lead_hwfn),
                       sizeof(caps));
 
                /* Modify link according to the VF's configured link state */