qed: Fix overriding offload_tc by protocols without APP TLV
The TC received from APP TLV is stored in offload_tc, and should not be set by protocols which did not receive an APP TLV. Fixed the condition when overriding the offload_tc. Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com> Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
9aaa4e8ba1
commit
e90202ed1c
@@ -191,7 +191,7 @@ qed_dcbx_dp_protocol(struct qed_hwfn *p_hwfn, struct qed_dcbx_results *p_data)
|
|||||||
static void
|
static void
|
||||||
qed_dcbx_set_params(struct qed_dcbx_results *p_data,
|
qed_dcbx_set_params(struct qed_dcbx_results *p_data,
|
||||||
struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
|
struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
|
||||||
bool enable, u8 prio, u8 tc,
|
bool app_tlv, bool enable, u8 prio, u8 tc,
|
||||||
enum dcbx_protocol_type type,
|
enum dcbx_protocol_type type,
|
||||||
enum qed_pci_personality personality)
|
enum qed_pci_personality personality)
|
||||||
{
|
{
|
||||||
@@ -210,7 +210,7 @@ qed_dcbx_set_params(struct qed_dcbx_results *p_data,
|
|||||||
p_data->arr[type].dont_add_vlan0 = true;
|
p_data->arr[type].dont_add_vlan0 = true;
|
||||||
|
|
||||||
/* QM reconf data */
|
/* QM reconf data */
|
||||||
if (p_hwfn->hw_info.personality == personality)
|
if (app_tlv && p_hwfn->hw_info.personality == personality)
|
||||||
qed_hw_info_set_offload_tc(&p_hwfn->hw_info, tc);
|
qed_hw_info_set_offload_tc(&p_hwfn->hw_info, tc);
|
||||||
|
|
||||||
/* Configure dcbx vlan priority in doorbell block for roce EDPM */
|
/* Configure dcbx vlan priority in doorbell block for roce EDPM */
|
||||||
@@ -225,7 +225,7 @@ qed_dcbx_set_params(struct qed_dcbx_results *p_data,
|
|||||||
static void
|
static void
|
||||||
qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
|
qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
|
||||||
struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
|
struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
|
||||||
bool enable, u8 prio, u8 tc,
|
bool app_tlv, bool enable, u8 prio, u8 tc,
|
||||||
enum dcbx_protocol_type type)
|
enum dcbx_protocol_type type)
|
||||||
{
|
{
|
||||||
enum qed_pci_personality personality;
|
enum qed_pci_personality personality;
|
||||||
@@ -240,7 +240,7 @@ qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
|
|||||||
|
|
||||||
personality = qed_dcbx_app_update[i].personality;
|
personality = qed_dcbx_app_update[i].personality;
|
||||||
|
|
||||||
qed_dcbx_set_params(p_data, p_hwfn, p_ptt, enable,
|
qed_dcbx_set_params(p_data, p_hwfn, p_ptt, app_tlv, enable,
|
||||||
prio, tc, type, personality);
|
prio, tc, type, personality);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,8 +319,8 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
|
|||||||
enable = true;
|
enable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
qed_dcbx_update_app_info(p_data, p_hwfn, p_ptt, enable,
|
qed_dcbx_update_app_info(p_data, p_hwfn, p_ptt, true,
|
||||||
priority, tc, type);
|
enable, priority, tc, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,7 +341,7 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
enable = (type == DCBX_PROTOCOL_ETH) ? false : !!dcbx_version;
|
enable = (type == DCBX_PROTOCOL_ETH) ? false : !!dcbx_version;
|
||||||
qed_dcbx_update_app_info(p_data, p_hwfn, p_ptt, enable,
|
qed_dcbx_update_app_info(p_data, p_hwfn, p_ptt, false, enable,
|
||||||
priority, tc, type);
|
priority, tc, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user