net/bnx2x: restrict Rx mask flags sent to the PF
Don't use bnx2x_fill_accept_flags() to fill the RX mask in the VF
since the PF only handles a subset of the existing flags. now,
bnx2x_fill_accept_flags() can be static.
Fixes: 540a211084
("bnx2x: driver core")
Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
This commit is contained in:
parent
cf3d07b1e6
commit
5dbc53d7e5
@ -1397,10 +1397,10 @@ bnx2x_del_all_macs(struct bnx2x_softc *sc, struct ecore_vlan_mac_obj *mac_obj,
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
bnx2x_fill_accept_flags(struct bnx2x_softc *sc, uint32_t rx_mode,
|
||||
unsigned long *rx_accept_flags,
|
||||
unsigned long *tx_accept_flags)
|
||||
unsigned long *rx_accept_flags,
|
||||
unsigned long *tx_accept_flags)
|
||||
{
|
||||
/* Clear the flags first */
|
||||
*rx_accept_flags = 0;
|
||||
|
@ -1880,8 +1880,6 @@ int bnx2x_vf_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
|
||||
int leading);
|
||||
void bnx2x_free_hsi_mem(struct bnx2x_softc *sc);
|
||||
int bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc);
|
||||
int bnx2x_fill_accept_flags(struct bnx2x_softc *sc, uint32_t rx_mode,
|
||||
unsigned long *rx_accept_flags, unsigned long *tx_accept_flags);
|
||||
int bnx2x_check_bull(struct bnx2x_softc *sc);
|
||||
|
||||
//#define BNX2X_PULSE
|
||||
|
@ -576,7 +576,6 @@ bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc)
|
||||
{
|
||||
struct vf_set_q_filters_tlv *query;
|
||||
struct vf_common_reply_tlv *reply = &sc->vf2pf_mbox->resp.common_reply;
|
||||
unsigned long tx_mask;
|
||||
|
||||
query = &sc->vf2pf_mbox->query[0].set_q_filters;
|
||||
bnx2x_init_first_tlv(sc, &query->first_tlv, BNX2X_VF_TLV_SET_Q_FILTERS,
|
||||
@ -585,7 +584,27 @@ bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc)
|
||||
query->vf_qid = 0;
|
||||
query->flags = BNX2X_VF_RX_MASK_CHANGED;
|
||||
|
||||
if (bnx2x_fill_accept_flags(sc, sc->rx_mode, &query->rx_mask, &tx_mask)) {
|
||||
switch (sc->rx_mode) {
|
||||
case BNX2X_RX_MODE_NONE: /* no Rx */
|
||||
query->rx_mask = VFPF_RX_MASK_ACCEPT_NONE;
|
||||
break;
|
||||
case BNX2X_RX_MODE_NORMAL:
|
||||
query->rx_mask = VFPF_RX_MASK_ACCEPT_MATCHED_MULTICAST;
|
||||
query->rx_mask |= VFPF_RX_MASK_ACCEPT_MATCHED_UNICAST;
|
||||
query->rx_mask |= VFPF_RX_MASK_ACCEPT_BROADCAST;
|
||||
break;
|
||||
case BNX2X_RX_MODE_ALLMULTI:
|
||||
query->rx_mask = VFPF_RX_MASK_ACCEPT_ALL_MULTICAST;
|
||||
query->rx_mask |= VFPF_RX_MASK_ACCEPT_MATCHED_UNICAST;
|
||||
query->rx_mask |= VFPF_RX_MASK_ACCEPT_BROADCAST;
|
||||
break;
|
||||
case BNX2X_RX_MODE_PROMISC:
|
||||
query->rx_mask = VFPF_RX_MASK_ACCEPT_ALL_UNICAST;
|
||||
query->rx_mask |= VFPF_RX_MASK_ACCEPT_ALL_MULTICAST;
|
||||
query->rx_mask |= VFPF_RX_MASK_ACCEPT_BROADCAST;
|
||||
break;
|
||||
default:
|
||||
PMD_DRV_LOG(ERR, "BAD rx mode (%d)", sc->rx_mode);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,13 @@ struct vf_resource_query {
|
||||
|
||||
#define TLV_BUFFER_SIZE 1024
|
||||
|
||||
#define VFPF_RX_MASK_ACCEPT_NONE 0x00000000
|
||||
#define VFPF_RX_MASK_ACCEPT_MATCHED_UNICAST 0x00000001
|
||||
#define VFPF_RX_MASK_ACCEPT_MATCHED_MULTICAST 0x00000002
|
||||
#define VFPF_RX_MASK_ACCEPT_ALL_UNICAST 0x00000004
|
||||
#define VFPF_RX_MASK_ACCEPT_ALL_MULTICAST 0x00000008
|
||||
#define VFPF_RX_MASK_ACCEPT_BROADCAST 0x00000010
|
||||
|
||||
/* general tlv header (used for both vf->pf request and pf->vf response) */
|
||||
struct channel_tlv {
|
||||
uint16_t type;
|
||||
|
Loading…
Reference in New Issue
Block a user