qcacmn: FISA data structure movement
Move the non-converged data structure for FISA out of converged DP section. Change-Id: I76d8ac924814d5881f3fd1f75db3ee01cf87113f CRs-Fixed: 3512037
This commit is contained in:

committed by
Rahul Choudhary

parent
47c1ec75a2
commit
b47aea82ae
@@ -3009,6 +3009,18 @@ struct cdp_peer_cookie {
|
|||||||
uint8_t cookie;
|
uint8_t cookie;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum cdp_fisa_stats_id - ID to query FISA stats
|
||||||
|
* @CDP_FISA_STATS_ID_ERR_STATS: FISA error stats
|
||||||
|
* @CDP_FISA_STATS_ID_DUMP_HW_FST: HW FST dump
|
||||||
|
* @CDP_FISA_STATS_ID_DUMP_SW_FST: SW FST dump
|
||||||
|
*/
|
||||||
|
enum cdp_fisa_stats_id {
|
||||||
|
CDP_FISA_STATS_ID_ERR_STATS,
|
||||||
|
CDP_FISA_STATS_ID_DUMP_HW_FST,
|
||||||
|
CDP_FISA_STATS_ID_DUMP_SW_FST,
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef WLAN_SUPPORT_RX_FISA
|
#ifdef WLAN_SUPPORT_RX_FISA
|
||||||
struct cdp_flow_stats {
|
struct cdp_flow_stats {
|
||||||
uint32_t aggr_count;
|
uint32_t aggr_count;
|
||||||
|
@@ -1700,6 +1700,7 @@ void (*peer_send_wds_disconnect)(struct cdp_ctrl_objmgr_psoc *psoc,
|
|||||||
#ifdef CONFIG_SAWF_DEF_QUEUES
|
#ifdef CONFIG_SAWF_DEF_QUEUES
|
||||||
int (*disable_sawf_svc)(uint8_t svc_id);
|
int (*disable_sawf_svc)(uint8_t svc_id);
|
||||||
#endif
|
#endif
|
||||||
|
void (*dp_print_fisa_stats)(enum cdp_fisa_stats_id stats_id);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef DP_PEER_EXTENDED_API
|
#ifdef DP_PEER_EXTENDED_API
|
||||||
|
@@ -4114,16 +4114,6 @@ void dp_update_num_mac_rings_for_dbs(struct dp_soc *soc,
|
|||||||
|
|
||||||
|
|
||||||
#if defined(WLAN_SUPPORT_RX_FISA)
|
#if defined(WLAN_SUPPORT_RX_FISA)
|
||||||
void dp_rx_dump_fisa_table(struct dp_soc *soc);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* dp_print_fisa_stats() - Print FISA stats
|
|
||||||
* @soc: DP soc handle
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
void dp_print_fisa_stats(struct dp_soc *soc);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dp_rx_fst_update_cmem_params() - Update CMEM FST params
|
* dp_rx_fst_update_cmem_params() - Update CMEM FST params
|
||||||
* @soc: DP SoC context
|
* @soc: DP SoC context
|
||||||
@@ -4141,19 +4131,6 @@ dp_rx_fst_update_cmem_params(struct dp_soc *soc, uint16_t num_entries,
|
|||||||
uint32_t cmem_ba_lo, uint32_t cmem_ba_hi)
|
uint32_t cmem_ba_lo, uint32_t cmem_ba_hi)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void dp_print_fisa_stats(struct dp_soc *soc)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static QDF_STATUS dp_rx_dump_fisa_stats(struct dp_soc *soc)
|
|
||||||
{
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dp_rx_dump_fisa_table(struct dp_soc *soc)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* WLAN_SUPPORT_RX_FISA */
|
#endif /* WLAN_SUPPORT_RX_FISA */
|
||||||
|
|
||||||
#ifdef MAX_ALLOC_PAGE_SIZE
|
#ifdef MAX_ALLOC_PAGE_SIZE
|
||||||
|
@@ -6830,7 +6830,9 @@ dp_print_host_stats(struct dp_vdev *vdev,
|
|||||||
dp_print_soc_interrupt_stats(pdev->soc);
|
dp_print_soc_interrupt_stats(pdev->soc);
|
||||||
break;
|
break;
|
||||||
case TXRX_SOC_FSE_STATS:
|
case TXRX_SOC_FSE_STATS:
|
||||||
dp_rx_dump_fisa_table(pdev->soc);
|
if (soc->cdp_soc.ol_ops->dp_print_fisa_stats)
|
||||||
|
soc->cdp_soc.ol_ops->dp_print_fisa_stats(
|
||||||
|
CDP_FISA_STATS_ID_DUMP_HW_FST);
|
||||||
break;
|
break;
|
||||||
case TXRX_HAL_REG_WRITE_STATS:
|
case TXRX_HAL_REG_WRITE_STATS:
|
||||||
hal_dump_reg_write_stats(pdev->soc->hal_soc);
|
hal_dump_reg_write_stats(pdev->soc->hal_soc);
|
||||||
@@ -9005,7 +9007,9 @@ static QDF_STATUS dp_txrx_dump_stats(struct cdp_soc_t *psoc, uint16_t value,
|
|||||||
dp_pdev_print_tx_delay_stats(soc);
|
dp_pdev_print_tx_delay_stats(soc);
|
||||||
/* Dump usage watermark stats for core TX/RX SRNGs */
|
/* Dump usage watermark stats for core TX/RX SRNGs */
|
||||||
dp_dump_srng_high_wm_stats(soc, (1 << REO_DST));
|
dp_dump_srng_high_wm_stats(soc, (1 << REO_DST));
|
||||||
dp_print_fisa_stats(soc);
|
if (soc->cdp_soc.ol_ops->dp_print_fisa_stats)
|
||||||
|
soc->cdp_soc.ol_ops->dp_print_fisa_stats(
|
||||||
|
CDP_FISA_STATS_ID_ERR_STATS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CDP_RX_RING_STATS:
|
case CDP_RX_RING_STATS:
|
||||||
@@ -9032,7 +9036,9 @@ static QDF_STATUS dp_txrx_dump_stats(struct cdp_soc_t *psoc, uint16_t value,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CDP_DP_RX_FISA_STATS:
|
case CDP_DP_RX_FISA_STATS:
|
||||||
dp_rx_dump_fisa_stats(soc);
|
if (soc->cdp_soc.ol_ops->dp_print_fisa_stats)
|
||||||
|
soc->cdp_soc.ol_ops->dp_print_fisa_stats(
|
||||||
|
CDP_FISA_STATS_ID_DUMP_SW_FST);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CDP_DP_SWLM_STATS:
|
case CDP_DP_SWLM_STATS:
|
||||||
|
@@ -162,10 +162,6 @@
|
|||||||
#define DP_TX_MESH_ENABLED 0x4
|
#define DP_TX_MESH_ENABLED 0x4
|
||||||
#define DP_TX_INVALID_QOS_TAG 0xf
|
#define DP_TX_INVALID_QOS_TAG 0xf
|
||||||
|
|
||||||
#ifdef WLAN_SUPPORT_RX_FISA
|
|
||||||
#define FISA_FLOW_MAX_AGGR_COUNT 16 /* max flow aggregate count */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
|
#ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
|
||||||
#define DP_RX_REFILL_BUFF_POOL_SIZE 2048
|
#define DP_RX_REFILL_BUFF_POOL_SIZE 2048
|
||||||
#define DP_RX_REFILL_BUFF_POOL_BURST 64
|
#define DP_RX_REFILL_BUFF_POOL_BURST 64
|
||||||
@@ -2975,32 +2971,14 @@ struct dp_soc {
|
|||||||
* invalidation bug is enabled or not
|
* invalidation bug is enabled or not
|
||||||
*/
|
*/
|
||||||
bool is_rx_fse_full_cache_invalidate_war_enabled;
|
bool is_rx_fse_full_cache_invalidate_war_enabled;
|
||||||
#if defined(WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)
|
#if defined(WLAN_SUPPORT_RX_FLOW_TAG)
|
||||||
/**
|
/**
|
||||||
* Pointer to DP RX Flow FST at SOC level if
|
* Pointer to DP RX Flow FST at SOC level if
|
||||||
* is_rx_flow_search_table_per_pdev is false
|
* is_rx_flow_search_table_per_pdev is false
|
||||||
* TBD: rx_fst[num_macs] if we decide to have per mac FST
|
* TBD: rx_fst[num_macs] if we decide to have per mac FST
|
||||||
*/
|
*/
|
||||||
struct dp_rx_fst *rx_fst;
|
struct dp_rx_fst *rx_fst;
|
||||||
#ifdef WLAN_SUPPORT_RX_FISA
|
#endif /* WLAN_SUPPORT_RX_FLOW_TAG */
|
||||||
uint8_t fisa_enable;
|
|
||||||
uint8_t fisa_lru_del_enable;
|
|
||||||
/**
|
|
||||||
* Params used for controlling the fisa aggregation dynamically
|
|
||||||
*/
|
|
||||||
struct {
|
|
||||||
qdf_atomic_t skip_fisa;
|
|
||||||
uint8_t fisa_force_flush[MAX_REO_DEST_RINGS];
|
|
||||||
} skip_fisa_param;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CMEM address and size for FST in CMEM, This is the address
|
|
||||||
* shared during init time.
|
|
||||||
*/
|
|
||||||
uint64_t fst_cmem_base;
|
|
||||||
uint64_t fst_cmem_size;
|
|
||||||
#endif
|
|
||||||
#endif /* WLAN_SUPPORT_RX_FLOW_TAG || WLAN_SUPPORT_RX_FISA */
|
|
||||||
/* SG supported for msdu continued packets from wbm release ring */
|
/* SG supported for msdu continued packets from wbm release ring */
|
||||||
bool wbm_release_desc_rx_sg_support;
|
bool wbm_release_desc_rx_sg_support;
|
||||||
bool peer_map_attach_success;
|
bool peer_map_attach_success;
|
||||||
@@ -4957,6 +4935,7 @@ struct dp_tx_me_buf_t {
|
|||||||
|
|
||||||
#if defined(WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)
|
#if defined(WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)
|
||||||
struct hal_rx_fst;
|
struct hal_rx_fst;
|
||||||
|
#endif /* WLAN_SUPPORT_RX_FLOW_TAG || WLAN_SUPPORT_RX_FISA */
|
||||||
|
|
||||||
#ifdef WLAN_SUPPORT_RX_FLOW_TAG
|
#ifdef WLAN_SUPPORT_RX_FLOW_TAG
|
||||||
struct dp_rx_fse {
|
struct dp_rx_fse {
|
||||||
@@ -5003,161 +4982,8 @@ struct dp_rx_fst {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_rx_fse)
|
#define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_rx_fse)
|
||||||
#elif WLAN_SUPPORT_RX_FISA
|
|
||||||
|
|
||||||
/**
|
#endif /* WLAN_SUPPORT_RX_FLOW_TAG */
|
||||||
* struct dp_fisa_reo_mismatch_stats - reo mismatch sub-case stats for FISA
|
|
||||||
* @allow_cce_match: packet allowed due to cce mismatch
|
|
||||||
* @allow_fse_metdata_mismatch: packet allowed since it belongs to same flow,
|
|
||||||
* only fse_metadata is not same.
|
|
||||||
* @allow_non_aggr: packet allowed due to any other reason.
|
|
||||||
*/
|
|
||||||
struct dp_fisa_reo_mismatch_stats {
|
|
||||||
uint32_t allow_cce_match;
|
|
||||||
uint32_t allow_fse_metdata_mismatch;
|
|
||||||
uint32_t allow_non_aggr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dp_fisa_stats {
|
|
||||||
/* flow index invalid from RX HW TLV */
|
|
||||||
uint32_t invalid_flow_index;
|
|
||||||
/* workqueue deferred due to suspend */
|
|
||||||
uint32_t update_deferred;
|
|
||||||
struct dp_fisa_reo_mismatch_stats reo_mismatch;
|
|
||||||
uint32_t incorrect_rdi;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum fisa_aggr_ret {
|
|
||||||
FISA_AGGR_DONE,
|
|
||||||
FISA_AGGR_NOT_ELIGIBLE,
|
|
||||||
FISA_FLUSH_FLOW
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* struct fisa_pkt_hist - FISA Packet history structure
|
|
||||||
* @tlv_hist: array of TLV history
|
|
||||||
* @ts_hist: array of timestamps of fisa packets
|
|
||||||
* @idx: index indicating the next location to be used in the array.
|
|
||||||
*/
|
|
||||||
struct fisa_pkt_hist {
|
|
||||||
uint8_t *tlv_hist;
|
|
||||||
qdf_time_t ts_hist[FISA_FLOW_MAX_AGGR_COUNT];
|
|
||||||
uint32_t idx;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dp_fisa_rx_sw_ft {
|
|
||||||
/* HAL Rx Flow Search Entry which matches HW definition */
|
|
||||||
void *hw_fse;
|
|
||||||
/* hash value */
|
|
||||||
uint32_t flow_hash;
|
|
||||||
/* toeplitz hash value*/
|
|
||||||
uint32_t flow_id_toeplitz;
|
|
||||||
/* Flow index, equivalent to hash value truncated to FST size */
|
|
||||||
uint32_t flow_id;
|
|
||||||
/* Stats tracking for this flow */
|
|
||||||
struct cdp_flow_stats stats;
|
|
||||||
/* Flag indicating whether flow is IPv4 address tuple */
|
|
||||||
uint8_t is_ipv4_addr_entry;
|
|
||||||
/* Flag indicating whether flow is valid */
|
|
||||||
uint8_t is_valid;
|
|
||||||
uint8_t is_populated;
|
|
||||||
uint8_t is_flow_udp;
|
|
||||||
uint8_t is_flow_tcp;
|
|
||||||
qdf_nbuf_t head_skb;
|
|
||||||
uint16_t cumulative_l4_checksum;
|
|
||||||
uint16_t adjusted_cumulative_ip_length;
|
|
||||||
uint16_t cur_aggr;
|
|
||||||
uint16_t napi_flush_cumulative_l4_checksum;
|
|
||||||
uint16_t napi_flush_cumulative_ip_length;
|
|
||||||
qdf_nbuf_t last_skb;
|
|
||||||
uint32_t head_skb_ip_hdr_offset;
|
|
||||||
uint32_t head_skb_l4_hdr_offset;
|
|
||||||
struct cdp_rx_flow_tuple_info rx_flow_tuple_info;
|
|
||||||
uint8_t napi_id;
|
|
||||||
struct dp_vdev *vdev;
|
|
||||||
uint64_t bytes_aggregated;
|
|
||||||
uint32_t flush_count;
|
|
||||||
uint32_t aggr_count;
|
|
||||||
uint8_t do_not_aggregate;
|
|
||||||
uint16_t hal_cumultive_ip_len;
|
|
||||||
struct dp_soc *soc_hdl;
|
|
||||||
/* last aggregate count fetched from RX PKT TLV */
|
|
||||||
uint32_t last_hal_aggr_count;
|
|
||||||
uint32_t cur_aggr_gso_size;
|
|
||||||
qdf_net_udphdr_t *head_skb_udp_hdr;
|
|
||||||
uint16_t frags_cumulative_len;
|
|
||||||
/* CMEM parameters */
|
|
||||||
uint32_t cmem_offset;
|
|
||||||
uint32_t metadata;
|
|
||||||
uint32_t reo_dest_indication;
|
|
||||||
qdf_time_t flow_init_ts;
|
|
||||||
qdf_time_t last_accessed_ts;
|
|
||||||
#ifdef WLAN_SUPPORT_RX_FISA_HIST
|
|
||||||
struct fisa_pkt_hist pkt_hist;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_fisa_rx_sw_ft)
|
|
||||||
#define MAX_FSE_CACHE_FL_HST 10
|
|
||||||
/**
|
|
||||||
* struct fse_cache_flush_history - Debug history cache flush
|
|
||||||
* @timestamp: Entry update timestamp
|
|
||||||
* @flows_added: Number of flows added for this flush
|
|
||||||
* @flows_deleted: Number of flows deleted for this flush
|
|
||||||
*/
|
|
||||||
struct fse_cache_flush_history {
|
|
||||||
uint64_t timestamp;
|
|
||||||
uint32_t flows_added;
|
|
||||||
uint32_t flows_deleted;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dp_rx_fst {
|
|
||||||
/* Software (DP) FST */
|
|
||||||
uint8_t *base;
|
|
||||||
/* Pointer to HAL FST */
|
|
||||||
struct hal_rx_fst *hal_rx_fst;
|
|
||||||
/* Base physical address of HAL RX HW FST */
|
|
||||||
uint64_t hal_rx_fst_base_paddr;
|
|
||||||
/* Maximum number of flows FSE supports */
|
|
||||||
uint16_t max_entries;
|
|
||||||
/* Num entries in flow table */
|
|
||||||
uint16_t num_entries;
|
|
||||||
/* SKID Length */
|
|
||||||
uint16_t max_skid_length;
|
|
||||||
/* Hash mask to obtain legitimate hash entry */
|
|
||||||
uint32_t hash_mask;
|
|
||||||
/* Lock for adding/deleting entries of FST */
|
|
||||||
qdf_spinlock_t dp_rx_fst_lock;
|
|
||||||
uint32_t add_flow_count;
|
|
||||||
uint32_t del_flow_count;
|
|
||||||
uint32_t hash_collision_cnt;
|
|
||||||
struct dp_soc *soc_hdl;
|
|
||||||
qdf_atomic_t fse_cache_flush_posted;
|
|
||||||
qdf_timer_t fse_cache_flush_timer;
|
|
||||||
/* Allow FSE cache flush cmd to FW */
|
|
||||||
bool fse_cache_flush_allow;
|
|
||||||
struct fse_cache_flush_history cache_fl_rec[MAX_FSE_CACHE_FL_HST];
|
|
||||||
/* FISA DP stats */
|
|
||||||
struct dp_fisa_stats stats;
|
|
||||||
|
|
||||||
/* CMEM params */
|
|
||||||
qdf_work_t fst_update_work;
|
|
||||||
qdf_workqueue_t *fst_update_wq;
|
|
||||||
qdf_list_t fst_update_list;
|
|
||||||
uint32_t meta_counter;
|
|
||||||
uint32_t cmem_ba;
|
|
||||||
qdf_spinlock_t dp_rx_sw_ft_lock[MAX_REO_DEST_RINGS];
|
|
||||||
qdf_event_t cmem_resp_event;
|
|
||||||
bool flow_deletion_supported;
|
|
||||||
bool fst_in_cmem;
|
|
||||||
qdf_atomic_t pm_suspended;
|
|
||||||
bool fst_wq_defer;
|
|
||||||
/* Hash based routing supported */
|
|
||||||
bool rx_hash_enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* WLAN_SUPPORT_RX_FISA */
|
|
||||||
#endif /* WLAN_SUPPORT_RX_FLOW_TAG || WLAN_SUPPORT_RX_FISA */
|
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_STATS_EXT
|
#ifdef WLAN_FEATURE_STATS_EXT
|
||||||
/**
|
/**
|
||||||
|
@@ -429,11 +429,6 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
|
|||||||
DP_SOC_PARAM_MSDU_EXCEPTION_DESC,
|
DP_SOC_PARAM_MSDU_EXCEPTION_DESC,
|
||||||
tgt_hdl->info.target_caps.num_msdu_desc);
|
tgt_hdl->info.target_caps.num_msdu_desc);
|
||||||
|
|
||||||
/* Send CMEM FSE support to DP layer */
|
|
||||||
if (wmi_service_enabled(wmi_handle, wmi_service_fse_cmem_alloc_support))
|
|
||||||
cdp_soc_set_param(wlan_psoc_get_dp_handle(psoc),
|
|
||||||
DP_SOC_PARAM_CMEM_FSE_SUPPORT, 1);
|
|
||||||
|
|
||||||
/* Send multi_peer_group support to DP layer */
|
/* Send multi_peer_group support to DP layer */
|
||||||
if (wmi_service_enabled(wmi_handle,
|
if (wmi_service_enabled(wmi_handle,
|
||||||
wmi_service_multi_peer_group_cmd_support))
|
wmi_service_multi_peer_group_cmd_support))
|
||||||
|
Reference in New Issue
Block a user