qcacmn: Support mgmt packet peer filter based on mac address
RA mac address is used to support tx capture mgmt peer filter. Change-Id: I895034723d4b75557ad33f55adc017d1caa3a40d
This commit is contained in:
@@ -1188,6 +1188,7 @@ enum cdp_tx_enh_capture_mode {
|
||||
CDP_TX_ENH_CAPTURE_DISABLED = 0,
|
||||
CDP_TX_ENH_CAPTURE_ENABLE_ALL_PEERS,
|
||||
CDP_TX_ENH_CAPTURE_ENDIS_PER_PEER,
|
||||
CDP_TX_ENH_CAPTURE_MAX,
|
||||
};
|
||||
|
||||
/*
|
||||
|
@@ -906,7 +906,7 @@ static inline QDF_STATUS
|
||||
cdp_update_peer_pkt_capture_params(ol_txrx_soc_handle soc,
|
||||
uint8_t pdev_id,
|
||||
bool is_rx_pkt_cap_enable,
|
||||
bool is_tx_pkt_cap_enable,
|
||||
uint8_t is_tx_pkt_cap_enable,
|
||||
uint8_t *peer_mac)
|
||||
{
|
||||
if (!soc || !soc->ops) {
|
||||
@@ -921,8 +921,7 @@ cdp_update_peer_pkt_capture_params(ol_txrx_soc_handle soc,
|
||||
|
||||
return soc->ops->ctrl_ops->txrx_update_peer_pkt_capture_params
|
||||
(soc, pdev_id, is_rx_pkt_cap_enable,
|
||||
is_tx_pkt_cap_enable,
|
||||
peer_mac);
|
||||
is_tx_pkt_cap_enable, peer_mac);
|
||||
}
|
||||
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
|
||||
|
||||
|
@@ -704,7 +704,7 @@ struct cdp_ctrl_ops {
|
||||
#if defined(WLAN_TX_PKT_CAPTURE_ENH) || defined(WLAN_RX_PKT_CAPTURE_ENH)
|
||||
QDF_STATUS (*txrx_update_peer_pkt_capture_params)(
|
||||
ol_txrx_soc_handle soc, uint8_t pdev_id,
|
||||
bool is_rx_pkt_cap_enable, bool is_tx_pkt_cap_enable,
|
||||
bool is_rx_pkt_cap_enable, uint8_t is_tx_pkt_cap_enable,
|
||||
uint8_t *peer_mac);
|
||||
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
|
||||
QDF_STATUS
|
||||
|
@@ -1802,6 +1802,19 @@ void dp_print_pdev_tx_capture_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_peer_tx_capture_filter_check: check filter is enable for the filter
|
||||
* and update tx_cap_enabled flag
|
||||
* @pdev: DP PDEV handle
|
||||
* @peer: DP PEER handle
|
||||
*
|
||||
* return: void
|
||||
*/
|
||||
static inline
|
||||
void dp_peer_tx_capture_filter_check(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
|
@@ -5581,6 +5581,12 @@ dp_peer_create_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
DP_STATS_INIT(peer);
|
||||
DP_STATS_UPD(peer, rx.avg_rssi, INVALID_RSSI);
|
||||
|
||||
/*
|
||||
* In tx_monitor mode, filter may be set for unassociated peer
|
||||
* when unassociated peer get associated peer need to
|
||||
* update tx_cap_enabled flag to support peer filter.
|
||||
*/
|
||||
dp_peer_tx_capture_filter_check(pdev, peer);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
} else {
|
||||
/*
|
||||
@@ -5704,6 +5710,14 @@ dp_peer_create_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
peer_cookie.ctx;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* In tx_monitor mode, filter may be set for unassociated peer
|
||||
* when unassociated peer get associated peer need to
|
||||
* update tx_cap_enabled flag to support peer filter.
|
||||
*/
|
||||
dp_peer_tx_capture_filter_check(pdev, peer);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -8399,7 +8413,8 @@ static QDF_STATUS dp_get_psoc_param(struct cdp_soc_t *cdp_soc,
|
||||
* @soc: DP_SOC handle
|
||||
* @pdev_id: id of DP_PDEV handle
|
||||
* @is_rx_pkt_cap_enable: enable/disable Rx packet capture in monitor mode
|
||||
* @is_tx_pkt_cap_enable: enable/disable Tx packet capture in monitor mode
|
||||
* @is_tx_pkt_cap_enable: enable/disable/delete/print
|
||||
* Tx packet capture in monitor mode
|
||||
* @peer_mac: MAC address for which the above need to be enabled/disabled
|
||||
*
|
||||
* Return: Success if Rx & Tx capture is enabled for peer, false otherwise
|
||||
@@ -8408,28 +8423,30 @@ QDF_STATUS
|
||||
dp_peer_update_pkt_capture_params(ol_txrx_soc_handle soc,
|
||||
uint8_t pdev_id,
|
||||
bool is_rx_pkt_cap_enable,
|
||||
bool is_tx_pkt_cap_enable,
|
||||
uint8_t is_tx_pkt_cap_enable,
|
||||
uint8_t *peer_mac)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
struct dp_peer *peer;
|
||||
struct dp_pdev *pdev =
|
||||
dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)soc,
|
||||
pdev_id);
|
||||
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
peer = (struct dp_peer *)dp_find_peer_by_addr((struct cdp_pdev *)pdev,
|
||||
peer_mac);
|
||||
if (!peer) {
|
||||
dp_err("Invalid Peer");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dp_peer_set_rx_capture_enabled(peer, is_rx_pkt_cap_enable);
|
||||
dp_peer_set_tx_capture_enabled(peer, is_tx_pkt_cap_enable);
|
||||
/* we need to set tx pkt capture for non associated peer */
|
||||
status = dp_peer_set_tx_capture_enabled(pdev, peer,
|
||||
is_tx_pkt_cap_enable,
|
||||
peer_mac);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
status = dp_peer_set_rx_capture_enabled(pdev, peer,
|
||||
is_rx_pkt_cap_enable,
|
||||
peer_mac);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -286,7 +286,9 @@ void dp_peer_ast_index_flow_queue_map_create(void *soc_hdl,
|
||||
* @soc: DP SOC handle
|
||||
* @pdev_id: id of DP pdev handle
|
||||
* @is_rx_pkt_cap_enable: enable/disable Rx packet capture in monitor mode
|
||||
* @is_tx_pkt_cap_enable: enable/disable Tx packet capture in monitor mode
|
||||
* @is_tx_pkt_cap_enable: enable/disable/delete/print
|
||||
* Tx packet capture in monitor mode
|
||||
* Tx packet capture in monitor mode
|
||||
* @peer_mac: MAC address for which the above need to be enabled/disabled
|
||||
*
|
||||
* Return: Success if Rx & Tx capture is enabled for peer, false otherwise
|
||||
@@ -295,7 +297,7 @@ QDF_STATUS
|
||||
dp_peer_update_pkt_capture_params(ol_txrx_soc_handle soc,
|
||||
uint8_t pdev_id,
|
||||
bool is_rx_pkt_cap_enable,
|
||||
bool is_tx_pkt_cap_enable,
|
||||
uint8_t is_tx_pkt_cap_enable,
|
||||
uint8_t *peer_mac);
|
||||
|
||||
/*
|
||||
|
@@ -1103,8 +1103,11 @@ bool dp_rx_multipass_process(struct dp_peer *peer, qdf_nbuf_t nbuf,
|
||||
|
||||
#ifndef WLAN_RX_PKT_CAPTURE_ENH
|
||||
static inline
|
||||
void dp_peer_set_rx_capture_enabled(struct dp_peer *peer_handle, bool value)
|
||||
QDF_STATUS dp_peer_set_rx_capture_enabled(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer_handle,
|
||||
bool value, uint8_t *mac_addr)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -357,8 +357,11 @@ static inline void dp_tx_comp_process_exception(struct dp_tx_desc_s *tx_desc)
|
||||
|
||||
#ifndef WLAN_TX_PKT_CAPTURE_ENH
|
||||
static inline
|
||||
void dp_peer_set_tx_capture_enabled(struct dp_peer *peer_handle, bool value)
|
||||
QDF_STATUS dp_peer_set_tx_capture_enabled(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer_handle,
|
||||
uint8_t value, uint8_t *peer_mac)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user