Message ID | 1462995634-24602-1-git-send-email-jjmeijer88@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Kalle Valo |
Headers | show |
On 11-05-16 21:40, Jaap Jan Meijer wrote: > If brcmf_cfg80211_get_station fails to determine the RSSI from the > per-chain values get all values individually as a fallback. That commit message looks good. > Signed-off-by: Jaap Jan Meijer <jjmeijer88@gmail.com> > --- > .../broadcom/brcm80211/brcmfmac/cfg80211.c | 42 ++++++++++++++++++++++ > 1 file changed, 42 insertions(+) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > index d5c2a27..60229c8 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > @@ -2480,12 +2480,16 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, > const u8 *mac, struct station_info *sinfo) > { > struct brcmf_if *ifp = netdev_priv(ndev); > + struct brcmf_scb_val_le scb_val; > s32 err = 0; > struct brcmf_sta_info_le sta_info_le; > u32 sta_flags; > u32 is_tdls_peer; > s32 total_rssi; > s32 count_rssi; > + int rssi; > + u32 beacon_period; > + u32 dtim_period; > u32 i; > > brcmf_dbg(TRACE, "Enter, MAC %pM\n", mac); > @@ -2569,6 +2573,44 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, > sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); > total_rssi /= count_rssi; > sinfo->signal = total_rssi; > + } else if (test_bit(BRCMF_VIF_STATUS_CONNECTED, > + &ifp->vif->sme_state)) { > + memset(&scb_val, 0, sizeof(scb_val)); > + err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI, > + &scb_val, sizeof(scb_val)); > + if (err) { > + brcmf_err("Could not get rssi (%d)\n", err); > + goto done; > + } else { > + rssi = le32_to_cpu(scb_val.val); > + sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); > + sinfo->signal = rssi; > + brcmf_dbg(CONN, "RSSI %d dBm\n", rssi); > + } However, this patch changes more. I did not get back on your question regarding beacon period and dtim. Sorry for that as it means this patch still need rework. Those values are obtained differently and filled in by the function brcmf_fill_bss_param() (called in line 2530). When you do that make sure the subject prefix is 'PATCH v2' iso 'PATCH' (using git format-patch option --subject-prefix=..) and add a changelog after your signed-off line as shown below: Signed-off-by: Jaap Jan Meijer <jjmeijer88@gmail.com> --- change log: v2: - bla... --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 42 ++++++++++++++++++++++ Don't get discouraged :-D Nederlander? Regards, Arend > + err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_BCNPRD, > + &beacon_period); > + if (err) { > + brcmf_err("Could not get beacon period (%d)\n", > + err); > + goto done; > + } else { > + sinfo->bss_param.beacon_interval = > + beacon_period; > + brcmf_dbg(CONN, "Beacon peroid %d\n", > + beacon_period); > + } > + err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_DTIMPRD, > + &dtim_period); > + if (err) { > + brcmf_err("Could not get DTIM period (%d)\n", > + err); > + goto done; > + } else { > + sinfo->bss_param.dtim_period = dtim_period; > + brcmf_dbg(CONN, "DTIM peroid %d\n", > + dtim_period); > + } > + sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); > } > } > done: > -- 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
Arend van Spriel <arend.vanspriel@broadcom.com> writes: > On 11-05-16 21:40, Jaap Jan Meijer wrote: >> If brcmf_cfg80211_get_station fails to determine the RSSI from the >> per-chain values get all values individually as a fallback. > > That commit message looks good. This fixed a regression, right? So then a Fixes line would be nice: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/SubmittingPatches#n171
2016-05-11 22:55 GMT+02:00 Arend van Spriel <arend.vanspriel@broadcom.com>: > However, this patch changes more. I did not get back on your question > regarding beacon period and dtim. Sorry for that as it means this patch > still need rework. Those values are obtained differently and filled in > by the function brcmf_fill_bss_param() (called in line 2530). When you > do that make sure the subject prefix is 'PATCH v2' iso 'PATCH' (using > git format-patch option --subject-prefix=..) and add a changelog after > your signed-off line as shown below: > > Signed-off-by: Jaap Jan Meijer <jjmeijer88@gmail.com> > --- > change log: > v2: > - bla... > --- > .../broadcom/brcm80211/brcmfmac/cfg80211.c | 42 > ++++++++++++++++++++++ > > Don't get discouraged :-D Nederlander? I won't but I hope you won't either and yes, what gave it away? ;) 2016-05-12 8:32 GMT+02:00 Kalle Valo <kvalo@codeaurora.org>: > > This fixed a regression, right? So then a Fixes line would be nice: > > https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/SubmittingPatches#n171 > > -- > Kalle Valo Thank you for the feedback guys, I will send a new patch shortly. -- 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
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index d5c2a27..60229c8 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2480,12 +2480,16 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, const u8 *mac, struct station_info *sinfo) { struct brcmf_if *ifp = netdev_priv(ndev); + struct brcmf_scb_val_le scb_val; s32 err = 0; struct brcmf_sta_info_le sta_info_le; u32 sta_flags; u32 is_tdls_peer; s32 total_rssi; s32 count_rssi; + int rssi; + u32 beacon_period; + u32 dtim_period; u32 i; brcmf_dbg(TRACE, "Enter, MAC %pM\n", mac); @@ -2569,6 +2573,44 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); total_rssi /= count_rssi; sinfo->signal = total_rssi; + } else if (test_bit(BRCMF_VIF_STATUS_CONNECTED, + &ifp->vif->sme_state)) { + memset(&scb_val, 0, sizeof(scb_val)); + err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI, + &scb_val, sizeof(scb_val)); + if (err) { + brcmf_err("Could not get rssi (%d)\n", err); + goto done; + } else { + rssi = le32_to_cpu(scb_val.val); + sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->signal = rssi; + brcmf_dbg(CONN, "RSSI %d dBm\n", rssi); + } + err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_BCNPRD, + &beacon_period); + if (err) { + brcmf_err("Could not get beacon period (%d)\n", + err); + goto done; + } else { + sinfo->bss_param.beacon_interval = + beacon_period; + brcmf_dbg(CONN, "Beacon peroid %d\n", + beacon_period); + } + err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_DTIMPRD, + &dtim_period); + if (err) { + brcmf_err("Could not get DTIM period (%d)\n", + err); + goto done; + } else { + sinfo->bss_param.dtim_period = dtim_period; + brcmf_dbg(CONN, "DTIM peroid %d\n", + dtim_period); + } + sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); } } done:
If brcmf_cfg80211_get_station fails to determine the RSSI from the per-chain values get all values individually as a fallback. Signed-off-by: Jaap Jan Meijer <jjmeijer88@gmail.com> --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+)