|
@@ -1245,13 +1245,14 @@ struct dp_soc {
|
|
|
* invalidation bug is enabled or not
|
|
|
*/
|
|
|
bool is_rx_fse_full_cache_invalidate_war_enabled;
|
|
|
-#ifdef WLAN_SUPPORT_RX_FLOW_TAG
|
|
|
+#if defined(WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)
|
|
|
/**
|
|
|
* Pointer to DP RX Flow FST at SOC level if
|
|
|
* is_rx_flow_search_table_per_pdev is false
|
|
|
+ * TBD: rx_fst[num_macs] if we decide to have per mac FST
|
|
|
*/
|
|
|
struct dp_rx_fst *rx_fst;
|
|
|
-#endif /* WLAN_SUPPORT_RX_FLOW_TAG */
|
|
|
+#endif /* WLAN_SUPPORT_RX_FLOW_TAG || WLAN_SUPPORT_RX_FISA */
|
|
|
};
|
|
|
|
|
|
#ifdef IPA_OFFLOAD
|
|
@@ -2193,9 +2194,10 @@ struct dp_tx_me_buf_t {
|
|
|
uint8_t data[QDF_MAC_ADDR_SIZE];
|
|
|
};
|
|
|
|
|
|
-#ifdef WLAN_SUPPORT_RX_FLOW_TAG
|
|
|
+#if defined(WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)
|
|
|
struct hal_rx_fst;
|
|
|
|
|
|
+#ifdef WLAN_SUPPORT_RX_FLOW_TAG
|
|
|
struct dp_rx_fse {
|
|
|
/* HAL Rx Flow Search Entry which matches HW definition */
|
|
|
void *hal_rx_fse;
|
|
@@ -2206,9 +2208,9 @@ struct dp_rx_fse {
|
|
|
/* Stats tracking for this flow */
|
|
|
struct cdp_flow_stats stats;
|
|
|
/* Flag indicating whether flow is IPv4 address tuple */
|
|
|
- bool is_ipv4_addr_entry;
|
|
|
+ uint8_t is_ipv4_addr_entry;
|
|
|
/* Flag indicating whether flow is valid */
|
|
|
- bool is_valid;
|
|
|
+ uint8_t is_valid;
|
|
|
};
|
|
|
|
|
|
struct dp_rx_fst {
|
|
@@ -2236,6 +2238,47 @@ struct dp_rx_fst {
|
|
|
/* Flag to indicate completion of FSE setup in HW/FW */
|
|
|
bool fse_setup_done;
|
|
|
};
|
|
|
-#endif /* WLAN_SUPPORT_RX_FLOW_TAG */
|
|
|
+
|
|
|
+#define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_rx_fse)
|
|
|
+#elif WLAN_SUPPORT_RX_FISA
|
|
|
+struct dp_fisa_rx_sw_ft {
|
|
|
+ /* HAL Rx Flow Search Entry which matches HW definition */
|
|
|
+ void *hal_rx_fse;
|
|
|
+ /* Toeplitz hash value */
|
|
|
+ uint32_t flow_hash;
|
|
|
+ /* 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;
|
|
|
+ qdf_nbuf_t *head_skb;
|
|
|
+};
|
|
|
+
|
|
|
+#define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_fisa_rx_sw_ft)
|
|
|
+
|
|
|
+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;
|
|
|
+};
|
|
|
+
|
|
|
+#endif /* WLAN_SUPPORT_RX_FISA */
|
|
|
+#endif /* WLAN_SUPPORT_RX_FLOW_TAG || WLAN_SUPPORT_RX_FISA */
|
|
|
|
|
|
#endif /* _DP_TYPES_H_ */
|