qcacld-3.0: Add support to send config to FW based on filter

In packet capture component add support to send ctrl and beacon
frames config to FW based on frame filter received from user through
vendor command.

Change-Id: Ie45ea2135e237a156fb60663e3f85cc601490e4a
CRs-Fixed: 3046222
This commit is contained in:
Vulupala Shashank Reddy
2021-09-07 13:01:37 +05:30
committed by Madan Koyyalamudi
parent 76dfbb1112
commit e5e7e8049f
9 changed files with 195 additions and 64 deletions

View File

@@ -38,19 +38,22 @@ enum pkt_capture_mode {
};
/**
* enum pkt_capture_trigger_qos_config - packet capture config
* @PACKET_CAPTURE_CONFIG_TRIGGER_QOS_DISABLE: disable capture for trigger and
* qos frames
* enum pkt_capture_config - packet capture config
* @PACKET_CAPTURE_CONFIG_TRIGGER_ENABLE: enable capture for trigger frames only
* @PACKET_CAPTURE_CONFIG_QOS_ENABLE: enable capture for qos frames only
* @PACKET_CAPTURE_CONFIG_TRIGGER_QOS_ENABLE: enable capture for both trigger
* and qos frames
* @PACKET_CAPTURE_CONFIG_CONNECT_NO_BEACON_ENABLE: drop all beacons, when
* device in connected state
* @PACKET_CAPTURE_CONFIG_CONNECT_BEACON_ENABLE: enable only connected BSSID
* beacons, when device in connected state
* @PACKET_CAPTURE_CONFIG_CONNECT_OFF_CHANNEL_BEACON_ENABLE: enable off channel
* beacons, when device in connected state
*/
enum pkt_capture_trigger_qos_config {
PACKET_CAPTURE_CONFIG_TRIGGER_QOS_DISABLE = 0,
PACKET_CAPTURE_CONFIG_TRIGGER_ENABLE,
PACKET_CAPTURE_CONFIG_QOS_ENABLE,
PACKET_CAPTURE_CONFIG_TRIGGER_QOS_ENABLE,
enum pkt_capture_config {
PACKET_CAPTURE_CONFIG_TRIGGER_ENABLE = BIT(0),
PACKET_CAPTURE_CONFIG_QOS_ENABLE = BIT(1),
PACKET_CAPTURE_CONFIG_NO_BEACON_ENABLE = BIT(2),
PACKET_CAPTURE_CONFIG_BEACON_ENABLE = BIT(3),
PACKET_CAPTURE_CONFIG_OFF_CHANNEL_BEACON_ENABLE = BIT(4),
};
/**
@@ -106,7 +109,7 @@ struct wlan_pkt_capture_tx_ops {
QDF_STATUS (*pkt_capture_send_config)
(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
enum pkt_capture_trigger_qos_config config);
enum pkt_capture_config config);
};
/**

View File

@@ -53,7 +53,6 @@ QDF_STATUS
tgt_pkt_capture_send_mode(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_mode mode);
#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
/**
* tgt_pkt_capture_send_config() - send packet capture config to firmware
* @vdev: pointer to vdev object
@@ -63,8 +62,9 @@ tgt_pkt_capture_send_mode(struct wlan_objmgr_vdev *vdev,
*/
QDF_STATUS
tgt_pkt_capture_send_config(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_trigger_qos_config config);
enum pkt_capture_config config);
#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
/**
* tgt_pkt_capture_smu_event() - Receive smart monitor event from firmware
* @psoc: pointer to psoc

View File

@@ -120,6 +120,25 @@ void ucfg_pkt_capture_set_pktcap_mode(struct wlan_objmgr_psoc *psoc,
enum pkt_capture_mode
ucfg_pkt_capture_get_pktcap_mode(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_pkt_capturee_set_pktcap_config - Set packet capture config
* @vdev: pointer to vdev object
* @config: config to be set
*
* Return: None
*/
void ucfg_pkt_capture_set_pktcap_config(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_config config);
/**
* ucfg_pkt_capture_get_pktcap_config - Get packet capture config
* @vdev: pointer to vdev object
*
* Return: config value
*/
enum pkt_capture_config
ucfg_pkt_capture_get_pktcap_config(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_pkt_capture_process_mgmt_tx_data() - process management tx packets
* @pdev: pointer to pdev object
@@ -278,27 +297,6 @@ QDF_STATUS
ucfg_pkt_capture_set_filter(struct pkt_capture_frame_filter frame_filter,
struct wlan_objmgr_vdev *vdev);
#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
/**
* ucfg_pkt_capture_send_config - send packet capture config
* @vdev: pointer to vdev object
* @config: packet capture config
*
* Return: None
*/
QDF_STATUS ucfg_pkt_capture_send_config
(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_trigger_qos_config config);
#else
static inline
QDF_STATUS ucfg_pkt_capture_send_config
(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_trigger_qos_config config)
{
return QDF_STATUS_SUCCESS;
}
#endif
#else
static inline
QDF_STATUS ucfg_pkt_capture_init(void)
@@ -354,6 +352,18 @@ ucfg_pkt_capture_get_pktcap_mode(struct wlan_objmgr_psoc *psoc)
return PACKET_CAPTURE_MODE_DISABLE;
}
static inline
void ucfg_pkt_capture_set_pktcap_config(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_config config)
{
}
static inline enum pkt_capture_config
ucfg_pkt_capture_get_pktcap_config(struct wlan_objmgr_vdev *vdev)
{
return 0;
}
static inline QDF_STATUS
ucfg_pkt_capture_process_mgmt_tx_data(
struct mgmt_offload_event_params *params,
@@ -429,14 +439,6 @@ ucfg_pkt_capture_record_channel(struct wlan_objmgr_vdev *vdev)
{
}
static inline
QDF_STATUS ucfg_pkt_capture_send_config
(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_trigger_qos_config config)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
ucfg_pkt_capture_set_filter(struct pkt_capture_frame_filter frame_filter,
struct wlan_objmgr_vdev *vdev)

View File

@@ -126,10 +126,9 @@ tgt_pkt_capture_send_mode(struct wlan_objmgr_vdev *vdev,
return status;
}
#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
QDF_STATUS
tgt_pkt_capture_send_config(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_trigger_qos_config config)
enum pkt_capture_config config)
{
QDF_STATUS status = QDF_STATUS_E_FAILURE;
struct pkt_capture_vdev_priv *vdev_priv;
@@ -161,6 +160,7 @@ tgt_pkt_capture_send_config(struct wlan_objmgr_vdev *vdev,
return status;
}
#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
QDF_STATUS
tgt_pkt_capture_smu_event(struct wlan_objmgr_psoc *psoc,
struct smu_event_params *param)

View File

@@ -86,6 +86,31 @@ ucfg_pkt_capture_get_pktcap_mode(struct wlan_objmgr_psoc *psoc)
return pkt_capture_get_pktcap_mode(psoc);
}
/**
* ucfg_pkt_capture_set_pktcap_config - Set packet capture config
* @vdev: pointer to vdev object
* @config: config to be set
*
* Return: None
*/
void ucfg_pkt_capture_set_pktcap_config(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_config config)
{
pkt_capture_set_pktcap_config(vdev, config);
}
/**
* ucfg_pkt_capture_get_pktcap_config - Get packet capture config
* @vdev: pointer to vdev object
*
* Return: config value
*/
enum pkt_capture_config
ucfg_pkt_capture_get_pktcap_config(struct wlan_objmgr_vdev *vdev)
{
return pkt_capture_get_pktcap_config(vdev);
}
/**
* ucfg_pkt_capture_init() - Packet capture component initialization.
*
@@ -315,12 +340,3 @@ ucfg_pkt_capture_set_filter(struct pkt_capture_frame_filter frame_filter,
{
return pkt_capture_set_filter(frame_filter, vdev);
}
#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
QDF_STATUS ucfg_pkt_capture_send_config
(struct wlan_objmgr_vdev *vdev,
enum pkt_capture_trigger_qos_config config)
{
return tgt_pkt_capture_send_config(vdev, config);
}
#endif