提交 711c9146 编写于 作者: V Vladislav Zolotarov 提交者: David S. Miller

bnx2x: Duplication in promisc mode

Prevent packets duplication for frames targeting FCoE L2 ring:
packets were arriving to stack from both L2 RSS and from FCoE
L2 in a promiscuous mode.

Configure FCoE L2 ring to DROP_ALL rx mode, when interface is
configured to PROMISC, and to accept only unicast frames, when
interface is configured to ALL_MULTI.
Signed-off-by: NVladislav Zolotarov <vladz@broadcom.com>
Signed-off-by: NEilon Greenstein <eilong@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 bf1f9ae0
...@@ -4276,9 +4276,12 @@ void bnx2x_set_storm_rx_mode(struct bnx2x *bp) ...@@ -4276,9 +4276,12 @@ void bnx2x_set_storm_rx_mode(struct bnx2x *bp)
def_q_filters |= BNX2X_ACCEPT_UNICAST | BNX2X_ACCEPT_BROADCAST | def_q_filters |= BNX2X_ACCEPT_UNICAST | BNX2X_ACCEPT_BROADCAST |
BNX2X_ACCEPT_MULTICAST; BNX2X_ACCEPT_MULTICAST;
#ifdef BCM_CNIC #ifdef BCM_CNIC
cl_id = bnx2x_fcoe(bp, cl_id); if (!NO_FCOE(bp)) {
bnx2x_rxq_set_mac_filters(bp, cl_id, BNX2X_ACCEPT_UNICAST | cl_id = bnx2x_fcoe(bp, cl_id);
BNX2X_ACCEPT_MULTICAST); bnx2x_rxq_set_mac_filters(bp, cl_id,
BNX2X_ACCEPT_UNICAST |
BNX2X_ACCEPT_MULTICAST);
}
#endif #endif
break; break;
...@@ -4286,18 +4289,29 @@ void bnx2x_set_storm_rx_mode(struct bnx2x *bp) ...@@ -4286,18 +4289,29 @@ void bnx2x_set_storm_rx_mode(struct bnx2x *bp)
def_q_filters |= BNX2X_ACCEPT_UNICAST | BNX2X_ACCEPT_BROADCAST | def_q_filters |= BNX2X_ACCEPT_UNICAST | BNX2X_ACCEPT_BROADCAST |
BNX2X_ACCEPT_ALL_MULTICAST; BNX2X_ACCEPT_ALL_MULTICAST;
#ifdef BCM_CNIC #ifdef BCM_CNIC
cl_id = bnx2x_fcoe(bp, cl_id); /*
bnx2x_rxq_set_mac_filters(bp, cl_id, BNX2X_ACCEPT_UNICAST | * Prevent duplication of multicast packets by configuring FCoE
BNX2X_ACCEPT_MULTICAST); * L2 Client to receive only matched unicast frames.
*/
if (!NO_FCOE(bp)) {
cl_id = bnx2x_fcoe(bp, cl_id);
bnx2x_rxq_set_mac_filters(bp, cl_id,
BNX2X_ACCEPT_UNICAST);
}
#endif #endif
break; break;
case BNX2X_RX_MODE_PROMISC: case BNX2X_RX_MODE_PROMISC:
def_q_filters |= BNX2X_PROMISCUOUS_MODE; def_q_filters |= BNX2X_PROMISCUOUS_MODE;
#ifdef BCM_CNIC #ifdef BCM_CNIC
cl_id = bnx2x_fcoe(bp, cl_id); /*
bnx2x_rxq_set_mac_filters(bp, cl_id, BNX2X_ACCEPT_UNICAST | * Prevent packets duplication by configuring DROP_ALL for FCoE
BNX2X_ACCEPT_MULTICAST); * L2 Client.
*/
if (!NO_FCOE(bp)) {
cl_id = bnx2x_fcoe(bp, cl_id);
bnx2x_rxq_set_mac_filters(bp, cl_id, BNX2X_ACCEPT_NONE);
}
#endif #endif
/* pass management unicast packets as well */ /* pass management unicast packets as well */
llh_mask |= NIG_LLH0_BRB1_DRV_MASK_REG_LLH0_BRB1_DRV_MASK_UNCST; llh_mask |= NIG_LLH0_BRB1_DRV_MASK_REG_LLH0_BRB1_DRV_MASK_UNCST;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册