Skip to content

Commit 0216da9

Browse files
Sudarsana Reddy Kallurudavem330
authored andcommitted
qed: Do not add VLAN 0 tag to untagged frames in multi-function mode.
In certain multi-function switch dependent modes, firmware adds vlan tag 0 to the untagged frames. This leads to double tagging for the traffic if the dcbx is enabled, which is not the desired behavior. To avoid this, driver needs to set "dcb_dont_add_vlan0" flag. Fixes: cac6f691 ("qed: Add support for Unified Fabric Port") Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com> Signed-off-by: Tomer Tayar <Tomer.Tayar@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 50fdf60 commit 0216da9

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

drivers/net/ethernet/qlogic/qed/qed_dcbx.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ qed_dcbx_dp_protocol(struct qed_hwfn *p_hwfn, struct qed_dcbx_results *p_data)
190190

191191
static void
192192
qed_dcbx_set_params(struct qed_dcbx_results *p_data,
193+
struct qed_hwfn *p_hwfn,
193194
struct qed_hw_info *p_info,
194195
bool enable,
195196
u8 prio,
@@ -206,6 +207,11 @@ qed_dcbx_set_params(struct qed_dcbx_results *p_data,
206207
else
207208
p_data->arr[type].update = DONT_UPDATE_DCB_DSCP;
208209

210+
/* Do not add vlan tag 0 when DCB is enabled and port in UFP/OV mode */
211+
if ((test_bit(QED_MF_8021Q_TAGGING, &p_hwfn->cdev->mf_bits) ||
212+
test_bit(QED_MF_8021AD_TAGGING, &p_hwfn->cdev->mf_bits)))
213+
p_data->arr[type].dont_add_vlan0 = true;
214+
209215
/* QM reconf data */
210216
if (p_info->personality == personality)
211217
qed_hw_info_set_offload_tc(p_info, tc);
@@ -231,7 +237,7 @@ qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
231237

232238
personality = qed_dcbx_app_update[i].personality;
233239

234-
qed_dcbx_set_params(p_data, p_info, enable,
240+
qed_dcbx_set_params(p_data, p_hwfn, p_info, enable,
235241
prio, tc, type, personality);
236242
}
237243
}
@@ -954,6 +960,7 @@ static void qed_dcbx_update_protocol_data(struct protocol_dcb_data *p_data,
954960
p_data->dcb_enable_flag = p_src->arr[type].enable;
955961
p_data->dcb_priority = p_src->arr[type].priority;
956962
p_data->dcb_tc = p_src->arr[type].tc;
963+
p_data->dcb_dont_add_vlan0 = p_src->arr[type].dont_add_vlan0;
957964
}
958965

959966
/* Set pf update ramrod command params */

drivers/net/ethernet/qlogic/qed/qed_dcbx.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ struct qed_dcbx_app_data {
5555
u8 update; /* Update indication */
5656
u8 priority; /* Priority */
5757
u8 tc; /* Traffic Class */
58+
bool dont_add_vlan0; /* Do not insert a vlan tag with id 0 */
5859
};
5960

6061
#define QED_DCBX_VERSION_DISABLED 0

0 commit comments

Comments
 (0)