[rdkb][common][bsp][Refactor and sync wifi from openwrt]

[Description]
3a2eef0b [MAC80211][Release][Update release note for Filogic 880/860 MLO Beta release]
cfbd2411 [MAC80211][Release][Filogic 880/860 MLO Beta release]
6c180e3f [MAC80211][WiFi7][misc][Add Eagle BE14000 efem default bin]
a55f34db [MAC80211][Release][Prepare for Filogic 880/860 release]
5b45ebca [MAC80211][WiFi7][hostapd][Add puncture bitmap to ucode]
95bbea73 [MAC80211][WiFi6][mt76][Add PID to only report data-frame TX rate]
b15ced26 [MAC80211][WiFi6][hostapd][Fix DFS channel selection issue]
d59133cb [MAC80211][WiFi6][mt76][Fix pse info not correct information]
3921b4b2 [MAC80211][WiFi6][mt76][Fix incomplete QoS-map setting to FW]
4e7690c7 [MAC80211][WiFi6/7][app][Change ATECHANNEL mapping cmd]
eb37af90 [MAC80211][WiFi7][app][Add support for per-packet bw & primary selection]
0ea82adf [MAC80211][WiFi6][core][Fix DFS CAC issue after CSA]

[Release-log]

Change-Id: I9bec97ec1b2e1c49ed43a812a07a5b21fcbb70a6
diff --git a/recipes-wifi/linux-mt76/files/patches-3.x/0155-mtk-mt76-mt7996-add-per-link-RX-MPDU-statistics.patch b/recipes-wifi/linux-mt76/files/patches-3.x/0155-mtk-mt76-mt7996-add-per-link-RX-MPDU-statistics.patch
new file mode 100644
index 0000000..e35f69e
--- /dev/null
+++ b/recipes-wifi/linux-mt76/files/patches-3.x/0155-mtk-mt76-mt7996-add-per-link-RX-MPDU-statistics.patch
@@ -0,0 +1,96 @@
+From c7dcf0304c6cd1d73b1caf2ce0b35f7913d2b69e Mon Sep 17 00:00:00 2001
+From: Benjamin Lin <benjamin-jw.lin@mediatek.com>
+Date: Tue, 23 Jul 2024 16:37:57 +0800
+Subject: [PATCH 155/199] mtk: mt76: mt7996: add per-link RX MPDU statistics
+
+Add per-link RX MPDU total/failed counts.
+
+Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
+---
+ mt76.h            |  2 ++
+ mt76_connac_mcu.h |  2 ++
+ mt7996/mac.c      |  1 +
+ mt7996/mcu.c      | 10 ++++++++++
+ mt7996/mcu.h      |  7 +++++++
+ 5 files changed, 22 insertions(+)
+
+diff --git a/mt76.h b/mt76.h
+index a0fc8b1a..f67f0658 100644
+--- a/mt76.h
++++ b/mt76.h
+@@ -336,6 +336,8 @@ struct mt76_sta_stats {
+ 	/* WED RX */
+ 	u64 rx_bytes;
+ 	u32 rx_packets;
++	u32 rx_mpdus;
++	u32 rx_fcs_err;
+ 	u32 rx_errors;
+ 	u32 rx_drops;
+ 	u64 rx_airtime;
+diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h
+index 0244b5aa..8de91f62 100644
+--- a/mt76_connac_mcu.h
++++ b/mt76_connac_mcu.h
+@@ -1421,6 +1421,8 @@ enum UNI_ALL_STA_INFO_TAG {
+ 	UNI_ALL_STA_DATA_TX_RETRY_COUNT,
+ 	UNI_ALL_STA_GI_MODE,
+ 	UNI_ALL_STA_TXRX_MSDU_COUNT,
++	UNI_ALL_STA_TXOP_ACCESS_DELAY,
++	UNI_ALL_STA_RX_MPDU_COUNT,
+ 	UNI_ALL_STA_MAX_NUM
+ };
+ 
+diff --git a/mt7996/mac.c b/mt7996/mac.c
+index 484b679b..a0406700 100644
+--- a/mt7996/mac.c
++++ b/mt7996/mac.c
+@@ -2408,6 +2408,7 @@ void mt7996_mac_work(struct work_struct *work)
+ 					mt7996_mcu_get_all_sta_info(mdev, UNI_ALL_STA_TXRX_ADM_STAT);
+ 					mt7996_mcu_get_all_sta_info(mdev, UNI_ALL_STA_TXRX_MSDU_COUNT);
+ 				// }
++				mt7996_mcu_get_all_sta_info(mdev, UNI_ALL_STA_RX_MPDU_COUNT);
+ 
+ 				if (mt7996_mcu_wa_cmd(phy->dev, MCU_WA_PARAM_CMD(QUERY), MCU_WA_PARAM_BSS_ACQ_PKT_CNT,
+ 				                      BSS_ACQ_PKT_CNT_BSS_BITMAP_ALL | BSS_ACQ_PKT_CNT_READ_CLR, 0))
+diff --git a/mt7996/mcu.c b/mt7996/mcu.c
+index 8fd9d450..be6b985f 100644
+--- a/mt7996/mcu.c
++++ b/mt7996/mcu.c
+@@ -803,6 +803,16 @@ mt7996_mcu_rx_all_sta_info_event(struct mt7996_dev *dev, struct sk_buff *skb)
+ 				                               tx_airtime, rx_airtime);
+ 			}
+ 			break;
++		case UNI_ALL_STA_RX_MPDU_COUNT:
++			wlan_idx = le16_to_cpu(res->rx_mpdu_cnt[i].wlan_idx);
++			wcid = rcu_dereference(dev->mt76.wcid[wlan_idx]);
++			if (!wcid)
++				break;
++
++			wcid->stats.rx_mpdus += le32_to_cpu(res->rx_mpdu_cnt[i].total);
++			wcid->stats.rx_fcs_err += le32_to_cpu(res->rx_mpdu_cnt[i].total) -
++						  le32_to_cpu(res->rx_mpdu_cnt[i].success);
++			break;
+ 		default:
+ 			break;
+ 		}
+diff --git a/mt7996/mcu.h b/mt7996/mcu.h
+index 389aab63..737f426d 100644
+--- a/mt7996/mcu.h
++++ b/mt7996/mcu.h
+@@ -268,6 +268,13 @@ struct mt7996_mcu_all_sta_info_event {
+ 			__le32 tx[IEEE80211_NUM_ACS];
+ 			__le32 rx[IEEE80211_NUM_ACS];
+ 		} __packed, airtime);
++
++		DECLARE_FLEX_ARRAY(struct {
++			__le16 wlan_idx;
++			u8 rsv[2];
++			__le32 total;
++			__le32 success;
++		} __packed, rx_mpdu_cnt);
+ 	} __packed;
+ } __packed;
+ 
+-- 
+2.18.0
+