X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=package%2Fmac80211%2Fpatches%2F550-mac80211_optimize_mcs_rate_mask.patch;h=a966fef16e6ecf8f1db4ac6a29564cbb7d8a74dc;hb=de017af48d93a4c8bd0691f5cb9315e2f5f15cf1;hp=ea066a843c9c5b8b3cffeb26ff2685e7d3c0dc78;hpb=9f3403679d823f3b7d4eb2e2918db58b1a0b8fff;p=openwrt.git diff --git a/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch b/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch index ea066a843c..a966fef16e 100644 --- a/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch +++ b/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -702,6 +702,8 @@ struct ieee80211_sub_if_data { +@@ -715,6 +715,8 @@ struct ieee80211_sub_if_data { /* bitmap of allowed (non-MCS) rate indexes for rate control */ u32 rc_rateidx_mask[IEEE80211_NUM_BANDS]; @@ -11,7 +11,7 @@ union { --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2119,9 +2119,20 @@ static int ieee80211_set_bitrate_mask(st +@@ -2149,9 +2149,20 @@ static int ieee80211_set_bitrate_mask(st } for (i = 0; i < IEEE80211_NUM_BANDS; i++) { @@ -34,7 +34,7 @@ return 0; --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -3676,7 +3676,7 @@ void ieee80211_send_bar(struct ieee80211 +@@ -3718,7 +3718,7 @@ void ieee80211_send_bar(struct ieee80211 * (deprecated; this will be removed once drivers get updated to use * rate_idx_mask) * @rate_idx_mask: user-requested (legacy) rate mask @@ -43,7 +43,7 @@ * @bss: whether this frame is sent out in AP or IBSS mode */ struct ieee80211_tx_rate_control { -@@ -3688,7 +3688,7 @@ struct ieee80211_tx_rate_control { +@@ -3730,7 +3730,7 @@ struct ieee80211_tx_rate_control { bool rts, short_preamble; u8 max_rate_idx; u32 rate_idx_mask; @@ -54,22 +54,22 @@ --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -637,9 +637,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 +@@ -631,9 +631,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 txrc.max_rate_idx = -1; else txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; - memcpy(txrc.rate_idx_mcs_mask, -- tx->sdata->rc_rateidx_mcs_mask[tx->channel->band], +- tx->sdata->rc_rateidx_mcs_mask[info->band], - sizeof(txrc.rate_idx_mcs_mask)); + -+ if (tx->sdata->rc_has_mcs_mask[tx->channel->band]) ++ if (tx->sdata->rc_has_mcs_mask[info->band]) + txrc.rate_idx_mcs_mask = -+ tx->sdata->rc_rateidx_mcs_mask[tx->channel->band]; ++ tx->sdata->rc_rateidx_mcs_mask[info->band]; + txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP || tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT || tx->sdata->vif.type == NL80211_IFTYPE_ADHOC); -@@ -2475,8 +2477,6 @@ struct sk_buff *ieee80211_beacon_get_tim +@@ -2447,8 +2449,6 @@ struct sk_buff *ieee80211_beacon_get_tim txrc.max_rate_idx = -1; else txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;