Skip to content

Commit 2177653

Browse files
Ariel Eliordavem330
authored andcommitted
bnx2x: Fix VF outer vlan removal
Outer vlan removal in VF queues was made according to the VF's multi-function mode (which is never set). Instead, the PF's multi-function mode should be used to determine if outer vlan removal is needed. Signed-off-by: Ariel Elior <[email protected]> Signed-off-by: Yuval Mintz <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 5b0752c commit 2177653

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,6 @@ int bnx2x_vfpf_setup_q(struct bnx2x *bp, int fp_idx)
435435
/* calculate queue flags */
436436
flags |= VFPF_QUEUE_FLG_STATS;
437437
flags |= VFPF_QUEUE_FLG_CACHE_ALIGN;
438-
flags |= IS_MF_SD(bp) ? VFPF_QUEUE_FLG_OV : 0;
439438
flags |= VFPF_QUEUE_FLG_VLAN;
440439
DP(NETIF_MSG_IFUP, "vlan removal enabled\n");
441440

@@ -1004,7 +1003,7 @@ static void bnx2x_vf_mbx_init_vf(struct bnx2x *bp, struct bnx2x_virtf *vf,
10041003
}
10051004

10061005
/* convert MBX queue-flags to standard SP queue-flags */
1007-
static void bnx2x_vf_mbx_set_q_flags(u32 mbx_q_flags,
1006+
static void bnx2x_vf_mbx_set_q_flags(struct bnx2x *bp, u32 mbx_q_flags,
10081007
unsigned long *sp_q_flags)
10091008
{
10101009
if (mbx_q_flags & VFPF_QUEUE_FLG_TPA)
@@ -1015,8 +1014,6 @@ static void bnx2x_vf_mbx_set_q_flags(u32 mbx_q_flags,
10151014
__set_bit(BNX2X_Q_FLG_TPA_GRO, sp_q_flags);
10161015
if (mbx_q_flags & VFPF_QUEUE_FLG_STATS)
10171016
__set_bit(BNX2X_Q_FLG_STATS, sp_q_flags);
1018-
if (mbx_q_flags & VFPF_QUEUE_FLG_OV)
1019-
__set_bit(BNX2X_Q_FLG_OV, sp_q_flags);
10201017
if (mbx_q_flags & VFPF_QUEUE_FLG_VLAN)
10211018
__set_bit(BNX2X_Q_FLG_VLAN, sp_q_flags);
10221019
if (mbx_q_flags & VFPF_QUEUE_FLG_COS)
@@ -1025,6 +1022,10 @@ static void bnx2x_vf_mbx_set_q_flags(u32 mbx_q_flags,
10251022
__set_bit(BNX2X_Q_FLG_HC, sp_q_flags);
10261023
if (mbx_q_flags & VFPF_QUEUE_FLG_DHC)
10271024
__set_bit(BNX2X_Q_FLG_DHC, sp_q_flags);
1025+
1026+
/* outer vlan removal is set according to the PF's multi fuction mode */
1027+
if (IS_MF_SD(bp))
1028+
__set_bit(BNX2X_Q_FLG_OV, sp_q_flags);
10281029
}
10291030

10301031
static void bnx2x_vf_mbx_setup_q(struct bnx2x *bp, struct bnx2x_virtf *vf,
@@ -1075,11 +1076,11 @@ static void bnx2x_vf_mbx_setup_q(struct bnx2x *bp, struct bnx2x_virtf *vf,
10751076
init_p->tx.hc_rate = setup_q->txq.hc_rate;
10761077
init_p->tx.sb_cq_index = setup_q->txq.sb_index;
10771078

1078-
bnx2x_vf_mbx_set_q_flags(setup_q->txq.flags,
1079+
bnx2x_vf_mbx_set_q_flags(bp, setup_q->txq.flags,
10791080
&init_p->tx.flags);
10801081

10811082
/* tx setup - flags */
1082-
bnx2x_vf_mbx_set_q_flags(setup_q->txq.flags,
1083+
bnx2x_vf_mbx_set_q_flags(bp, setup_q->txq.flags,
10831084
&setup_p->flags);
10841085

10851086
/* tx setup - general, nothing */
@@ -1107,11 +1108,11 @@ static void bnx2x_vf_mbx_setup_q(struct bnx2x *bp, struct bnx2x_virtf *vf,
11071108
/* rx init */
11081109
init_p->rx.hc_rate = setup_q->rxq.hc_rate;
11091110
init_p->rx.sb_cq_index = setup_q->rxq.sb_index;
1110-
bnx2x_vf_mbx_set_q_flags(setup_q->rxq.flags,
1111+
bnx2x_vf_mbx_set_q_flags(bp, setup_q->rxq.flags,
11111112
&init_p->rx.flags);
11121113

11131114
/* rx setup - flags */
1114-
bnx2x_vf_mbx_set_q_flags(setup_q->rxq.flags,
1115+
bnx2x_vf_mbx_set_q_flags(bp, setup_q->rxq.flags,
11151116
&setup_p->flags);
11161117

11171118
/* rx setup - general */

0 commit comments

Comments
 (0)