diff options
Diffstat (limited to 'package/kernel/mac80211/patches/subsys')
11 files changed, 77 insertions, 102 deletions
diff --git a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch index 4630274cb4..6775884a34 100644 --- a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch +++ b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch @@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -1063,7 +1063,6 @@ static int ieee80211_stop_ap(struct wiph +@@ -1067,7 +1067,6 @@ static int ieee80211_stop_ap(struct wiph sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF; __sta_info_flush(sdata, true); diff --git a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch index 174096f5ea..fcc173da69 100644 --- a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch +++ b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2229,7 +2229,7 @@ static int ieee80211_scan(struct wiphy * +@@ -2237,7 +2237,7 @@ static int ieee80211_scan(struct wiphy * * the frames sent while scanning on other channel will be * lost) */ diff --git a/package/kernel/mac80211/patches/subsys/302-mac80211-allocate-tailroom-for-forwarded-mesh-packet.patch b/package/kernel/mac80211/patches/subsys/302-mac80211-allocate-tailroom-for-forwarded-mesh-packet.patch deleted file mode 100644 index 6db41daf45..0000000000 --- a/package/kernel/mac80211/patches/subsys/302-mac80211-allocate-tailroom-for-forwarded-mesh-packet.patch +++ /dev/null @@ -1,37 +0,0 @@ -From: Felix Fietkau <nbd@nbd.name> -Date: Fri, 22 Feb 2019 13:21:15 +0100 -Subject: [PATCH] mac80211: allocate tailroom for forwarded mesh packets - -Forwarded packets enter the tx path through ieee80211_add_pending_skb, -which skips the ieee80211_skb_resize call. -Fixes WARN_ON in ccmp_encrypt_skb and resulting packet loss. - -Cc: stable@vger.kernel.org -Signed-off-by: Felix Fietkau <nbd@nbd.name> -Signed-off-by: Johannes Berg <johannes.berg@intel.com> ---- - ---- a/net/mac80211/rx.c -+++ b/net/mac80211/rx.c -@@ -2598,6 +2598,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 - struct ieee80211_sub_if_data *sdata = rx->sdata; - struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; - u16 ac, q, hdrlen; -+ int tailroom = 0; - - hdr = (struct ieee80211_hdr *) skb->data; - hdrlen = ieee80211_hdrlen(hdr->frame_control); -@@ -2684,8 +2685,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 - if (!ifmsh->mshcfg.dot11MeshForwarding) - goto out; - -+ if (sdata->crypto_tx_tailroom_needed_cnt) -+ tailroom = IEEE80211_ENCRYPT_TAILROOM; -+ - fwd_skb = skb_copy_expand(skb, local->tx_headroom + -- sdata->encrypt_headroom, 0, GFP_ATOMIC); -+ sdata->encrypt_headroom, -+ tailroom, GFP_ATOMIC); - if (!fwd_skb) - goto out; - diff --git a/package/kernel/mac80211/patches/subsys/306-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch b/package/kernel/mac80211/patches/subsys/306-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch index fa51f1be7e..02a0ca0a52 100644 --- a/package/kernel/mac80211/patches/subsys/306-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch +++ b/package/kernel/mac80211/patches/subsys/306-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch @@ -136,72 +136,82 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> - MCS_GROUP(1, 0, BW_20), - MCS_GROUP(2, 0, BW_20), - MCS_GROUP(3, 0, BW_20), -+ MCS_GROUP(1, 0, BW_20, 5), -+ MCS_GROUP(2, 0, BW_20, 4), -+ MCS_GROUP(3, 0, BW_20, 4), - +- - MCS_GROUP(1, 1, BW_20), - MCS_GROUP(2, 1, BW_20), - MCS_GROUP(3, 1, BW_20), -+ MCS_GROUP(1, 1, BW_20, 5), -+ MCS_GROUP(2, 1, BW_20, 4), -+ MCS_GROUP(3, 1, BW_20, 4), - +- - MCS_GROUP(1, 0, BW_40), - MCS_GROUP(2, 0, BW_40), - MCS_GROUP(3, 0, BW_40), -+ MCS_GROUP(1, 0, BW_40, 4), -+ MCS_GROUP(2, 0, BW_40, 4), -+ MCS_GROUP(3, 0, BW_40, 4), - +- - MCS_GROUP(1, 1, BW_40), - MCS_GROUP(2, 1, BW_40), - MCS_GROUP(3, 1, BW_40), -+ MCS_GROUP(1, 1, BW_40, 4), -+ MCS_GROUP(2, 1, BW_40, 4), -+ MCS_GROUP(3, 1, BW_40, 4), - +- - CCK_GROUP, -+ CCK_GROUP(8), - +- - VHT_GROUP(1, 0, BW_20), - VHT_GROUP(2, 0, BW_20), - VHT_GROUP(3, 0, BW_20), -+ VHT_GROUP(1, 0, BW_20, 5), -+ VHT_GROUP(2, 0, BW_20, 4), -+ VHT_GROUP(3, 0, BW_20, 4), - +- - VHT_GROUP(1, 1, BW_20), - VHT_GROUP(2, 1, BW_20), - VHT_GROUP(3, 1, BW_20), -+ VHT_GROUP(1, 1, BW_20, 5), -+ VHT_GROUP(2, 1, BW_20, 4), -+ VHT_GROUP(3, 1, BW_20, 4), - +- - VHT_GROUP(1, 0, BW_40), - VHT_GROUP(2, 0, BW_40), - VHT_GROUP(3, 0, BW_40), -+ VHT_GROUP(1, 0, BW_40, 4), -+ VHT_GROUP(2, 0, BW_40, 4), -+ VHT_GROUP(3, 0, BW_40, 4), - +- - VHT_GROUP(1, 1, BW_40), - VHT_GROUP(2, 1, BW_40), - VHT_GROUP(3, 1, BW_40), -+ VHT_GROUP(1, 1, BW_40, 4), -+ VHT_GROUP(2, 1, BW_40, 4), -+ VHT_GROUP(3, 1, BW_40, 4), - +- - VHT_GROUP(1, 0, BW_80), - VHT_GROUP(2, 0, BW_80), - VHT_GROUP(3, 0, BW_80), -+ VHT_GROUP(1, 0, BW_80, 4), -+ VHT_GROUP(2, 0, BW_80, 4), -+ VHT_GROUP(3, 0, BW_80, 4), - +- - VHT_GROUP(1, 1, BW_80), - VHT_GROUP(2, 1, BW_80), - VHT_GROUP(3, 1, BW_80), ++ MCS_GROUP(1, 0, BW_20, 5), ++ MCS_GROUP(2, 0, BW_20, 4), ++ MCS_GROUP(3, 0, BW_20, 4), ++ ++ MCS_GROUP(1, 1, BW_20, 5), ++ MCS_GROUP(2, 1, BW_20, 4), ++ MCS_GROUP(3, 1, BW_20, 4), ++ ++ MCS_GROUP(1, 0, BW_40, 4), ++ MCS_GROUP(2, 0, BW_40, 4), ++ MCS_GROUP(3, 0, BW_40, 4), ++ ++ MCS_GROUP(1, 1, BW_40, 4), ++ MCS_GROUP(2, 1, BW_40, 4), ++ MCS_GROUP(3, 1, BW_40, 4), ++ ++ CCK_GROUP(8), ++ ++ VHT_GROUP(1, 0, BW_20, 5), ++ VHT_GROUP(2, 0, BW_20, 4), ++ VHT_GROUP(3, 0, BW_20, 4), ++ ++ VHT_GROUP(1, 1, BW_20, 5), ++ VHT_GROUP(2, 1, BW_20, 4), ++ VHT_GROUP(3, 1, BW_20, 4), ++ ++ VHT_GROUP(1, 0, BW_40, 4), ++ VHT_GROUP(2, 0, BW_40, 4), ++ VHT_GROUP(3, 0, BW_40, 4), ++ ++ VHT_GROUP(1, 1, BW_40, 4), ++ VHT_GROUP(2, 1, BW_40, 4), ++ VHT_GROUP(3, 1, BW_40, 4), ++ ++ VHT_GROUP(1, 0, BW_80, 4), ++ VHT_GROUP(2, 0, BW_80, 4), ++ VHT_GROUP(3, 0, BW_80, 4), ++ + VHT_GROUP(1, 1, BW_80, 4), + VHT_GROUP(2, 1, BW_80, 4), + VHT_GROUP(3, 1, BW_80, 4), diff --git a/package/kernel/mac80211/patches/subsys/322-mac80211-Add-airtime-accounting-and-scheduling-to-TX.patch b/package/kernel/mac80211/patches/subsys/322-mac80211-Add-airtime-accounting-and-scheduling-to-TX.patch index b005060614..d4176eb491 100644 --- a/package/kernel/mac80211/patches/subsys/322-mac80211-Add-airtime-accounting-and-scheduling-to-TX.patch +++ b/package/kernel/mac80211/patches/subsys/322-mac80211-Add-airtime-accounting-and-scheduling-to-TX.patch @@ -125,7 +125,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com> * The values are not guaranteed to be coherent with regard to each other, i.e. --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -1430,6 +1430,9 @@ static int sta_apply_parameters(struct i +@@ -1434,6 +1434,9 @@ static int sta_apply_parameters(struct i if (ieee80211_vif_is_mesh(&sdata->vif)) sta_apply_mesh_params(local, sta, params); @@ -422,8 +422,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com> schedule_order); + if (!txqi) + return NULL; - -- if (!txqi || txqi->schedule_round == local->schedule_round[ac]) ++ + if (txqi->txq.sta) { + struct sta_info *sta = container_of(txqi->txq.sta, + struct sta_info, sta); @@ -437,7 +436,8 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com> + } + } + -+ + +- if (!txqi || txqi->schedule_round == local->schedule_round[ac]) + if (txqi->schedule_round == local->schedule_round[ac]) return NULL; diff --git a/package/kernel/mac80211/patches/subsys/351-mac80211-add-TX_NEEDS_ALIGNED4_SKBS-hw-flag.patch b/package/kernel/mac80211/patches/subsys/351-mac80211-add-TX_NEEDS_ALIGNED4_SKBS-hw-flag.patch index b45675b559..d8dbecca1b 100644 --- a/package/kernel/mac80211/patches/subsys/351-mac80211-add-TX_NEEDS_ALIGNED4_SKBS-hw-flag.patch +++ b/package/kernel/mac80211/patches/subsys/351-mac80211-add-TX_NEEDS_ALIGNED4_SKBS-hw-flag.patch @@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> ret = dev_alloc_name(ndev, ndev->name); --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c -@@ -103,13 +103,15 @@ void mesh_path_assign_nexthop(struct mes +@@ -105,13 +105,15 @@ void mesh_path_assign_nexthop(struct mes static void prepare_for_gate(struct sk_buff *skb, char *dst_addr, struct mesh_path *gate_mpath) { @@ -122,7 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> int tailroom = 0; hdr = (struct ieee80211_hdr *) skb->data; -@@ -2688,7 +2688,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 +@@ -2690,7 +2690,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 if (sdata->crypto_tx_tailroom_needed_cnt) tailroom = IEEE80211_ENCRYPT_TAILROOM; @@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> sdata->encrypt_headroom, tailroom, GFP_ATOMIC); if (!fwd_skb) -@@ -2720,6 +2722,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 +@@ -2722,6 +2724,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 return RX_DROP_MONITOR; } diff --git a/package/kernel/mac80211/patches/subsys/353-mac80211-mesh-drop-redundant-rcu_read_lock-unlock-ca.patch b/package/kernel/mac80211/patches/subsys/353-mac80211-mesh-drop-redundant-rcu_read_lock-unlock-ca.patch index ae5be18170..86300be4ed 100644 --- a/package/kernel/mac80211/patches/subsys/353-mac80211-mesh-drop-redundant-rcu_read_lock-unlock-ca.patch +++ b/package/kernel/mac80211/patches/subsys/353-mac80211-mesh-drop-redundant-rcu_read_lock-unlock-ca.patch @@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> void mesh_path_timer(struct timer_list *t) --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c -@@ -217,7 +217,7 @@ static struct mesh_path *mpath_lookup(st +@@ -219,7 +219,7 @@ static struct mesh_path *mpath_lookup(st { struct mesh_path *mpath; diff --git a/package/kernel/mac80211/patches/subsys/357-mac80211-optimize-skb-resizing.patch b/package/kernel/mac80211/patches/subsys/357-mac80211-optimize-skb-resizing.patch index 8fd85fedcc..98b2342265 100644 --- a/package/kernel/mac80211/patches/subsys/357-mac80211-optimize-skb-resizing.patch +++ b/package/kernel/mac80211/patches/subsys/357-mac80211-optimize-skb-resizing.patch @@ -65,14 +65,20 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> struct ieee80211_hdr *hdr; - bool enc_tailroom; - int tail_need = 0; -+ int head_need, head_max; -+ int tail_need, tail_max; -+ bool enc_tailroom = false; - +- - hdr = (struct ieee80211_hdr *) skb->data; - enc_tailroom = may_encrypt && - (sdata->crypto_tx_tailroom_needed_cnt || - ieee80211_is_mgmt(hdr->frame_control)); +- +- if (enc_tailroom) { +- tail_need = IEEE80211_ENCRYPT_TAILROOM; +- tail_need -= skb_tailroom(skb); +- tail_need = max_t(int, tail_need, 0); ++ int head_need, head_max; ++ int tail_need, tail_max; ++ bool enc_tailroom = false; ++ + if (sdata && !hdr_len && + !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT)) { + hdr = (struct ieee80211_hdr *) skb->data; @@ -80,11 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> + ieee80211_is_mgmt(hdr->frame_control)); + hdr_len += sdata->encrypt_headroom; + } - -- if (enc_tailroom) { -- tail_need = IEEE80211_ENCRYPT_TAILROOM; -- tail_need -= skb_tailroom(skb); -- tail_need = max_t(int, tail_need, 0); ++ + head_need = head_max = hdr_len; + tail_need = tail_max = 0; + if (!sdata) { @@ -127,13 +129,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> - bool may_encrypt; - - may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT); -- + - headroom = local->tx_headroom; - if (may_encrypt) - headroom += sdata->encrypt_headroom; - headroom -= skb_headroom(skb); - headroom = max_t(int, 0, headroom); - +- - if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) { + if (ieee80211_skb_resize(sdata, skb, 0, 0)) { ieee80211_free_txskb(&local->hw, skb); diff --git a/package/kernel/mac80211/patches/subsys/360-mac80211-when-using-iTXQ-select-the-queue-in-ieee802.patch b/package/kernel/mac80211/patches/subsys/360-mac80211-when-using-iTXQ-select-the-queue-in-ieee802.patch index 03d115071e..bb3af7317a 100644 --- a/package/kernel/mac80211/patches/subsys/360-mac80211-when-using-iTXQ-select-the-queue-in-ieee802.patch +++ b/package/kernel/mac80211/patches/subsys/360-mac80211-when-using-iTXQ-select-the-queue-in-ieee802.patch @@ -151,7 +151,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> - ret = IEEE80211_AC_BE; - goto out; - } -- ++ ret = __ieee80211_select_queue(sdata, sta, skb); + - if (skb->protocol == sdata->control_port_protocol) { - skb->priority = 7; - goto downgrade; @@ -162,8 +163,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> - qos_map = rcu_dereference(sdata->qos_map); - skb->priority = cfg80211_classify8021d(skb, qos_map ? - &qos_map->qos_map : NULL); -+ ret = __ieee80211_select_queue(sdata, sta, skb); - +- - downgrade: - ret = ieee80211_downgrade_queue(sdata, sta, skb); - out: diff --git a/package/kernel/mac80211/patches/subsys/390-nl-mac-80211-allow-4addr-AP-operation-on-crypto-cont.patch b/package/kernel/mac80211/patches/subsys/390-nl-mac-80211-allow-4addr-AP-operation-on-crypto-cont.patch index 4c5b403dc4..2940615354 100644 --- a/package/kernel/mac80211/patches/subsys/390-nl-mac-80211-allow-4addr-AP-operation-on-crypto-cont.patch +++ b/package/kernel/mac80211/patches/subsys/390-nl-mac-80211-allow-4addr-AP-operation-on-crypto-cont.patch @@ -50,7 +50,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org> * control port protocol ethertype. The device also honours the --- a/net/mac80211/util.c +++ b/net/mac80211/util.c -@@ -3622,7 +3622,9 @@ int ieee80211_check_combinations(struct +@@ -3626,7 +3626,9 @@ int ieee80211_check_combinations(struct } /* Always allow software iftypes */ diff --git a/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch b/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch index 56c6c8a79e..4dcd7b5fcc 100644 --- a/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch +++ b/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch @@ -57,7 +57,7 @@ __NL80211_ATTR_AFTER_LAST, --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2497,6 +2497,19 @@ static int ieee80211_get_tx_power(struct +@@ -2505,6 +2505,19 @@ static int ieee80211_get_tx_power(struct return 0; } @@ -77,7 +77,7 @@ static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev, const u8 *addr) { -@@ -3864,6 +3877,7 @@ const struct cfg80211_ops mac80211_confi +@@ -3872,6 +3885,7 @@ const struct cfg80211_ops mac80211_confi .set_wiphy_params = ieee80211_set_wiphy_params, .set_tx_power = ieee80211_set_tx_power, .get_tx_power = ieee80211_get_tx_power, |