Message ID | 1370444989-2095-2-git-send-email-ordex@autistici.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On 06/05/2013 05:09 PM, Antonio Quartulli wrote: > From: Antonio Quartulli <antonio@open-mesh.com> > > cfg80211 passes a NULL channel to mgmt_tx if the frame has > to be sent on the one currently in use by the device. > Make the implementation of mgmt_tx correctly handle this > case > > Cc: Arend van Spriel <arend@broadcom.com> > Cc: brcm80211-dev-list@broadcom.com > Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> > --- For my name above you (or Johannes) can change 'Cc:' to 'Acked-by:' Gr. AvS > v3: > - read current freq from the firmware via BRCMF_C_GET_CHANNEL > > drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/05/2013 05:34 PM, Arend van Spriel wrote: > On 06/05/2013 05:09 PM, Antonio Quartulli wrote: >> From: Antonio Quartulli <antonio@open-mesh.com> >> >> cfg80211 passes a NULL channel to mgmt_tx if the frame has >> to be sent on the one currently in use by the device. >> Make the implementation of mgmt_tx correctly handle this >> case >> >> Cc: Arend van Spriel <arend@broadcom.com> >> Cc: brcm80211-dev-list@broadcom.com >> Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> >> --- > > For my name above you (or Johannes) can change 'Cc:' to 'Acked-by:' Or John? > Gr. AvS > >> v3: >> - read current freq from the firmware via BRCMF_C_GET_CHANNEL >> >> drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 15 >> ++++++++++++--- >> 1 file changed, 12 insertions(+), 3 deletions(-) >> > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 2013-06-05 at 17:35 +0200, Arend van Spriel wrote: > On 06/05/2013 05:34 PM, Arend van Spriel wrote: > > On 06/05/2013 05:09 PM, Antonio Quartulli wrote: > >> From: Antonio Quartulli <antonio@open-mesh.com> > >> > >> cfg80211 passes a NULL channel to mgmt_tx if the frame has > >> to be sent on the one currently in use by the device. > >> Make the implementation of mgmt_tx correctly handle this > >> case > >> > >> Cc: Arend van Spriel <arend@broadcom.com> > >> Cc: brcm80211-dev-list@broadcom.com > >> Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> > >> --- > > > > For my name above you (or Johannes) can change 'Cc:' to 'Acked-by:' > > Or John? I think I'll take the whole series if that's ok with everyone, otherwise we get synchronisation issues between John and myself :) johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
iOn Wed, Jun 05, 2013 at 08:40:10AM -0700, Johannes Berg wrote: > On Wed, 2013-06-05 at 17:35 +0200, Arend van Spriel wrote: > > On 06/05/2013 05:34 PM, Arend van Spriel wrote: > > > On 06/05/2013 05:09 PM, Antonio Quartulli wrote: > > >> From: Antonio Quartulli <antonio@open-mesh.com> > > >> > > >> cfg80211 passes a NULL channel to mgmt_tx if the frame has > > >> to be sent on the one currently in use by the device. > > >> Make the implementation of mgmt_tx correctly handle this > > >> case > > >> > > >> Cc: Arend van Spriel <arend@broadcom.com> > > >> Cc: brcm80211-dev-list@broadcom.com > > >> Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> > > >> --- > > > > > > For my name above you (or Johannes) can change 'Cc:' to 'Acked-by:' > > > > Or John? > > I think I'll take the whole series if that's ok with everyone, otherwise > we get synchronisation issues between John and myself :) > Yeah, I think that's the best option. Thanks everybody!
On Wed, Jun 05, 2013 at 05:40:10PM +0200, Johannes Berg wrote: > On Wed, 2013-06-05 at 17:35 +0200, Arend van Spriel wrote: > > On 06/05/2013 05:34 PM, Arend van Spriel wrote: > > > On 06/05/2013 05:09 PM, Antonio Quartulli wrote: > > >> From: Antonio Quartulli <antonio@open-mesh.com> > > >> > > >> cfg80211 passes a NULL channel to mgmt_tx if the frame has > > >> to be sent on the one currently in use by the device. > > >> Make the implementation of mgmt_tx correctly handle this > > >> case > > >> > > >> Cc: Arend van Spriel <arend@broadcom.com> > > >> Cc: brcm80211-dev-list@broadcom.com > > >> Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> > > >> --- > > > > > > For my name above you (or Johannes) can change 'Cc:' to 'Acked-by:' > > > > Or John? > > I think I'll take the whole series if that's ok with everyone, otherwise > we get synchronisation issues between John and myself :) Yes, please.
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index 6d758f2..8bd256b 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c @@ -3917,6 +3917,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, struct brcmf_fil_af_params_le *af_params; bool ack; s32 chan_nr; + u32 freq; brcmf_dbg(TRACE, "Enter\n"); @@ -3929,6 +3930,8 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, return -EPERM; } + vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev); + if (ieee80211_is_probe_resp(mgmt->frame_control)) { /* Right now the only reason to get a probe response */ /* is for p2p listen response or for p2p GO from */ @@ -3944,7 +3947,6 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, ie_offset = DOT11_MGMT_HDR_LEN + DOT11_BCN_PRB_FIXED_LEN; ie_len = len - ie_offset; - vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev); if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif) vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif; err = brcmf_vif_set_mgmt_ie(vif, @@ -3968,8 +3970,15 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, memcpy(&af_params->bssid[0], &mgmt->bssid[0], ETH_ALEN); /* Add the length exepted for 802.11 header */ action_frame->len = cpu_to_le16(len - DOT11_MGMT_HDR_LEN); - /* Add the channel */ - chan_nr = ieee80211_frequency_to_channel(chan->center_freq); + /* Add the channel. Use the one specified as parameter if any or + * the current one (got from the firmware) otherwise + */ + if (chan) + freq = chan->center_freq; + else + brcmf_fil_cmd_int_get(vif->ifp, BRCMF_C_GET_CHANNEL, + &freq); + chan_nr = ieee80211_frequency_to_channel(freq); af_params->channel = cpu_to_le32(chan_nr); memcpy(action_frame->data, &buf[DOT11_MGMT_HDR_LEN],