From 9fb7187f22d323d3ce31f9095960154de45e7511 Mon Sep 17 00:00:00 2001 From: Rakesh Pillai Date: Fri, 26 Aug 2022 03:08:43 -0700 Subject: [PATCH 1/3] qcacmn: Add reo_mismatch stats for FISA path Add reo_mismatch stats for FISA path. Change-Id: I954c9604b98cfb0b08be09ef0bf3e2235f47a3db CRs-Fixed: 3277338 --- dp/wifi3.0/dp_internal.h | 12 ++++++++++++ dp/wifi3.0/dp_main.c | 1 + dp/wifi3.0/dp_types.h | 15 ++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index 77b1337baca5..61c290aea844 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/dp/wifi3.0/dp_internal.h @@ -2363,6 +2363,14 @@ void dp_is_hw_dbs_enable(struct dp_soc *soc, #if defined(WLAN_SUPPORT_RX_FISA) void dp_rx_dump_fisa_table(struct dp_soc *soc); +/** + * dp_print_fisa_stats() - Print FISA stats + * @soc: DP soc handle + * + * Return: None + */ +void dp_print_fisa_stats(struct dp_soc *soc); + /* * dp_rx_fst_update_cmem_params() - Update CMEM FST params * @soc: DP SoC context @@ -2388,6 +2396,10 @@ static inline void dp_rx_fst_update_pm_suspend_status(struct dp_soc *soc, bool suspended) { } + +static inline void dp_print_fisa_stats(struct dp_soc *soc) +{ +} #endif /* WLAN_SUPPORT_RX_FISA */ #ifdef MAX_ALLOC_PAGE_SIZE diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 7016cfacc9e6..c0806f998969 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -10101,6 +10101,7 @@ static QDF_STATUS dp_txrx_dump_stats(struct cdp_soc_t *psoc, uint16_t value, dp_txrx_path_stats(soc); dp_print_soc_interrupt_stats(soc); hal_dump_reg_write_stats(soc->hal_soc); + dp_print_fisa_stats(soc); break; case CDP_RX_RING_STATS: diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 25ba47531cd1..65057170c078 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -3134,10 +3134,23 @@ struct dp_rx_fst { #define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_rx_fse) #elif WLAN_SUPPORT_RX_FISA +/** + * struct dp_fisa_reo_mismatch_stats - reo mismatch sub-case stats for FISA + * @allow_cce_match: packet allowed due to cce mismatch + * @allow_fse_metdata_mismatch: packet allowed since it belongs to same flow, + * only fse_metadata is not same. + * @allow_non_aggr: packet allowed due to any other reason. + */ +struct dp_fisa_reo_mismatch_stats { + uint32_t allow_cce_match; + uint32_t allow_fse_metdata_mismatch; + uint32_t allow_non_aggr; +}; + struct dp_fisa_stats { /* flow index invalid from RX HW TLV */ uint32_t invalid_flow_index; - uint32_t reo_mismatch; + struct dp_fisa_reo_mismatch_stats reo_mismatch; uint32_t incorrect_rdi; }; From b2f42dc353e8e353054d7eea7486c053c98e5156 Mon Sep 17 00:00:00 2001 From: Paul Zhang Date: Wed, 31 Aug 2022 17:11:03 +0800 Subject: [PATCH 2/3] qcacmn: Replace ap reg rules with client reg rules Currently, there is no ap reg rules from the regdomain for some countries. But function reg_append_mas_chan_list_for_6g_lpi and reg_append_mas_chan_list_for_6g_vlp get the master chan per the ap reg rules number. It casues it can't get the master chan list for 6 GHz even it has client reg rules. To resolve this issue, using num_of_6g_client_reg_rules instead of num_of_6g_ap_reg_rules. Change-Id: If2dc6510edc61531cb1a3b8002e43a1bd69311e0 CRs-Fixed: 3278250 --- umac/regulatory/core/src/reg_build_chan_list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/umac/regulatory/core/src/reg_build_chan_list.c b/umac/regulatory/core/src/reg_build_chan_list.c index 40959dbe6df2..38e7556df477 100644 --- a/umac/regulatory/core/src/reg_build_chan_list.c +++ b/umac/regulatory/core/src/reg_build_chan_list.c @@ -1079,7 +1079,7 @@ reg_append_mas_chan_list_for_6g_lpi(struct wlan_regulatory_pdev_priv_obj struct regulatory_channel *master_chan_list_6g_client_lpi; uint8_t i, j; - if (!pdev_priv_obj->reg_rules.num_of_6g_ap_reg_rules[REG_INDOOR_AP]) { + if (!pdev_priv_obj->reg_rules.num_of_6g_client_reg_rules[REG_INDOOR_AP]) { reg_debug("No LPI reg rules"); return; } @@ -1117,7 +1117,7 @@ reg_append_mas_chan_list_for_6g_vlp(struct wlan_regulatory_pdev_priv_obj struct regulatory_channel *master_chan_list_6g_client_vlp; uint8_t i, j; - if (!pdev_priv_obj->reg_rules.num_of_6g_ap_reg_rules[REG_VERY_LOW_POWER_AP]) { + if (!pdev_priv_obj->reg_rules.num_of_6g_client_reg_rules[REG_VERY_LOW_POWER_AP]) { reg_debug("No VLP reg rules"); return; } From 7bd07f4759a54a939e364421824f7fa201b60329 Mon Sep 17 00:00:00 2001 From: Gururaj Pandurangi Date: Tue, 7 Sep 2021 23:09:58 +0530 Subject: [PATCH 3/3] qcacmn: Remove 6G domain check on Maschan list If a country does not support 6G, then the 6G channel list is not appended to the master channel list. Due to this, 6G center frequency in the master channel list is zero. This leads to the problem in the intersection of channels and chip range in the 5G Radio. When the target sends the WMI_REG_CHAN_LIST_CC_EXT_EVENT, do not set the is_6g_channel_list_populated flag based on the presence of a 6G subdomain code. The flag should be set to true whenever the event is received. Change-Id: Ice714c961512fc1d86f8553b9870ab7385bbe9d5 CRs-Fixed: 3007334 --- umac/regulatory/core/src/reg_build_chan_list.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/umac/regulatory/core/src/reg_build_chan_list.c b/umac/regulatory/core/src/reg_build_chan_list.c index 40959dbe6df2..f5e0be5d512c 100644 --- a/umac/regulatory/core/src/reg_build_chan_list.c +++ b/umac/regulatory/core/src/reg_build_chan_list.c @@ -1758,9 +1758,8 @@ static void reg_store_regulatory_ext_info_to_socpriv( soc_reg->domain_code_6g_ap[i] = regulat_info->domain_code_6g_ap[i]; - if (soc_reg->domain_code_6g_ap[i]) - soc_reg->mas_chan_params[phy_id]. - is_6g_channel_list_populated = true; + soc_reg->mas_chan_params[phy_id]. + is_6g_channel_list_populated = true; qdf_mem_copy(soc_reg->domain_code_6g_client[i], regulat_info->domain_code_6g_client[i],