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_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_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 */
|
/* word 2 */
|
||||||
msg_word++;
|
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
|
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
|
||||||
static inline
|
static inline
|
||||||
void dp_monitor_peer_telemetry_stats(struct dp_peer *peer,
|
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;
|
dp_mon_filter_reset_undecoded_metadata_capture_1_0;
|
||||||
#endif
|
#endif
|
||||||
mon_ops->mon_rx_print_advanced_stats = NULL;
|
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 = {
|
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;
|
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)
|
#if defined(WLAN_CFR_ENABLE) && defined(WLAN_ENH_CFR_ENABLE)
|
||||||
/*
|
/*
|
||||||
* dp_cfr_filter_1_0() - Configure HOST RX monitor status ring for CFR
|
* 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);
|
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_ */
|
#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->rx_enable_fpmo = dp_rx_mon_enable_fpmo;
|
||||||
mon_ops->mon_rx_print_advanced_stats =
|
mon_ops->mon_rx_print_advanced_stats =
|
||||||
dp_mon_rx_print_advanced_stats_2_0;
|
dp_mon_rx_print_advanced_stats_2_0;
|
||||||
|
mon_ops->mon_mac_filter_set = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct dp_mon_ops monitor_ops_2_0 = {
|
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)
|
if (target_type == TARGET_TYPE_QCN9000)
|
||||||
ops->ctrl_ops->txrx_update_mon_mac_filter =
|
ops->ctrl_ops->txrx_update_mon_mac_filter =
|
||||||
dp_update_mon_mac_filter;
|
dp_update_mon_mac_filter;
|
||||||
else
|
|
||||||
ops->ctrl_ops->txrx_update_mon_mac_filter = NULL;
|
|
||||||
break;
|
break;
|
||||||
case TARGET_TYPE_QCN9224:
|
case TARGET_TYPE_QCN9224:
|
||||||
case TARGET_TYPE_QCA5332:
|
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);
|
dp_cfr_filter_register_2_0(ops);
|
||||||
#endif
|
#endif
|
||||||
#endif /* QCA_MONITOR_2_0_SUPPORT */
|
#endif /* QCA_MONITOR_2_0_SUPPORT */
|
||||||
ops->ctrl_ops->txrx_update_mon_mac_filter = NULL;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dp_mon_err("%s: Unknown tgt type %d", __func__, target_type);
|
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);
|
(struct dp_soc *soc, struct dp_pdev *pdev);
|
||||||
QDF_STATUS (*mon_rx_ppdu_info_cache_create)(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_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);
|
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
|
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||||
QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
|
QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
|
||||||
struct cdp_rx_stats_ppdu_user *ppdu_user);
|
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",
|
DP_MON_FILTER_PRINT("phy_err_mask_cont: 0x%x",
|
||||||
tlv_filter->phy_err_mask_cont);
|
tlv_filter->phy_err_mask_cont);
|
||||||
#endif
|
#endif
|
||||||
|
DP_MON_FILTER_PRINT("mon_mac_filter: %d",
|
||||||
|
tlv_filter->enable_mon_mac_filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef QCA_UNDECODED_METADATA_SUPPORT
|
#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_FILTER_SET(tlv_filter, FILTER_MD_CTRL, dst_filter);
|
||||||
|
|
||||||
dp_mon_set_fp_phy_err_filter(tlv_filter, mon_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);
|
dp_mon_filter_show_filter(mon_pdev, 0, filter);
|
||||||
|
Reference in New Issue
Block a user