|
@@ -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(¶ms, 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(¶ms, 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 */
|