qcacmn: Enable monitor mac filter for special vap
Add change to enable mac based filter for monitor special vap. Change-Id: Ib189071443d5a98a84d160e7043e9bc4faf189c5 CRs-Fixed: 3317599
This commit is contained in:

committed by
Madan Koyyalamudi

parent
99baf5de6d
commit
c6fd7ded28
@@ -1086,6 +1086,7 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id,
|
||||
|
||||
dp_mon_rx_packet_length_set(soc->dp_soc, msg_word, htt_tlv_filter);
|
||||
dp_mon_rx_hdr_length_set(soc->dp_soc, msg_word, htt_tlv_filter);
|
||||
dp_mon_rx_mac_filter_set(soc->dp_soc, msg_word, htt_tlv_filter);
|
||||
|
||||
/* word 2 */
|
||||
msg_word++;
|
||||
|
@@ -947,6 +947,12 @@ dp_mon_rx_wmask_subscribe(struct dp_soc *soc, uint32_t *msg_word,
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_mon_rx_mac_filter_set(struct dp_soc *soc, uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter)
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
|
||||
static inline
|
||||
void dp_monitor_peer_telemetry_stats(struct dp_peer *peer,
|
||||
|
@@ -1223,6 +1223,7 @@ dp_mon_register_feature_ops_1_0(struct dp_soc *soc)
|
||||
dp_mon_filter_reset_undecoded_metadata_capture_1_0;
|
||||
#endif
|
||||
mon_ops->mon_rx_print_advanced_stats = NULL;
|
||||
mon_ops->mon_mac_filter_set = dp_mon_mac_filter_set;
|
||||
}
|
||||
|
||||
struct dp_mon_ops monitor_ops_1_0 = {
|
||||
|
@@ -1059,6 +1059,20 @@ QDF_STATUS dp_mon_filter_update_1_0(struct dp_pdev *pdev)
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef QCA_MAC_FILTER_FW_SUPPORT
|
||||
void dp_mon_mac_filter_set(uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter)
|
||||
{
|
||||
if (!msg_word || !tlv_filter)
|
||||
return;
|
||||
|
||||
if (tlv_filter->enable_mon_mac_filter > 0)
|
||||
HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_SET(*msg_word, 1);
|
||||
else
|
||||
HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_SET(*msg_word, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WLAN_CFR_ENABLE) && defined(WLAN_ENH_CFR_ENABLE)
|
||||
/*
|
||||
* dp_cfr_filter_1_0() - Configure HOST RX monitor status ring for CFR
|
||||
|
@@ -216,4 +216,20 @@ static inline void dp_mon_filter_reset_rx_pktlog_cbf_1_0(struct dp_pdev *pdev)
|
||||
|
||||
QDF_STATUS dp_mon_filter_update_1_0(struct dp_pdev *pdev);
|
||||
|
||||
#ifdef QCA_MAC_FILTER_FW_SUPPORT
|
||||
/**
|
||||
* dp_mon_mac_filter_set() - Setup rx monitor mac filter feature
|
||||
* @msg_word: msg word
|
||||
* @htt_tlv_filter: rx ring filter configuration
|
||||
*/
|
||||
void dp_mon_mac_filter_set(uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter);
|
||||
#else
|
||||
static inline
|
||||
void dp_mon_mac_filter_set(uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _DP_MON_FILTER_1_0_H_ */
|
||||
|
@@ -1438,6 +1438,7 @@ dp_mon_register_feature_ops_2_0(struct dp_soc *soc)
|
||||
mon_ops->rx_enable_fpmo = dp_rx_mon_enable_fpmo;
|
||||
mon_ops->mon_rx_print_advanced_stats =
|
||||
dp_mon_rx_print_advanced_stats_2_0;
|
||||
mon_ops->mon_mac_filter_set = NULL;
|
||||
}
|
||||
|
||||
struct dp_mon_ops monitor_ops_2_0 = {
|
||||
|
@@ -5976,8 +5976,6 @@ void dp_mon_cdp_ops_register(struct dp_soc *soc)
|
||||
if (target_type == TARGET_TYPE_QCN9000)
|
||||
ops->ctrl_ops->txrx_update_mon_mac_filter =
|
||||
dp_update_mon_mac_filter;
|
||||
else
|
||||
ops->ctrl_ops->txrx_update_mon_mac_filter = NULL;
|
||||
break;
|
||||
case TARGET_TYPE_QCN9224:
|
||||
case TARGET_TYPE_QCA5332:
|
||||
@@ -5997,7 +5995,6 @@ void dp_mon_cdp_ops_register(struct dp_soc *soc)
|
||||
dp_cfr_filter_register_2_0(ops);
|
||||
#endif
|
||||
#endif /* QCA_MONITOR_2_0_SUPPORT */
|
||||
ops->ctrl_ops->txrx_update_mon_mac_filter = NULL;
|
||||
break;
|
||||
default:
|
||||
dp_mon_err("%s: Unknown tgt type %d", __func__, target_type);
|
||||
|
@@ -827,6 +827,8 @@ struct dp_mon_ops {
|
||||
(struct dp_soc *soc, struct dp_pdev *pdev);
|
||||
QDF_STATUS (*mon_rx_ppdu_info_cache_create)(struct dp_pdev *pdev);
|
||||
void (*mon_rx_ppdu_info_cache_destroy)(struct dp_pdev *pdev);
|
||||
void (*mon_mac_filter_set)(uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -3881,6 +3883,27 @@ dp_rx_mon_enable(struct dp_soc *soc, uint32_t *msg_word,
|
||||
monitor_ops->rx_mon_enable(msg_word, tlv_filter);
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_mon_rx_mac_filter_set(struct dp_soc *soc, uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter)
|
||||
{
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
struct dp_mon_ops *monitor_ops;
|
||||
|
||||
if (!mon_soc) {
|
||||
dp_mon_debug("mon soc is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
monitor_ops = mon_soc->mon_ops;
|
||||
if (!monitor_ops || !monitor_ops->mon_mac_filter_set) {
|
||||
dp_mon_debug("callback not registered");
|
||||
return;
|
||||
}
|
||||
|
||||
monitor_ops->mon_mac_filter_set(msg_word, tlv_filter);
|
||||
}
|
||||
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
|
||||
struct cdp_rx_stats_ppdu_user *ppdu_user);
|
||||
|
@@ -104,6 +104,8 @@ void dp_mon_filter_show_filter(struct dp_mon_pdev *mon_pdev,
|
||||
DP_MON_FILTER_PRINT("phy_err_mask_cont: 0x%x",
|
||||
tlv_filter->phy_err_mask_cont);
|
||||
#endif
|
||||
DP_MON_FILTER_PRINT("mon_mac_filter: %d",
|
||||
tlv_filter->enable_mon_mac_filter);
|
||||
}
|
||||
|
||||
#ifdef QCA_UNDECODED_METADATA_SUPPORT
|
||||
@@ -260,6 +262,8 @@ void dp_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
DP_MON_FILTER_SET(tlv_filter, FILTER_MD_CTRL, dst_filter);
|
||||
|
||||
dp_mon_set_fp_phy_err_filter(tlv_filter, mon_filter);
|
||||
tlv_filter->enable_mon_mac_filter =
|
||||
mon_filter->tlv_filter.enable_mon_mac_filter;
|
||||
}
|
||||
|
||||
dp_mon_filter_show_filter(mon_pdev, 0, filter);
|
||||
|
Reference in New Issue
Block a user