qcacld-3.0: Add MIC handling to DP component
Add MIC handling and periodic stats display API in DP component Change-Id: I5648b9ebe5bd529a83e607b07621c9867d19d402 CRs-Fixed: 3165076
This commit is contained in:

committed by
Madan Koyyalamudi

parent
23c9db7762
commit
30c5e2a0fa
@@ -29,6 +29,47 @@
|
||||
#include "qdf_status.h"
|
||||
#include <wlan_nlink_common.h>
|
||||
#include <qca_vendor.h>
|
||||
#include <ani_system_defs.h>
|
||||
#include <qdf_defer.h>
|
||||
|
||||
/**
|
||||
* struct dp_mic_info - mic error info in dp
|
||||
* @ta_mac_addr: transmitter mac address
|
||||
* @multicast: Flag for multicast
|
||||
* @key_id: Key ID
|
||||
* @tsc: Sequence number
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
*/
|
||||
struct dp_mic_error_info {
|
||||
struct qdf_mac_addr ta_mac_addr;
|
||||
bool multicast;
|
||||
uint8_t key_id;
|
||||
uint8_t tsc[SIR_CIPHER_SEQ_CTR_SIZE];
|
||||
uint16_t vdev_id;
|
||||
};
|
||||
|
||||
enum dp_mic_work_status {
|
||||
DP_MIC_UNINITIALIZED,
|
||||
DP_MIC_INITIALIZED,
|
||||
DP_MIC_SCHEDULED,
|
||||
DP_MIC_DISABLED
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dp_mic_work - mic work info in dp
|
||||
* @mic_error_work: mic error work
|
||||
* @status: sattus of mic error work
|
||||
* @info: Pointer to mic error information
|
||||
* @lock: lock to synchronixe mic error work
|
||||
*
|
||||
*/
|
||||
struct dp_mic_work {
|
||||
qdf_work_t work;
|
||||
enum dp_mic_work_status status;
|
||||
struct dp_mic_error_info *info;
|
||||
qdf_spinlock_t lock;
|
||||
};
|
||||
|
||||
/**
|
||||
* typedef hdd_cb_handle - HDD Handle
|
||||
@@ -208,6 +249,10 @@ union wlan_tp_data {
|
||||
* @dp_is_roaming_in_progress:Callback to check if roaming is in progress
|
||||
* @dp_is_ap_active:Callback to check if AP is active
|
||||
* @dp_napi_apply_throughput_policy:Callback to apply NAPI throughput policy
|
||||
* @wlan_dp_display_tx_multiq_stats: Callback to display Tx Mulit queue stats
|
||||
* @wlan_dp_display_netif_queue_history: Callback to display Netif queue history
|
||||
* @osif_dp_process_sta_mic_error: osif callback to process STA MIC error
|
||||
* @osif_dp_process_sap_mic_error: osif callback to process SAP MIC error
|
||||
*/
|
||||
struct wlan_dp_psoc_callbacks {
|
||||
void (*os_if_dp_gro_rx)(struct sk_buff *skb, uint8_t napi_to_use,
|
||||
@@ -242,12 +287,19 @@ struct wlan_dp_psoc_callbacks {
|
||||
uint8_t user_triggered, int size);
|
||||
bool (*dp_is_roaming_in_progress)(hdd_cb_handle context);
|
||||
bool (*dp_is_ap_active)(hdd_cb_handle context, uint8_t vdev_id);
|
||||
void (*dp_display_periodic_stats)(hdd_cb_handle context, bool interval);
|
||||
void (*dp_disable_rx_ol_for_low_tput)(hdd_cb_handle context,
|
||||
bool disable);
|
||||
int (*dp_napi_apply_throughput_policy)(hdd_cb_handle context,
|
||||
uint64_t tx_packets,
|
||||
uint64_t rx_packets);
|
||||
void (*wlan_dp_display_tx_multiq_stats)(hdd_cb_handle context,
|
||||
uint8_t vdev_id);
|
||||
void (*wlan_dp_display_netif_queue_history)(hdd_cb_handle context,
|
||||
enum qdf_stats_verbosity_level verb_lvl);
|
||||
void (*osif_dp_process_sta_mic_error)(struct dp_mic_error_info *info,
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
void (*osif_dp_process_sap_mic_error)(struct dp_mic_error_info *info,
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -32,6 +32,7 @@
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include "pld_common.h"
|
||||
#include <wlan_dp_public_struct.h>
|
||||
#include <cdp_txrx_misc.h>
|
||||
|
||||
/**
|
||||
* ucfg_dp_create_intf() - update DP interface MAC address
|
||||
@@ -130,6 +131,12 @@ ucfg_dp_update_config(struct wlan_objmgr_psoc *psoc,
|
||||
uint64_t
|
||||
ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* ucfg_dp_register_rx_mic_error_ind_handler : register mic error handler.
|
||||
* @soc: soc handle
|
||||
*/
|
||||
void ucfg_dp_register_rx_mic_error_ind_handler(void *soc);
|
||||
|
||||
/**
|
||||
* ucfg_dp_bbm_context_init() - Initialize BBM context
|
||||
* @psoc: psoc handle
|
||||
|
@@ -82,6 +82,7 @@ ucfg_dp_create_intf(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
dp_periodic_sta_stats_init(dp_intf);
|
||||
dp_periodic_sta_stats_mutex_create(dp_intf);
|
||||
dp_mic_init_work(dp_intf);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
@@ -106,6 +107,8 @@ ucfg_dp_destroy_intf(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
|
||||
dp_periodic_sta_stats_mutex_destroy(dp_intf);
|
||||
dp_mic_deinit_work(dp_intf);
|
||||
|
||||
qdf_spin_lock_bh(&dp_ctx->intf_list_lock);
|
||||
qdf_list_remove_node(&dp_ctx->intf_list, &dp_intf->node);
|
||||
qdf_spin_unlock_bh(&dp_ctx->intf_list_lock);
|
||||
@@ -478,6 +481,11 @@ ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc)
|
||||
return dp_ctx->dp_cfg.rx_softirq_max_yield_duration_ns;
|
||||
}
|
||||
|
||||
void ucfg_dp_register_rx_mic_error_ind_handler(void *soc)
|
||||
{
|
||||
cdp_register_rx_mic_error_ind_handler(soc, dp_rx_mic_error_ind);
|
||||
}
|
||||
|
||||
int ucfg_dp_bbm_context_init(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return dp_bbm_context_init(psoc);
|
||||
@@ -623,6 +631,10 @@ void ucfg_dp_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
|
||||
dp_ctx->dp_ops.dp_pm_qos_add_request = cb_obj->dp_pm_qos_add_request;
|
||||
dp_ctx->dp_ops.dp_pm_qos_remove_request =
|
||||
cb_obj->dp_pm_qos_remove_request;
|
||||
dp_ctx->dp_ops.wlan_dp_display_tx_multiq_stats =
|
||||
cb_obj->wlan_dp_display_tx_multiq_stats;
|
||||
dp_ctx->dp_ops.wlan_dp_display_netif_queue_history =
|
||||
cb_obj->wlan_dp_display_netif_queue_history;
|
||||
dp_ctx->dp_ops.dp_send_mscs_action_frame =
|
||||
cb_obj->dp_send_mscs_action_frame;
|
||||
dp_ctx->dp_ops.dp_pktlog_enable_disable =
|
||||
@@ -630,8 +642,6 @@ void ucfg_dp_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
|
||||
dp_ctx->dp_ops.dp_is_roaming_in_progress =
|
||||
cb_obj->dp_is_roaming_in_progress;
|
||||
dp_ctx->dp_ops.dp_is_ap_active = cb_obj->dp_is_ap_active;
|
||||
dp_ctx->dp_ops.dp_display_periodic_stats =
|
||||
cb_obj->dp_display_periodic_stats;
|
||||
dp_ctx->dp_ops.dp_disable_rx_ol_for_low_tput =
|
||||
cb_obj->dp_disable_rx_ol_for_low_tput;
|
||||
dp_ctx->dp_ops.dp_napi_apply_throughput_policy =
|
||||
|
Reference in New Issue
Block a user