Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
807abaaa76
@ -0,0 +1,134 @@
|
||||
From: Avraham Stern <avraham.stern@intel.com>
|
||||
Date: Sun, 6 Dec 2020 14:54:45 +0200
|
||||
Subject: [PATCH] mac80211: support Rx timestamp calculation for all preamble
|
||||
types
|
||||
|
||||
Add support for calculating the Rx timestamp for HE frames.
|
||||
Since now all frame types are supported, allow setting the Rx
|
||||
timestamp regardless of the frame type.
|
||||
|
||||
Signed-off-by: Avraham Stern <avraham.stern@intel.com>
|
||||
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||
Link: https://lore.kernel.org/r/iwlwifi.20201206145305.4786559af475.Ia54486bb0a12e5351f9d5c60ef6fcda7c9e7141c@changeid
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1600,13 +1600,8 @@ ieee80211_have_rx_timestamp(struct ieee8
|
||||
{
|
||||
WARN_ON_ONCE(status->flag & RX_FLAG_MACTIME_START &&
|
||||
status->flag & RX_FLAG_MACTIME_END);
|
||||
- if (status->flag & (RX_FLAG_MACTIME_START | RX_FLAG_MACTIME_END))
|
||||
- return true;
|
||||
- /* can't handle non-legacy preamble yet */
|
||||
- if (status->flag & RX_FLAG_MACTIME_PLCP_START &&
|
||||
- status->encoding == RX_ENC_LEGACY)
|
||||
- return true;
|
||||
- return false;
|
||||
+ return !!(status->flag & (RX_FLAG_MACTIME_START | RX_FLAG_MACTIME_END |
|
||||
+ RX_FLAG_MACTIME_PLCP_START));
|
||||
}
|
||||
|
||||
void ieee80211_vif_inc_num_mcast(struct ieee80211_sub_if_data *sdata);
|
||||
--- a/net/mac80211/util.c
|
||||
+++ b/net/mac80211/util.c
|
||||
@@ -3665,6 +3665,7 @@ u64 ieee80211_calculate_rx_timestamp(str
|
||||
u64 ts = status->mactime;
|
||||
struct rate_info ri;
|
||||
u16 rate;
|
||||
+ u8 n_ltf;
|
||||
|
||||
if (WARN_ON(!ieee80211_have_rx_timestamp(status)))
|
||||
return 0;
|
||||
@@ -3675,11 +3676,58 @@ u64 ieee80211_calculate_rx_timestamp(str
|
||||
|
||||
/* Fill cfg80211 rate info */
|
||||
switch (status->encoding) {
|
||||
+ case RX_ENC_HE:
|
||||
+ ri.flags |= RATE_INFO_FLAGS_HE_MCS;
|
||||
+ ri.mcs = status->rate_idx;
|
||||
+ ri.nss = status->nss;
|
||||
+ ri.he_ru_alloc = status->he_ru;
|
||||
+ if (status->enc_flags & RX_ENC_FLAG_SHORT_GI)
|
||||
+ ri.flags |= RATE_INFO_FLAGS_SHORT_GI;
|
||||
+
|
||||
+ /*
|
||||
+ * See P802.11ax_D6.0, section 27.3.4 for
|
||||
+ * VHT PPDU format.
|
||||
+ */
|
||||
+ if (status->flag & RX_FLAG_MACTIME_PLCP_START) {
|
||||
+ mpdu_offset += 2;
|
||||
+ ts += 36;
|
||||
+
|
||||
+ /*
|
||||
+ * TODO:
|
||||
+ * For HE MU PPDU, add the HE-SIG-B.
|
||||
+ * For HE ER PPDU, add 8us for the HE-SIG-A.
|
||||
+ * For HE TB PPDU, add 4us for the HE-STF.
|
||||
+ * Add the HE-LTF durations - variable.
|
||||
+ */
|
||||
+ }
|
||||
+
|
||||
+ break;
|
||||
case RX_ENC_HT:
|
||||
ri.mcs = status->rate_idx;
|
||||
ri.flags |= RATE_INFO_FLAGS_MCS;
|
||||
if (status->enc_flags & RX_ENC_FLAG_SHORT_GI)
|
||||
ri.flags |= RATE_INFO_FLAGS_SHORT_GI;
|
||||
+
|
||||
+ /*
|
||||
+ * See P802.11REVmd_D3.0, section 19.3.2 for
|
||||
+ * HT PPDU format.
|
||||
+ */
|
||||
+ if (status->flag & RX_FLAG_MACTIME_PLCP_START) {
|
||||
+ mpdu_offset += 2;
|
||||
+ if (status->enc_flags & RX_ENC_FLAG_HT_GF)
|
||||
+ ts += 24;
|
||||
+ else
|
||||
+ ts += 32;
|
||||
+
|
||||
+ /*
|
||||
+ * Add Data HT-LTFs per streams
|
||||
+ * TODO: add Extension HT-LTFs, 4us per LTF
|
||||
+ */
|
||||
+ n_ltf = ((ri.mcs >> 3) & 3) + 1;
|
||||
+ n_ltf = n_ltf == 3 ? 4 : n_ltf;
|
||||
+ ts += n_ltf * 4;
|
||||
+ }
|
||||
+
|
||||
break;
|
||||
case RX_ENC_VHT:
|
||||
ri.flags |= RATE_INFO_FLAGS_VHT_MCS;
|
||||
@@ -3687,6 +3735,23 @@ u64 ieee80211_calculate_rx_timestamp(str
|
||||
ri.nss = status->nss;
|
||||
if (status->enc_flags & RX_ENC_FLAG_SHORT_GI)
|
||||
ri.flags |= RATE_INFO_FLAGS_SHORT_GI;
|
||||
+
|
||||
+ /*
|
||||
+ * See P802.11REVmd_D3.0, section 21.3.2 for
|
||||
+ * VHT PPDU format.
|
||||
+ */
|
||||
+ if (status->flag & RX_FLAG_MACTIME_PLCP_START) {
|
||||
+ mpdu_offset += 2;
|
||||
+ ts += 36;
|
||||
+
|
||||
+ /*
|
||||
+ * Add VHT-LTFs per streams
|
||||
+ */
|
||||
+ n_ltf = (ri.nss != 1) && (ri.nss % 2) ?
|
||||
+ ri.nss + 1 : ri.nss;
|
||||
+ ts += 4 * n_ltf;
|
||||
+ }
|
||||
+
|
||||
break;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
@@ -3710,7 +3775,6 @@ u64 ieee80211_calculate_rx_timestamp(str
|
||||
ri.legacy = DIV_ROUND_UP(bitrate, (1 << shift));
|
||||
|
||||
if (status->flag & RX_FLAG_MACTIME_PLCP_START) {
|
||||
- /* TODO: handle HT/VHT preambles */
|
||||
if (status->band == NL80211_BAND_5GHZ) {
|
||||
ts += 20 << shift;
|
||||
mpdu_offset += 2;
|
||||
@ -0,0 +1,31 @@
|
||||
From: Ben Greear <greearb@candelatech.com>
|
||||
Date: Tue, 30 Mar 2021 16:07:49 -0700
|
||||
Subject: [PATCH] mac80211: fix time-is-after bug in mlme
|
||||
|
||||
The incorrect timeout check caused probing to happen when it did
|
||||
not need to happen. This in turn caused tx performance drop
|
||||
for around 5 seconds in ath10k-ct driver. Possibly that tx drop
|
||||
is due to a secondary issue, but fixing the probe to not happen
|
||||
when traffic is running fixes the symptom.
|
||||
|
||||
Signed-off-by: Ben Greear <greearb@candelatech.com>
|
||||
Fixes: 9abf4e49830d ("mac80211: optimize station connection monitor")
|
||||
Acked-by: Felix Fietkau <nbd@nbd.name>
|
||||
Link: https://lore.kernel.org/r/20210330230749.14097-1-greearb@candelatech.com
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -4691,7 +4691,10 @@ static void ieee80211_sta_conn_mon_timer
|
||||
timeout = sta->rx_stats.last_rx;
|
||||
timeout += IEEE80211_CONNECTION_IDLE_TIME;
|
||||
|
||||
- if (time_is_before_jiffies(timeout)) {
|
||||
+ /* If timeout is after now, then update timer to fire at
|
||||
+ * the later date, but do not actually probe at this time.
|
||||
+ */
|
||||
+ if (time_is_after_jiffies(timeout)) {
|
||||
mod_timer(&ifmgd->conn_mon_timer, round_jiffies_up(timeout));
|
||||
return;
|
||||
}
|
||||
@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2021-02-14
|
||||
PKG_SOURCE_VERSION:=289cd7804587dc48f776d450db9cd3762692a370
|
||||
PKG_MIRROR_HASH:=91885feca9d935586c6e33a8e3734bfa61991d869bf42ac0d1c8c3b19bfa9653
|
||||
PKG_SOURCE_DATE:=2021-04-11
|
||||
PKG_SOURCE_VERSION:=bf45b30d891961dd7c4139dddb58b909ea2c2b5a
|
||||
PKG_MIRROR_HASH:=431cecf80dafa986e805f809522721c2bb26289867d6770695d49baf8b471bea
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
@ -407,6 +407,14 @@ define KernelPackage/mt7915e/install
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921e/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_MT7961_patch_mcu_1_2_hdr.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_RAM_CODE_MT7961_1.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define Package/mt76-test/install
|
||||
mkdir -p $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin
|
||||
|
||||
@ -47,3 +47,11 @@
|
||||
&usb_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user