diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index 63181a952c..010fe457aa 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -531,8 +531,8 @@ dp_rx_oor_handle(struct dp_soc *soc, uint16_t peer_id, uint8_t *rx_tlv_hdr) { - uint32_t frame_mask = FRAME_MASK_IPV4_ARP | FRAME_MASK_IPV4_DHCP | - FRAME_MASK_IPV4_EAPOL | FRAME_MASK_IPV6_DHCP; + uint32_t frame_mask = wlan_cfg_get_special_frame_cfg(soc->wlan_cfg_ctx); + struct dp_txrx_peer *txrx_peer = NULL; dp_txrx_ref_handle txrx_ref_handle = NULL; diff --git a/wlan_cfg/cfg_dp.h b/wlan_cfg/cfg_dp.h index 5da5c948ef..6d435f043a 100644 --- a/wlan_cfg/cfg_dp.h +++ b/wlan_cfg/cfg_dp.h @@ -1811,6 +1811,10 @@ #define WLAN_CFG_NUM_PPEDS_TX_DESC_MAX 0 #endif +#define WLAN_CFG_SPECIAL_MSK_MIN 0 +#define WLAN_CFG_SPECIAL_MSK_MAX 0xFFFFFFFF +#define WLAN_CFG_SPECIAL_MSK 0xF + #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) /* * @@ -1925,6 +1929,27 @@ #define CFG_TX_PKT_INSPECT_FOR_ILP_CFG #endif +/* + * + * special_frame_msk - frame mask to mark special frame type + * @Min: 0 + * @Max: 0xFFFFFFFF + * @Default: 15 + * + * This ini entry is used to set frame types to deliver to stack + * in error receive path + * + * Usage: External + * + * + */ +#define CFG_SPECIAL_FRAME_MSK \ + CFG_INI_UINT("special_frame_msk", \ + WLAN_CFG_SPECIAL_MSK_MIN, \ + WLAN_CFG_SPECIAL_MSK_MAX, \ + WLAN_CFG_SPECIAL_MSK, \ + CFG_VALUE_OR_DEFAULT, "special frame to deliver to stack") + #define CFG_DP \ CFG(CFG_DP_HTT_PACKET_TYPE) \ CFG(CFG_DP_INT_BATCH_THRESHOLD_OTHER) \ @@ -2053,5 +2078,6 @@ CFG_TX_PKT_INSPECT_FOR_ILP_CFG \ CFG(CFG_DP_POINTER_TIMER_THRESHOLD_RX) \ CFG(CFG_DP_POINTER_NUM_THRESHOLD_RX) \ - CFG_DP_LOCAL_PKT_CAPTURE_CONFIG + CFG_DP_LOCAL_PKT_CAPTURE_CONFIG \ + CFG(CFG_SPECIAL_FRAME_MSK) #endif /* _CFG_DP_H_ */ diff --git a/wlan_cfg/wlan_cfg.c b/wlan_cfg/wlan_cfg.c index 624384b29a..f102bf2db3 100644 --- a/wlan_cfg/wlan_cfg.c +++ b/wlan_cfg/wlan_cfg.c @@ -4277,6 +4277,9 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc) cfg_get(psoc, CFG_DP_POINTER_NUM_THRESHOLD_RX); wlan_soc_tx_packet_inspect_attach(psoc, wlan_cfg_ctx); wlan_soc_local_pkt_capture_cfg_attach(psoc, wlan_cfg_ctx); + wlan_cfg_ctx->special_frame_msk = + cfg_get(psoc, CFG_SPECIAL_FRAME_MSK); + return wlan_cfg_ctx; } #endif @@ -5652,3 +5655,8 @@ wlan_cfg_get_pointer_num_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg) { return cfg->pointer_num_threshold_rx; } + +uint32_t wlan_cfg_get_special_frame_cfg(struct wlan_cfg_dp_soc_ctxt *cfg) +{ + return cfg->special_frame_msk; +} diff --git a/wlan_cfg/wlan_cfg.h b/wlan_cfg/wlan_cfg.h index fcbabb41d2..3d41033cb6 100644 --- a/wlan_cfg/wlan_cfg.h +++ b/wlan_cfg/wlan_cfg.h @@ -339,6 +339,7 @@ struct wlan_srng_cfg { * @pointer_timer_threshold_rx: RX REO2SW ring pointer update timer threshold * @pointer_num_threshold_rx: RX REO2SW ring pointer update entries threshold * @local_pkt_capture: flag indicating enable/disable of local packet capture + * @special_frame_msk: Special frame mask */ struct wlan_cfg_dp_soc_ctxt { int num_int_ctxts; @@ -541,6 +542,7 @@ struct wlan_cfg_dp_soc_ctxt { #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE bool local_pkt_capture; #endif + uint32_t special_frame_msk; }; /** @@ -2524,4 +2526,13 @@ bool wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt *cfg) return false; } #endif + +/** + * wlan_cfg_get_special_frame_cfg() - Get special frame mask + * @cfg: soc configuration context + * + * Return: frame mask + */ +uint32_t +wlan_cfg_get_special_frame_cfg(struct wlan_cfg_dp_soc_ctxt *cfg); #endif /*__WLAN_CFG_H*/