From e48b1c2c07101a31ff416be2754df73aabb2a4cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Thu, 2 Feb 2017 09:21:13 +0100 Subject: [PATCH] mac80211: brcmfmac: backport some old patches from 2016 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Rafał Miłecki --- ...aybe-uninitialized-warning-in-brcmf_.patch | 43 +++++ ...oto-add-callback-for-queuing-TX-data.patch | 174 ++++++++++++++++++ ...c-print-name-of-connect-status-event.patch | 62 +++++++ ...beacon-IE-after-bss-up-and-clear-whe.patch | 45 +++++ ...riting-channel-out-of-allocated-arra.patch | 6 +- ...iphy-bands-after-registering-it-firs.patch | 4 +- ...cmfmac-use-wiphy_read_of_freq_limits.patch | 4 +- ...-register-wiphy-s-during-module_init.patch | 2 +- 8 files changed, 332 insertions(+), 8 deletions(-) create mode 100644 package/kernel/mac80211/patches/356-0001-brcmfmac-avoid-maybe-uninitialized-warning-in-brcmf_.patch create mode 100644 package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch create mode 100644 package/kernel/mac80211/patches/356-0003-brcmfmac-print-name-of-connect-status-event.patch create mode 100644 package/kernel/mac80211/patches/356-0004-brcmfmac-update-beacon-IE-after-bss-up-and-clear-whe.patch diff --git a/package/kernel/mac80211/patches/356-0001-brcmfmac-avoid-maybe-uninitialized-warning-in-brcmf_.patch b/package/kernel/mac80211/patches/356-0001-brcmfmac-avoid-maybe-uninitialized-warning-in-brcmf_.patch new file mode 100644 index 00000000000..e7ca4be526b --- /dev/null +++ b/package/kernel/mac80211/patches/356-0001-brcmfmac-avoid-maybe-uninitialized-warning-in-brcmf_.patch @@ -0,0 +1,43 @@ +From d3532ea6ce4ea501e421d130555e59edc2945f99 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Tue, 18 Oct 2016 00:13:40 +0200 +Subject: [PATCH] brcmfmac: avoid maybe-uninitialized warning in + brcmf_cfg80211_start_ap +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +A bugfix added a sanity check around the assignment and use of the +'is_11d' variable, which looks correct to me, but as the function is +rather complex already, this confuses the compiler to the point where +it can no longer figure out if the variable is always initialized +correctly: + +brcm80211/brcmfmac/cfg80211.c: In function ‘brcmf_cfg80211_start_ap’: +brcm80211/brcmfmac/cfg80211.c:4586:10: error: ‘is_11d’ may be used uninitialized in this function [-Werror=maybe-uninitialized] + +This adds an initialization for the newly introduced case in which +the variable should not really be used, in order to make the warning +go away. + +Fixes: b3589dfe0212 ("brcmfmac: ignore 11d configuration errors") +Cc: Hante Meuleman +Cc: Arend van Spriel +Cc: Kalle Valo +Signed-off-by: Arnd Bergmann +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -4516,7 +4516,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi + /* store current 11d setting */ + if (brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_REGULATORY, + &ifp->vif->is_11d)) { +- supports_11d = false; ++ is_11d = supports_11d = false; + } else { + country_ie = brcmf_parse_tlvs((u8 *)settings->beacon.tail, + settings->beacon.tail_len, diff --git a/package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch b/package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch new file mode 100644 index 00000000000..1662eb5dbbd --- /dev/null +++ b/package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch @@ -0,0 +1,174 @@ +From b073ac1fcf42376018f6db6acc885dfd2cc9ff02 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Mon, 26 Sep 2016 23:51:44 +0200 +Subject: [PATCH] brcmfmac: proto: add callback for queuing TX data +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +So far our core code was calling brcmf_fws_process_skb which wasn't +a proper thing to do. If case of devices using msgbuf protocol fwsignal +shouldn't be used. It was an unnecessary extra layer simply calling +a protocol specifix txdata function. + +Please note we already have txdata callback, but it's used for calls +between bcdc and fwsignal so it couldn't be simply used there. + +This makes core code more generic (instead of bcdc/fwsignal specific). + +Signed-off-by: Rafał Miłecki +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 12 ++++++++++++ + drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 8 +++++++- + .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 15 +++++---------- + .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h | 1 + + drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 6 +++--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c | 2 +- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++ + 7 files changed, 38 insertions(+), 15 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c +@@ -326,6 +326,17 @@ brcmf_proto_bcdc_hdrpull(struct brcmf_pu + return 0; + } + ++static int brcmf_proto_bcdc_tx_queue_data(struct brcmf_pub *drvr, int ifidx, ++ struct sk_buff *skb) ++{ ++ struct brcmf_if *ifp = brcmf_get_ifp(drvr, ifidx); ++ ++ if (!brcmf_fws_queue_skbs(drvr->fws)) ++ return brcmf_proto_txdata(drvr, ifidx, 0, skb); ++ ++ return brcmf_fws_process_skb(ifp, skb); ++} ++ + static int + brcmf_proto_bcdc_txdata(struct brcmf_pub *drvr, int ifidx, u8 offset, + struct sk_buff *pktbuf) +@@ -375,6 +386,7 @@ int brcmf_proto_bcdc_attach(struct brcmf + drvr->proto->hdrpull = brcmf_proto_bcdc_hdrpull; + drvr->proto->query_dcmd = brcmf_proto_bcdc_query_dcmd; + drvr->proto->set_dcmd = brcmf_proto_bcdc_set_dcmd; ++ drvr->proto->tx_queue_data = brcmf_proto_bcdc_tx_queue_data; + drvr->proto->txdata = brcmf_proto_bcdc_txdata; + drvr->proto->configure_addr_mode = brcmf_proto_bcdc_configure_addr_mode; + drvr->proto->delete_peer = brcmf_proto_bcdc_delete_peer; +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +@@ -239,7 +239,13 @@ static netdev_tx_t brcmf_netdev_start_xm + if (eh->h_proto == htons(ETH_P_PAE)) + atomic_inc(&ifp->pend_8021x_cnt); + +- ret = brcmf_fws_process_skb(ifp, skb); ++ /* determine the priority */ ++ if ((skb->priority == 0) || (skb->priority > 7)) ++ skb->priority = cfg80211_classify8021d(skb, NULL); ++ ++ ret = brcmf_proto_tx_queue_data(drvr, ifp->ifidx, skb); ++ if (ret < 0) ++ brcmf_txfinalize(ifp, skb, false); + + done: + if (ret) { +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +@@ -2100,16 +2100,6 @@ int brcmf_fws_process_skb(struct brcmf_i + int rc = 0; + + brcmf_dbg(DATA, "tx proto=0x%X\n", ntohs(eh->h_proto)); +- /* determine the priority */ +- if ((skb->priority == 0) || (skb->priority > 7)) +- skb->priority = cfg80211_classify8021d(skb, NULL); +- +- if (fws->avoid_queueing) { +- rc = brcmf_proto_txdata(drvr, ifp->ifidx, 0, skb); +- if (rc < 0) +- brcmf_txfinalize(ifp, skb, false); +- return rc; +- } + + /* set control buffer information */ + skcb->if_flags = 0; +@@ -2442,6 +2432,11 @@ void brcmf_fws_deinit(struct brcmf_pub * + kfree(fws); + } + ++bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws) ++{ ++ return !fws->avoid_queueing; ++} ++ + bool brcmf_fws_fc_active(struct brcmf_fws_info *fws) + { + if (!fws->creditmap_received) +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h +@@ -20,6 +20,7 @@ + + int brcmf_fws_init(struct brcmf_pub *drvr); + void brcmf_fws_deinit(struct brcmf_pub *drvr); ++bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws); + bool brcmf_fws_fc_active(struct brcmf_fws_info *fws); + void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb); + int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c +@@ -782,8 +782,8 @@ static int brcmf_msgbuf_schedule_txdata( + } + + +-static int brcmf_msgbuf_txdata(struct brcmf_pub *drvr, int ifidx, +- u8 offset, struct sk_buff *skb) ++static int brcmf_msgbuf_tx_queue_data(struct brcmf_pub *drvr, int ifidx, ++ struct sk_buff *skb) + { + struct brcmf_msgbuf *msgbuf = (struct brcmf_msgbuf *)drvr->proto->pd; + struct brcmf_flowring *flow = msgbuf->flow; +@@ -1467,7 +1467,7 @@ int brcmf_proto_msgbuf_attach(struct brc + drvr->proto->hdrpull = brcmf_msgbuf_hdrpull; + drvr->proto->query_dcmd = brcmf_msgbuf_query_dcmd; + drvr->proto->set_dcmd = brcmf_msgbuf_set_dcmd; +- drvr->proto->txdata = brcmf_msgbuf_txdata; ++ drvr->proto->tx_queue_data = brcmf_msgbuf_tx_queue_data; + drvr->proto->configure_addr_mode = brcmf_msgbuf_configure_addr_mode; + drvr->proto->delete_peer = brcmf_msgbuf_delete_peer; + drvr->proto->add_tdls_peer = brcmf_msgbuf_add_tdls_peer; +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c +@@ -51,7 +51,7 @@ int brcmf_proto_attach(struct brcmf_pub + drvr->bus_if->proto_type); + goto fail; + } +- if ((proto->txdata == NULL) || (proto->hdrpull == NULL) || ++ if (!proto->tx_queue_data || (proto->hdrpull == NULL) || + (proto->query_dcmd == NULL) || (proto->set_dcmd == NULL) || + (proto->configure_addr_mode == NULL) || + (proto->delete_peer == NULL) || (proto->add_tdls_peer == NULL)) { +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h +@@ -33,6 +33,8 @@ struct brcmf_proto { + void *buf, uint len); + int (*set_dcmd)(struct brcmf_pub *drvr, int ifidx, uint cmd, void *buf, + uint len); ++ int (*tx_queue_data)(struct brcmf_pub *drvr, int ifidx, ++ struct sk_buff *skb); + int (*txdata)(struct brcmf_pub *drvr, int ifidx, u8 offset, + struct sk_buff *skb); + void (*configure_addr_mode)(struct brcmf_pub *drvr, int ifidx, +@@ -74,6 +76,13 @@ static inline int brcmf_proto_set_dcmd(s + { + return drvr->proto->set_dcmd(drvr, ifidx, cmd, buf, len); + } ++ ++static inline int brcmf_proto_tx_queue_data(struct brcmf_pub *drvr, int ifidx, ++ struct sk_buff *skb) ++{ ++ return drvr->proto->tx_queue_data(drvr, ifidx, skb); ++} ++ + static inline int brcmf_proto_txdata(struct brcmf_pub *drvr, int ifidx, + u8 offset, struct sk_buff *skb) + { diff --git a/package/kernel/mac80211/patches/356-0003-brcmfmac-print-name-of-connect-status-event.patch b/package/kernel/mac80211/patches/356-0003-brcmfmac-print-name-of-connect-status-event.patch new file mode 100644 index 00000000000..1b2587ba510 --- /dev/null +++ b/package/kernel/mac80211/patches/356-0003-brcmfmac-print-name-of-connect-status-event.patch @@ -0,0 +1,62 @@ +From e1c122d55f9ec5608ca98a9a846fd39cdf3ed7d7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Fri, 14 Oct 2016 09:45:59 +0200 +Subject: [PATCH] brcmfmac: print name of connect status event +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This simplifies debugging. Format %s (%u) comes from similar debugging +message in brcmf_fweh_event_worker. + +Signed-off-by: Rafał Miłecki +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 ++- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 4 ++-- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h | 2 ++ + 3 files changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -5506,7 +5506,8 @@ brcmf_notify_connect_status_ap(struct br + u32 reason = e->reason; + struct station_info sinfo; + +- brcmf_dbg(CONN, "event %d, reason %d\n", event, reason); ++ brcmf_dbg(CONN, "event %s (%u), reason %d\n", ++ brcmf_fweh_event_name(event), event, reason); + if (event == BRCMF_E_LINK && reason == BRCMF_E_REASON_LINK_BSSCFG_DIS && + ndev != cfg_to_ndev(cfg)) { + brcmf_dbg(CONN, "AP mode link down\n"); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c +@@ -69,7 +69,7 @@ static struct brcmf_fweh_event_name fweh + * + * @code: code to lookup. + */ +-static const char *brcmf_fweh_event_name(enum brcmf_fweh_event_code code) ++const char *brcmf_fweh_event_name(enum brcmf_fweh_event_code code) + { + int i; + for (i = 0; i < ARRAY_SIZE(fweh_event_names); i++) { +@@ -79,7 +79,7 @@ static const char *brcmf_fweh_event_name + return "unknown"; + } + #else +-static const char *brcmf_fweh_event_name(enum brcmf_fweh_event_code code) ++const char *brcmf_fweh_event_name(enum brcmf_fweh_event_code code) + { + return "nodebug"; + } +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h +@@ -287,6 +287,8 @@ struct brcmf_fweh_info { + void *data); + }; + ++const char *brcmf_fweh_event_name(enum brcmf_fweh_event_code code); ++ + void brcmf_fweh_attach(struct brcmf_pub *drvr); + void brcmf_fweh_detach(struct brcmf_pub *drvr); + int brcmf_fweh_register(struct brcmf_pub *drvr, enum brcmf_fweh_event_code code, diff --git a/package/kernel/mac80211/patches/356-0004-brcmfmac-update-beacon-IE-after-bss-up-and-clear-whe.patch b/package/kernel/mac80211/patches/356-0004-brcmfmac-update-beacon-IE-after-bss-up-and-clear-whe.patch new file mode 100644 index 00000000000..01024f1efb0 --- /dev/null +++ b/package/kernel/mac80211/patches/356-0004-brcmfmac-update-beacon-IE-after-bss-up-and-clear-whe.patch @@ -0,0 +1,45 @@ +From f25ba69c638b24097840a96bd3caf5599f9a3616 Mon Sep 17 00:00:00 2001 +From: Wright Feng +Date: Fri, 18 Nov 2016 09:59:52 +0800 +Subject: [PATCH] brcmfmac: update beacon IE after bss up and clear when AP + stopped + +Firmware doesn't update beacon/Probe Response vendor IEs correctly when +bss is down, so we move brcmf_config_ap_mgmt_ie after BSS up. And host +driver should clear IEs when AP stopped so that the IEs in host side will +be synced with in firmware side. + +Signed-off-by: Wright Feng +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -4578,8 +4578,6 @@ brcmf_cfg80211_start_ap(struct wiphy *wi + brcmf_configure_opensecurity(ifp); + } + +- brcmf_config_ap_mgmt_ie(ifp->vif, &settings->beacon); +- + /* Parameters shared by all radio interfaces */ + if (!mbss) { + if ((supports_11d) && (is_11d != ifp->vif->is_11d)) { +@@ -4708,6 +4706,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi + WARN_ON(1); + } + ++ brcmf_config_ap_mgmt_ie(ifp->vif, &settings->beacon); + set_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state); + brcmf_net_setcarrier(ifp, true); + +@@ -4764,6 +4763,8 @@ static int brcmf_cfg80211_stop_ap(struct + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_UP, 1); + if (err < 0) + brcmf_err("BRCMF_C_UP error %d\n", err); ++ ++ brcmf_vif_clear_mgmt_ies(ifp->vif); + } else { + bss_enable.bsscfgidx = cpu_to_le32(ifp->bsscfgidx); + bss_enable.enable = cpu_to_le32(0); diff --git a/package/kernel/mac80211/patches/360-0001-brcmfmac-avoid-writing-channel-out-of-allocated-arra.patch b/package/kernel/mac80211/patches/360-0001-brcmfmac-avoid-writing-channel-out-of-allocated-arra.patch index 710979a738b..58af4d9078b 100644 --- a/package/kernel/mac80211/patches/360-0001-brcmfmac-avoid-writing-channel-out-of-allocated-arra.patch +++ b/package/kernel/mac80211/patches/360-0001-brcmfmac-avoid-writing-channel-out-of-allocated-arra.patch @@ -28,7 +28,7 @@ Signed-off-by: Kalle Valo --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -5913,7 +5913,6 @@ static int brcmf_construct_chaninfo(stru +@@ -5915,7 +5915,6 @@ static int brcmf_construct_chaninfo(stru u32 i, j; u32 total; u32 chaninfo; @@ -36,7 +36,7 @@ Signed-off-by: Kalle Valo pbuf = kzalloc(BRCMF_DCMD_MEDLEN, GFP_KERNEL); -@@ -5961,33 +5960,36 @@ static int brcmf_construct_chaninfo(stru +@@ -5963,33 +5962,36 @@ static int brcmf_construct_chaninfo(stru ch.bw == BRCMU_CHAN_BW_80) continue; @@ -85,7 +85,7 @@ Signed-off-by: Kalle Valo ch.bw = BRCMU_CHAN_BW_20; cfg->d11inf.encchspec(&ch); chaninfo = ch.chspec; -@@ -5995,11 +5997,11 @@ static int brcmf_construct_chaninfo(stru +@@ -5997,11 +5999,11 @@ static int brcmf_construct_chaninfo(stru &chaninfo); if (!err) { if (chaninfo & WL_CHAN_RADAR) diff --git a/package/kernel/mac80211/patches/360-0003-brcmfmac-setup-wiphy-bands-after-registering-it-firs.patch b/package/kernel/mac80211/patches/360-0003-brcmfmac-setup-wiphy-bands-after-registering-it-firs.patch index d7aa7e95589..9c773bd16ff 100644 --- a/package/kernel/mac80211/patches/360-0003-brcmfmac-setup-wiphy-bands-after-registering-it-firs.patch +++ b/package/kernel/mac80211/patches/360-0003-brcmfmac-setup-wiphy-bands-after-registering-it-firs.patch @@ -25,7 +25,7 @@ Signed-off-by: Kalle Valo --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -6564,8 +6564,7 @@ static int brcmf_setup_wiphy(struct wiph +@@ -6566,8 +6566,7 @@ static int brcmf_setup_wiphy(struct wiph wiphy->bands[NL80211_BAND_5GHZ] = band; } } @@ -35,7 +35,7 @@ Signed-off-by: Kalle Valo } static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg) -@@ -6930,6 +6929,12 @@ struct brcmf_cfg80211_info *brcmf_cfg802 +@@ -6932,6 +6931,12 @@ struct brcmf_cfg80211_info *brcmf_cfg802 goto priv_out; } diff --git a/package/kernel/mac80211/patches/841-brcmfmac-use-wiphy_read_of_freq_limits.patch b/package/kernel/mac80211/patches/841-brcmfmac-use-wiphy_read_of_freq_limits.patch index af6e1be3115..9f26a496401 100644 --- a/package/kernel/mac80211/patches/841-brcmfmac-use-wiphy_read_of_freq_limits.patch +++ b/package/kernel/mac80211/patches/841-brcmfmac-use-wiphy_read_of_freq_limits.patch @@ -9,7 +9,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -5974,6 +5974,9 @@ static int brcmf_construct_chaninfo(stru +@@ -5976,6 +5976,9 @@ static int brcmf_construct_chaninfo(stru continue; } @@ -19,7 +19,7 @@ Signed-off-by: Rafał Miłecki /* assuming the chanspecs order is HT20, * HT40 upper, HT40 lower, and VHT80. */ -@@ -6564,6 +6567,9 @@ static int brcmf_setup_wiphy(struct wiph +@@ -6566,6 +6569,9 @@ static int brcmf_setup_wiphy(struct wiph wiphy->bands[NL80211_BAND_5GHZ] = band; } } diff --git a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch index f7f44f513f5..d423cf5b56b 100644 --- a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch +++ b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -1200,6 +1200,7 @@ int __init brcmf_core_init(void) +@@ -1206,6 +1206,7 @@ int __init brcmf_core_init(void) { if (!schedule_work(&brcmf_driver_work)) return -EBUSY; -- 2.30.2