Эх сурвалжийг харах

qcacmn: Add bit mask control for special frame deliver

Add bit mask control for special frames deliver in error
path.

Change-Id: I9f30e53028bf75d02578e5132f62b15ea480d1bd
CRs-Fixed: 3457564
Yu Tian 2 жил өмнө
parent
commit
fc12609405

+ 2 - 2
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;
 

+ 27 - 1
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)
 /*
  * <ini>
@@ -1925,6 +1929,27 @@
 #define CFG_TX_PKT_INSPECT_FOR_ILP_CFG
 #endif
 
+/*
+ * <ini>
+ * 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
+ *
+ * </ini>
+ */
+#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_ */

+ 8 - 0
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;
+}

+ 11 - 0
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*/