Message ID | 1584604406-15452-2-git-send-email-wright.feng@cypress.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Kalle Valo |
Headers | show |
Series | Add AP isolate support and two modules parameters | expand |
On 3/19/2020 8:53 AM, Wright Feng wrote: > Hostap daemon has a parameter "ap_isolate" which is used to prevent > low-level bridging of frames between associated stations in the BSS. > For driver side, we add cfg80211 ops method change_bss to support > setting AP isolate from user space. > > Signed-off-by: Wright Feng <wright.feng@cypress.com> > Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com> > --- > .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > index a2328d3..eb49900 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c [...] > @@ -5421,6 +5441,7 @@ static struct cfg80211_ops brcmf_cfg80211_ops = { > .update_connect_params = brcmf_cfg80211_update_conn_params, > .set_pmk = brcmf_cfg80211_set_pmk, > .del_pmk = brcmf_cfg80211_del_pmk, > + .change_bss = brcmf_cfg80211_change_bss, maybe only add this when firmware support "ap_isolate"? Regards, Arend
Arend Van Spriel 於 3/19/2020 4:48 PM 寫道: > On 3/19/2020 8:53 AM, Wright Feng wrote: >> Hostap daemon has a parameter "ap_isolate" which is used to prevent >> low-level bridging of frames between associated stations in the BSS. >> For driver side, we add cfg80211 ops method change_bss to support >> setting AP isolate from user space. >> >> Signed-off-by: Wright Feng <wright.feng@cypress.com> >> Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com> >> --- >> .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 21 >> +++++++++++++++++++++ >> 1 file changed, 21 insertions(+) >> >> diff --git >> a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> index a2328d3..eb49900 100644 >> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > > [...] > >> @@ -5421,6 +5441,7 @@ static struct cfg80211_ops brcmf_cfg80211_ops = { >> .update_connect_params = brcmf_cfg80211_update_conn_params, >> .set_pmk = brcmf_cfg80211_set_pmk, >> .del_pmk = brcmf_cfg80211_del_pmk, >> + .change_bss = brcmf_cfg80211_change_bss, > > maybe only add this when firmware support "ap_isolate"? Sounds great, will do it in V2. > > Regards, > Arend
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index a2328d3..eb49900 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -5376,6 +5376,26 @@ static int brcmf_cfg80211_del_pmk(struct wiphy *wiphy, struct net_device *dev, return brcmf_set_pmk(ifp, NULL, 0); } +static int +brcmf_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev, + struct bss_parameters *params) +{ + struct brcmf_if *ifp; + int ret = 0; + u32 ap_isolate; + + brcmf_dbg(TRACE, "Enter\n"); + ifp = netdev_priv(dev); + if (params->ap_isolate >= 0) { + ap_isolate = (u32)params->ap_isolate; + ret = brcmf_fil_iovar_int_set(ifp, "ap_isolate", ap_isolate); + if (ret < 0) + brcmf_err("ap_isolate iovar failed: ret=%d\n", ret); + } + + return ret; +} + static struct cfg80211_ops brcmf_cfg80211_ops = { .add_virtual_intf = brcmf_cfg80211_add_iface, .del_virtual_intf = brcmf_cfg80211_del_iface, @@ -5421,6 +5441,7 @@ static struct cfg80211_ops brcmf_cfg80211_ops = { .update_connect_params = brcmf_cfg80211_update_conn_params, .set_pmk = brcmf_cfg80211_set_pmk, .del_pmk = brcmf_cfg80211_del_pmk, + .change_bss = brcmf_cfg80211_change_bss, }; struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings)