Merge tag 'mac80211-next-for-davem-2017-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says: ==================== Another set of patches for -next: * API support for concurrent scheduled scan requests * API changes for roaming reporting * BSS max idle support in mac80211 * API changes for TX status reporting in mac80211 * API changes for RX rate reporting in mac80211 * rewrite monitor logic to prepare for BPF filters * bugfix for rare devices without 2.4 GHz support * a bugfix for recent DFS changes * some further cleanups The API changes are actually at a nice time, since it's typically quiet just before the merge window, and trees can be synchronized easily during it. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -694,7 +694,7 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
|
||||
if (unlikely(phystat0 & (B43_RX_PHYST0_PLCPHCF | B43_RX_PHYST0_PLCPFV)))
|
||||
status.flag |= RX_FLAG_FAILED_PLCP_CRC;
|
||||
if (phystat0 & B43_RX_PHYST0_SHORTPRMBL)
|
||||
status.flag |= RX_FLAG_SHORTPRE;
|
||||
status.enc_flags |= RX_ENC_FLAG_SHORTPRE;
|
||||
if (macstat & B43_RX_MAC_DECERR) {
|
||||
/* Decryption with the given key failed.
|
||||
* Drop the packet. We also won't be able to decrypt it with
|
||||
|
@@ -762,7 +762,7 @@ s32 brcmf_notify_escan_complete(struct brcmf_cfg80211_info *cfg,
|
||||
brcmf_dbg(SCAN, "scheduled scan completed\n");
|
||||
cfg->internal_escan = false;
|
||||
if (!aborted)
|
||||
cfg80211_sched_scan_results(cfg_to_wiphy(cfg));
|
||||
cfg80211_sched_scan_results(cfg_to_wiphy(cfg), 0);
|
||||
} else if (scan_request) {
|
||||
struct cfg80211_scan_info info = {
|
||||
.aborted = aborted,
|
||||
@@ -3372,7 +3372,7 @@ brcmf_notify_sched_scan_results(struct brcmf_if *ifp,
|
||||
goto free_req;
|
||||
|
||||
out_err:
|
||||
cfg80211_sched_scan_stopped(wiphy);
|
||||
cfg80211_sched_scan_stopped(wiphy, 0);
|
||||
free_req:
|
||||
kfree(request);
|
||||
return err;
|
||||
@@ -3405,7 +3405,7 @@ brcmf_cfg80211_sched_scan_start(struct wiphy *wiphy,
|
||||
}
|
||||
|
||||
static int brcmf_cfg80211_sched_scan_stop(struct wiphy *wiphy,
|
||||
struct net_device *ndev)
|
||||
struct net_device *ndev, u64 reqid)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
@@ -3607,7 +3607,7 @@ static s32 brcmf_cfg80211_resume(struct wiphy *wiphy)
|
||||
cfg->wowl.pre_pmmode);
|
||||
cfg->wowl.active = false;
|
||||
if (cfg->wowl.nd_enabled) {
|
||||
brcmf_cfg80211_sched_scan_stop(cfg->wiphy, ifp->ndev);
|
||||
brcmf_cfg80211_sched_scan_stop(cfg->wiphy, ifp->ndev, 0);
|
||||
brcmf_fweh_unregister(cfg->pub, BRCMF_E_PFN_NET_FOUND);
|
||||
brcmf_fweh_register(cfg->pub, BRCMF_E_PFN_NET_FOUND,
|
||||
brcmf_notify_sched_scan_results);
|
||||
@@ -3691,7 +3691,7 @@ static s32 brcmf_cfg80211_suspend(struct wiphy *wiphy,
|
||||
|
||||
/* Stop scheduled scan */
|
||||
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PNO))
|
||||
brcmf_cfg80211_sched_scan_stop(wiphy, ndev);
|
||||
brcmf_cfg80211_sched_scan_stop(wiphy, ndev, 0);
|
||||
|
||||
/* end any scanning */
|
||||
if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status))
|
||||
@@ -5359,6 +5359,7 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg,
|
||||
struct ieee80211_supported_band *band;
|
||||
struct brcmf_bss_info_le *bi;
|
||||
struct brcmu_chan ch;
|
||||
struct cfg80211_roam_info roam_info = {};
|
||||
u32 freq;
|
||||
s32 err = 0;
|
||||
u8 *buf;
|
||||
@@ -5397,9 +5398,15 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg,
|
||||
|
||||
done:
|
||||
kfree(buf);
|
||||
cfg80211_roamed(ndev, notify_channel, (u8 *)profile->bssid,
|
||||
conn_info->req_ie, conn_info->req_ie_len,
|
||||
conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL);
|
||||
|
||||
roam_info.channel = notify_channel;
|
||||
roam_info.bssid = profile->bssid;
|
||||
roam_info.req_ie = conn_info->req_ie;
|
||||
roam_info.req_ie_len = conn_info->req_ie_len;
|
||||
roam_info.resp_ie = conn_info->resp_ie;
|
||||
roam_info.resp_ie_len = conn_info->resp_ie_len;
|
||||
|
||||
cfg80211_roamed(ndev, &roam_info, GFP_KERNEL);
|
||||
brcmf_dbg(CONN, "Report roaming result\n");
|
||||
|
||||
set_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state);
|
||||
@@ -6374,11 +6381,11 @@ err:
|
||||
static void brcmf_wiphy_pno_params(struct wiphy *wiphy)
|
||||
{
|
||||
/* scheduled scan settings */
|
||||
wiphy->max_sched_scan_reqs = 1;
|
||||
wiphy->max_sched_scan_ssids = BRCMF_PNO_MAX_PFN_COUNT;
|
||||
wiphy->max_match_sets = BRCMF_PNO_MAX_PFN_COUNT;
|
||||
wiphy->max_sched_scan_ie_len = BRCMF_SCAN_IE_LEN_MAX;
|
||||
wiphy->max_sched_scan_plan_interval = BRCMF_PNO_SCHED_SCAN_MAX_PERIOD;
|
||||
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
@@ -7092,9 +7092,9 @@ prep_mac80211_status(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
|
||||
rspec = brcms_c_compute_rspec(rxh, plcp);
|
||||
if (is_mcs_rate(rspec)) {
|
||||
rx_status->rate_idx = rspec & RSPEC_RATE_MASK;
|
||||
rx_status->flag |= RX_FLAG_HT;
|
||||
rx_status->encoding = RX_ENC_HT;
|
||||
if (rspec_is40mhz(rspec))
|
||||
rx_status->flag |= RX_FLAG_40MHZ;
|
||||
rx_status->bw = RATE_INFO_BW_40;
|
||||
} else {
|
||||
switch (rspec2rate(rspec)) {
|
||||
case BRCM_RATE_1M:
|
||||
@@ -7149,9 +7149,9 @@ prep_mac80211_status(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
|
||||
/* Determine short preamble and rate_idx */
|
||||
if (is_cck_rate(rspec)) {
|
||||
if (rxh->PhyRxStatus_0 & PRXS0_SHORTH)
|
||||
rx_status->flag |= RX_FLAG_SHORTPRE;
|
||||
rx_status->enc_flags |= RX_ENC_FLAG_SHORTPRE;
|
||||
} else if (is_ofdm_rate(rspec)) {
|
||||
rx_status->flag |= RX_FLAG_SHORTPRE;
|
||||
rx_status->enc_flags |= RX_ENC_FLAG_SHORTPRE;
|
||||
} else {
|
||||
brcms_err(wlc->hw->d11core, "%s: Unknown modulation\n",
|
||||
__func__);
|
||||
@@ -7159,7 +7159,7 @@ prep_mac80211_status(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
|
||||
}
|
||||
|
||||
if (plcp3_issgi(plcp[3]))
|
||||
rx_status->flag |= RX_FLAG_SHORT_GI;
|
||||
rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
|
||||
|
||||
if (rxh->RxStatus1 & RXS_DECERR) {
|
||||
rx_status->flag |= RX_FLAG_FAILED_PLCP_CRC;
|
||||
|
Reference in New Issue
Block a user