forked from Minki/linux
qed: Don't use attention PTT for configuring BW
Commit 653d2ffd6405 ("qed*: Fix link indication race") introduced another race - one of the inner functions called from the link-change flow is explicitly using the slowpath context dedicated PTT instead of gaining that PTT from the caller. Since this flow can now be called from a different context as well, we're in risk of the PTT breaking. Fixes: 653d2ffd6405 ("qed*: Fix link indication race") Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fd3c615ae1
commit
6f437d4319
@ -688,7 +688,9 @@ static inline u8 qed_concrete_to_sw_fid(struct qed_dev *cdev,
|
||||
#define OOO_LB_TC 9
|
||||
|
||||
int qed_configure_vport_wfq(struct qed_dev *cdev, u16 vp_id, u32 rate);
|
||||
void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev, u32 min_pf_rate);
|
||||
void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev,
|
||||
struct qed_ptt *p_ptt,
|
||||
u32 min_pf_rate);
|
||||
|
||||
void qed_clean_wfq_db(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
|
||||
#define QED_LEADING_HWFN(dev) (&dev->hwfns[0])
|
||||
|
@ -3198,7 +3198,8 @@ int qed_configure_vport_wfq(struct qed_dev *cdev, u16 vp_id, u32 rate)
|
||||
}
|
||||
|
||||
/* API to configure WFQ from mcp link change */
|
||||
void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev, u32 min_pf_rate)
|
||||
void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev,
|
||||
struct qed_ptt *p_ptt, u32 min_pf_rate)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -3212,8 +3213,7 @@ void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev, u32 min_pf_rate)
|
||||
for_each_hwfn(cdev, i) {
|
||||
struct qed_hwfn *p_hwfn = &cdev->hwfns[i];
|
||||
|
||||
__qed_configure_vp_wfq_on_link_change(p_hwfn,
|
||||
p_hwfn->p_dpc_ptt,
|
||||
__qed_configure_vp_wfq_on_link_change(p_hwfn, p_ptt,
|
||||
min_pf_rate);
|
||||
}
|
||||
}
|
||||
|
@ -679,7 +679,8 @@ static void qed_mcp_handle_link_change(struct qed_hwfn *p_hwfn,
|
||||
|
||||
/* Min bandwidth configuration */
|
||||
__qed_configure_pf_min_bandwidth(p_hwfn, p_ptt, p_link, min_bw);
|
||||
qed_configure_vp_wfq_on_link_change(p_hwfn->cdev, p_link->min_pf_rate);
|
||||
qed_configure_vp_wfq_on_link_change(p_hwfn->cdev, p_ptt,
|
||||
p_link->min_pf_rate);
|
||||
|
||||
p_link->an = !!(status & LINK_STATUS_AUTO_NEGOTIATE_ENABLED);
|
||||
p_link->an_complete = !!(status &
|
||||
|
Loading…
Reference in New Issue
Block a user