Commit 02a588a2 authored by Alwin Beukers's avatar Alwin Beukers Committed by John W. Linville

brcm80211: smac: combine promiscuous mode functionality

Combined mac configuration for promiscious mode and monitor mode, and
removed unused monitor mode flag in pub structure.
Reviewed-by: default avatarArend van Spriel <arend@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarAlwin Beukers <alwin@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ad3b8b39
...@@ -3583,42 +3583,30 @@ static void brcms_c_bandinit_ordered(struct brcms_c_info *wlc, ...@@ -3583,42 +3583,30 @@ static void brcms_c_bandinit_ordered(struct brcms_c_info *wlc,
brcms_c_set_phy_chanspec(wlc, chanspec); brcms_c_set_phy_chanspec(wlc, chanspec);
} }
static void brcms_c_mac_bcn_promisc(struct brcms_c_info *wlc) /*
{ * Set or clear maccontrol bits MCTL_PROMISC, MCTL_BCNS_PROMISC and
if (wlc->bcnmisc_monitor) * MCTL_KEEPCONTROL
brcms_b_mctrl(wlc->hw, MCTL_BCNS_PROMISC, MCTL_BCNS_PROMISC); */
else
brcms_b_mctrl(wlc->hw, MCTL_BCNS_PROMISC, 0);
}
void brcms_c_mac_bcn_promisc_change(struct brcms_c_info *wlc, bool promisc)
{
wlc->bcnmisc_monitor = promisc;
brcms_c_mac_bcn_promisc(wlc);
}
/* set or clear maccontrol bits MCTL_PROMISC and MCTL_KEEPCONTROL */
static void brcms_c_mac_promisc(struct brcms_c_info *wlc) static void brcms_c_mac_promisc(struct brcms_c_info *wlc)
{ {
u32 promisc_bits = 0; u32 promisc_bits = 0;
/* if (wlc->bcnmisc_monitor)
* promiscuous mode just sets MCTL_PROMISC promisc_bits |= MCTL_BCNS_PROMISC;
* Note: APs get all BSS traffic without the need to set
* the MCTL_PROMISC bit since all BSS data traffic is
* directed at the AP
*/
if (wlc->pub->promisc)
promisc_bits |= MCTL_PROMISC;
/* monitor mode needs both MCTL_PROMISC and MCTL_KEEPCONTROL
* Note: monitor mode also needs MCTL_BCNS_PROMISC, but that is
* handled in brcms_c_mac_bcn_promisc()
*/
if (wlc->monitor) if (wlc->monitor)
promisc_bits |= MCTL_PROMISC | MCTL_KEEPCONTROL; promisc_bits |=
MCTL_PROMISC | MCTL_BCNS_PROMISC | MCTL_KEEPCONTROL;
brcms_b_mctrl(wlc->hw, MCTL_PROMISC | MCTL_KEEPCONTROL, promisc_bits); brcms_b_mctrl(wlc->hw,
MCTL_PROMISC | MCTL_BCNS_PROMISC | MCTL_KEEPCONTROL,
promisc_bits);
}
void brcms_c_mac_bcn_promisc_change(struct brcms_c_info *wlc, bool promisc)
{
wlc->bcnmisc_monitor = promisc;
brcms_c_mac_promisc(wlc);
} }
/* /*
...@@ -3650,7 +3638,6 @@ static void brcms_c_ucode_mac_upd(struct brcms_c_info *wlc) ...@@ -3650,7 +3638,6 @@ static void brcms_c_ucode_mac_upd(struct brcms_c_info *wlc)
} }
/* update the various promisc bits */ /* update the various promisc bits */
brcms_c_mac_bcn_promisc(wlc);
brcms_c_mac_promisc(wlc); brcms_c_mac_promisc(wlc);
} }
......
...@@ -381,7 +381,6 @@ struct brcms_pub { ...@@ -381,7 +381,6 @@ struct brcms_pub {
uint _nbands; /* # bands supported */ uint _nbands; /* # bands supported */
uint now; /* # elapsed seconds */ uint now; /* # elapsed seconds */
bool promisc; /* promiscuous destination address */
bool delayed_down; /* down delayed */ bool delayed_down; /* down delayed */
bool associated; /* true:part of [I]BSS, false: not */ bool associated; /* true:part of [I]BSS, false: not */
/* (union of stas_associated, aps_associated) */ /* (union of stas_associated, aps_associated) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment