Procházet zdrojové kódy

qcacmn: Add support for DS UL processing

Add support for PPE-DS REO2PPE ring processing

Change-Id: I74f4195ce4a58d1afaef132257b969ce38a65e1c
CRs-Fixed: 3278270
Manish Verma před 2 roky
rodič
revize
bc05063ebb

+ 60 - 0
hal/wifi3.0/hal_api.h

@@ -3304,4 +3304,64 @@ void *hal_srng_dst_get_next_32_byte_desc(hal_soc_handle_t hal_soc_hdl,
 
 	return (void *)last_prefetched_hw_desc;
 }
+
+/**
+ * hal_srng_src_set_hp() - set head idx.
+ * @hal_soc_hdl: HAL SOC handle
+ * @idx: head idx
+ *
+ * return: none
+ */
+static inline
+void hal_srng_src_set_hp(hal_ring_handle_t hal_ring_hdl, uint16_t idx)
+{
+	struct hal_srng *srng = (struct hal_srng *)hal_ring_hdl;
+
+	srng->u.src_ring.hp = idx * srng->entry_size;
+}
+
+/**
+ * hal_srng_dst_set_tp() - set tail idx.
+ * @hal_soc_hdl: HAL SOC handle
+ * @idx: tail idx
+ *
+ * return: none
+ */
+static inline
+void hal_srng_dst_set_tp(hal_ring_handle_t hal_ring_hdl, uint16_t idx)
+{
+	struct hal_srng *srng = (struct hal_srng *)hal_ring_hdl;
+
+	srng->u.dst_ring.tp = idx * srng->entry_size;
+}
+
+/**
+ * hal_srng_src_get_tpidx() - get tail idx
+ * @hal_soc_hdl: HAL SOC handle
+ *
+ * return: tail idx
+ */
+static inline
+uint16_t hal_srng_src_get_tpidx(hal_ring_handle_t hal_ring_hdl)
+{
+	struct hal_srng *srng = (struct hal_srng *)hal_ring_hdl;
+	uint32_t tp = *(volatile uint32_t *)(srng->u.src_ring.tp_addr);
+
+	return tp / srng->entry_size;
+}
+
+/**
+ * hal_srng_dst_get_hpidx() - get head idx
+ * @hal_soc_hdl: HAL SOC handle
+ *
+ * return: head idx
+ */
+static inline
+uint16_t hal_srng_dst_get_hpidx(hal_ring_handle_t hal_ring_hdl)
+{
+	struct hal_srng *srng = (struct hal_srng *)hal_ring_hdl;
+	uint32_t hp = *(volatile uint32_t *)(srng->u.dst_ring.hp_addr);
+
+	return hp / srng->entry_size;
+}
 #endif /* _HAL_APIH_ */

+ 2 - 1
hal/wifi3.0/hal_internal.h

@@ -1470,7 +1470,8 @@ struct hal_srng *hal_ring_handle_to_hal_srng(hal_ring_handle_t hal_ring)
 /*
  * REO2PPE destination indication
  */
-#define REO2PPE_DST_IND 11
+#define REO2PPE_DST_IND 6
+#define REO2PPE_DST_RING 11
 #define REO2PPE_RULE_FAIL_FB 0x2000
 
 /**

+ 1 - 1
hal/wifi3.0/qcn9224/hal_9224.h

@@ -1422,7 +1422,7 @@ void hal_compute_reo_remap_ix0_9224(struct hal_soc *soc)
 			      (REO_REG_REG_BASE));
 
 	remap0 &= ~(HAL_REO_REMAP_IX0(0xF, 6));
-	remap0 |= HAL_REO_REMAP_IX0(REO2PPE_DST_IND, 6);
+	remap0 |= HAL_REO_REMAP_IX0(REO2PPE_DST_RING, 6);
 
 	HAL_REG_WRITE(soc, HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR
 		      (REO_REG_REG_BASE), remap0);

+ 2 - 2
wlan_cfg/cfg_dp.h

@@ -442,9 +442,9 @@
 #define WLAN_CFG_RADIO_DEFAULT_REO_MIN 0x1
 #define WLAN_CFG_RADIO_DEFAULT_REO_MAX 0x4
 
-#define WLAN_CFG_REO2PPE_RING_SIZE 1024
+#define WLAN_CFG_REO2PPE_RING_SIZE 2048
 #define WLAN_CFG_REO2PPE_RING_SIZE_MIN 64
-#define WLAN_CFG_REO2PPE_RING_SIZE_MAX 1024
+#define WLAN_CFG_REO2PPE_RING_SIZE_MAX 16384
 
 #define WLAN_CFG_PPE2TCL_RING_SIZE 1024
 #define WLAN_CFG_PPE2TCL_RING_SIZE_MIN 64