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
This commit is contained in:
Yu Tian
2023-04-19 01:19:49 -07:00
committed by Madan Koyyalamudi
parent 296729e604
commit fc12609405
4 changed files with 48 additions and 3 deletions

View File

@@ -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;

View File

@@ -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_ */

View File

@@ -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;
}

View File

@@ -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*/