|
@@ -21,6 +21,7 @@
|
|
#include <qdf_lock.h>
|
|
#include <qdf_lock.h>
|
|
#include <hal_hw_headers.h>
|
|
#include <hal_hw_headers.h>
|
|
#include <hal_api.h>
|
|
#include <hal_api.h>
|
|
|
|
+#include <hal_reo.h>
|
|
#include <hif.h>
|
|
#include <hif.h>
|
|
#include <htt.h>
|
|
#include <htt.h>
|
|
#include <wdi_event.h>
|
|
#include <wdi_event.h>
|
|
@@ -406,8 +407,7 @@ static int dp_ipa_tx_alt_pool_attach(struct dp_soc *soc)
|
|
struct hal_srng *wbm_srng = (struct hal_srng *)
|
|
struct hal_srng *wbm_srng = (struct hal_srng *)
|
|
soc->tx_comp_ring[IPA_TX_ALT_COMP_RING_IDX].hal_srng;
|
|
soc->tx_comp_ring[IPA_TX_ALT_COMP_RING_IDX].hal_srng;
|
|
struct hal_srng_params srng_params;
|
|
struct hal_srng_params srng_params;
|
|
- uint32_t paddr_lo;
|
|
|
|
- uint32_t paddr_hi;
|
|
|
|
|
|
+ uint32_t wbm_sw0_bm_id = soc->wbm_sw0_bm_id;
|
|
void *ring_entry;
|
|
void *ring_entry;
|
|
int num_entries;
|
|
int num_entries;
|
|
qdf_nbuf_t nbuf;
|
|
qdf_nbuf_t nbuf;
|
|
@@ -478,11 +478,9 @@ static int dp_ipa_tx_alt_pool_attach(struct dp_soc *soc)
|
|
qdf_mem_dp_tx_skb_cnt_inc();
|
|
qdf_mem_dp_tx_skb_cnt_inc();
|
|
qdf_mem_dp_tx_skb_inc(qdf_nbuf_get_end_offset(nbuf));
|
|
qdf_mem_dp_tx_skb_inc(qdf_nbuf_get_end_offset(nbuf));
|
|
|
|
|
|
- paddr_lo = ((uint64_t)buffer_paddr & 0x00000000ffffffff);
|
|
|
|
- paddr_hi = ((uint64_t)buffer_paddr & 0x0000001f00000000) >> 32;
|
|
|
|
- HAL_RXDMA_PADDR_LO_SET(ring_entry, paddr_lo);
|
|
|
|
- HAL_RXDMA_PADDR_HI_SET(ring_entry, paddr_hi);
|
|
|
|
- HAL_RXDMA_MANAGER_SET(ring_entry, HAL_WBM_SW4_BM_ID);
|
|
|
|
|
|
+ hal_rxdma_buff_addr_info_set(soc->hal_soc, ring_entry,
|
|
|
|
+ buffer_paddr, 0,
|
|
|
|
+ HAL_WBM_SW4_BM_ID(wbm_sw0_bm_id));
|
|
|
|
|
|
soc->ipa_uc_tx_rsc_alt.tx_buf_pool_vaddr_unaligned[
|
|
soc->ipa_uc_tx_rsc_alt.tx_buf_pool_vaddr_unaligned[
|
|
tx_buffer_count] = (void *)nbuf;
|
|
tx_buffer_count] = (void *)nbuf;
|
|
@@ -763,7 +761,8 @@ static void dp_ipa_wdi_tx_alt_pipe_params(struct dp_soc *soc,
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
(QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(tx) + 1);
|
|
(QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(tx) + 1);
|
|
- tcl_desc_ptr->buf_addr_info.return_buffer_manager = HAL_WBM_SW4_BM_ID;
|
|
|
|
|
|
+ tcl_desc_ptr->buf_addr_info.return_buffer_manager =
|
|
|
|
+ HAL_WBM_SW4_BM_ID(soc->wbm_sw0_bm_id);
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addry_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addry_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
@@ -814,7 +813,8 @@ dp_ipa_wdi_tx_alt_pipe_smmu_params(struct dp_soc *soc,
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
(QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(tx_smmu) + 1);
|
|
(QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(tx_smmu) + 1);
|
|
- tcl_desc_ptr->buf_addr_info.return_buffer_manager = HAL_WBM_SW4_BM_ID;
|
|
|
|
|
|
+ tcl_desc_ptr->buf_addr_info.return_buffer_manager =
|
|
|
|
+ HAL_WBM_SW4_BM_ID(soc->wbm_sw0_bm_id);
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addry_en = 1; /* Address Y search enable in ASE */
|
|
tcl_desc_ptr->addry_en = 1; /* Address Y search enable in ASE */
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
@@ -1192,8 +1192,6 @@ static int dp_tx_ipa_uc_attach(struct dp_soc *soc, struct dp_pdev *pdev)
|
|
struct hal_srng *wbm_srng = (struct hal_srng *)
|
|
struct hal_srng *wbm_srng = (struct hal_srng *)
|
|
soc->tx_comp_ring[IPA_TX_COMP_RING_IDX].hal_srng;
|
|
soc->tx_comp_ring[IPA_TX_COMP_RING_IDX].hal_srng;
|
|
struct hal_srng_params srng_params;
|
|
struct hal_srng_params srng_params;
|
|
- uint32_t paddr_lo;
|
|
|
|
- uint32_t paddr_hi;
|
|
|
|
void *ring_entry;
|
|
void *ring_entry;
|
|
int num_entries;
|
|
int num_entries;
|
|
qdf_nbuf_t nbuf;
|
|
qdf_nbuf_t nbuf;
|
|
@@ -1262,12 +1260,14 @@ static int dp_tx_ipa_uc_attach(struct dp_soc *soc, struct dp_pdev *pdev)
|
|
qdf_mem_dp_tx_skb_cnt_inc();
|
|
qdf_mem_dp_tx_skb_cnt_inc();
|
|
qdf_mem_dp_tx_skb_inc(qdf_nbuf_get_end_offset(nbuf));
|
|
qdf_mem_dp_tx_skb_inc(qdf_nbuf_get_end_offset(nbuf));
|
|
|
|
|
|
- paddr_lo = ((uint64_t)buffer_paddr & 0x00000000ffffffff);
|
|
|
|
- paddr_hi = ((uint64_t)buffer_paddr & 0x0000001f00000000) >> 32;
|
|
|
|
- HAL_RXDMA_PADDR_LO_SET(ring_entry, paddr_lo);
|
|
|
|
- HAL_RXDMA_PADDR_HI_SET(ring_entry, paddr_hi);
|
|
|
|
- HAL_RXDMA_MANAGER_SET(ring_entry, (IPA_TCL_DATA_RING_IDX +
|
|
|
|
- HAL_WBM_SW0_BM_ID));
|
|
|
|
|
|
+ /*
|
|
|
|
+ * TODO - WCN7850 code can directly call the be handler
|
|
|
|
+ * instead of hal soc ops.
|
|
|
|
+ */
|
|
|
|
+ hal_rxdma_buff_addr_info_set(soc->hal_soc, ring_entry,
|
|
|
|
+ buffer_paddr, 0,
|
|
|
|
+ (IPA_TCL_DATA_RING_IDX +
|
|
|
|
+ soc->wbm_sw0_bm_id));
|
|
|
|
|
|
soc->ipa_uc_tx_rsc.tx_buf_pool_vaddr_unaligned[tx_buffer_count]
|
|
soc->ipa_uc_tx_rsc.tx_buf_pool_vaddr_unaligned[tx_buffer_count]
|
|
= (void *)nbuf;
|
|
= (void *)nbuf;
|
|
@@ -1361,6 +1361,7 @@ int dp_ipa_ring_resource_setup(struct dp_soc *soc,
|
|
qdf_dma_addr_t hp_addr;
|
|
qdf_dma_addr_t hp_addr;
|
|
unsigned long addr_offset, dev_base_paddr;
|
|
unsigned long addr_offset, dev_base_paddr;
|
|
uint32_t ix0;
|
|
uint32_t ix0;
|
|
|
|
+ uint8_t ix0_map[8];
|
|
|
|
|
|
if (!wlan_cfg_is_ipa_enabled(soc->wlan_cfg_ctx))
|
|
if (!wlan_cfg_is_ipa_enabled(soc->wlan_cfg_ctx))
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
@@ -1485,14 +1486,17 @@ int dp_ipa_ring_resource_setup(struct dp_soc *soc,
|
|
* Set DEST_RING_MAPPING_4 to SW2 as default value for
|
|
* Set DEST_RING_MAPPING_4 to SW2 as default value for
|
|
* DESTINATION_RING_CTRL_IX_0.
|
|
* DESTINATION_RING_CTRL_IX_0.
|
|
*/
|
|
*/
|
|
- ix0 = HAL_REO_REMAP_IX0(REO_REMAP_TCL, 0) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW1, 1) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW2, 2) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW3, 3) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW2, 4) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_RELEASE, 5) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_FW, 6) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_FW, 7);
|
|
|
|
|
|
+ ix0_map[0] = REO_REMAP_TCL;
|
|
|
|
+ ix0_map[1] = REO_REMAP_SW1;
|
|
|
|
+ ix0_map[2] = REO_REMAP_SW2;
|
|
|
|
+ ix0_map[3] = REO_REMAP_SW3;
|
|
|
|
+ ix0_map[4] = REO_REMAP_SW2;
|
|
|
|
+ ix0_map[5] = REO_REMAP_RELEASE;
|
|
|
|
+ ix0_map[6] = REO_REMAP_FW;
|
|
|
|
+ ix0_map[7] = REO_REMAP_FW;
|
|
|
|
+
|
|
|
|
+ ix0 = hal_gen_reo_remap_val(soc->hal_soc, HAL_REO_REMAP_REG_IX0,
|
|
|
|
+ ix0_map);
|
|
|
|
|
|
hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, NULL, NULL);
|
|
hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, NULL, NULL);
|
|
|
|
|
|
@@ -1696,6 +1700,7 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
|
dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
|
uint32_t ix0;
|
|
uint32_t ix0;
|
|
uint32_t ix2;
|
|
uint32_t ix2;
|
|
|
|
+ uint8_t ix_map[8];
|
|
|
|
|
|
if (!pdev) {
|
|
if (!pdev) {
|
|
dp_err("Invalid instance");
|
|
dp_err("Invalid instance");
|
|
@@ -1709,24 +1714,30 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
return QDF_STATUS_E_AGAIN;
|
|
return QDF_STATUS_E_AGAIN;
|
|
|
|
|
|
/* Call HAL API to remap REO rings to REO2IPA ring */
|
|
/* Call HAL API to remap REO rings to REO2IPA ring */
|
|
- ix0 = HAL_REO_REMAP_IX0(REO_REMAP_TCL, 0) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW4, 1) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW1, 2) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW4, 3) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW4, 4) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_RELEASE, 5) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_FW, 6) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_FW, 7);
|
|
|
|
|
|
+ ix_map[0] = REO_REMAP_TCL;
|
|
|
|
+ ix_map[1] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[2] = REO_REMAP_SW1;
|
|
|
|
+ ix_map[3] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[4] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[5] = REO_REMAP_RELEASE;
|
|
|
|
+ ix_map[6] = REO_REMAP_FW;
|
|
|
|
+ ix_map[7] = REO_REMAP_FW;
|
|
|
|
+
|
|
|
|
+ ix0 = hal_gen_reo_remap_val(soc->hal_soc, HAL_REO_REMAP_REG_IX0,
|
|
|
|
+ ix_map);
|
|
|
|
|
|
if (wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx)) {
|
|
if (wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx)) {
|
|
- ix2 = HAL_REO_REMAP_IX2(REO_REMAP_SW4, 16) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 17) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 18) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 19) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 20) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 21) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 22) |
|
|
|
|
- HAL_REO_REMAP_IX2(REO_REMAP_SW4, 23);
|
|
|
|
|
|
+ ix_map[0] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[1] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[2] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[3] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[4] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[5] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[6] = REO_REMAP_SW4;
|
|
|
|
+ ix_map[7] = REO_REMAP_SW4;
|
|
|
|
+
|
|
|
|
+ ix2 = hal_gen_reo_remap_val(soc->hal_soc, HAL_REO_REMAP_REG_IX2,
|
|
|
|
+ ix_map);
|
|
|
|
|
|
hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL,
|
|
hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL,
|
|
&ix2, &ix2);
|
|
&ix2, &ix2);
|
|
@@ -1745,6 +1756,7 @@ QDF_STATUS dp_ipa_disable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
|
struct dp_pdev *pdev =
|
|
struct dp_pdev *pdev =
|
|
dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
|
dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
|
|
|
+ uint8_t ix0_map[8];
|
|
uint32_t ix0;
|
|
uint32_t ix0;
|
|
uint32_t ix2;
|
|
uint32_t ix2;
|
|
uint32_t ix3;
|
|
uint32_t ix3;
|
|
@@ -1760,15 +1772,18 @@ QDF_STATUS dp_ipa_disable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
if (!hif_is_target_ready(HIF_GET_SOFTC(soc->hif_handle)))
|
|
if (!hif_is_target_ready(HIF_GET_SOFTC(soc->hif_handle)))
|
|
return QDF_STATUS_E_AGAIN;
|
|
return QDF_STATUS_E_AGAIN;
|
|
|
|
|
|
|
|
+ ix0_map[0] = REO_REMAP_TCL;
|
|
|
|
+ ix0_map[1] = REO_REMAP_SW1;
|
|
|
|
+ ix0_map[2] = REO_REMAP_SW2;
|
|
|
|
+ ix0_map[3] = REO_REMAP_SW3;
|
|
|
|
+ ix0_map[4] = REO_REMAP_SW2;
|
|
|
|
+ ix0_map[5] = REO_REMAP_RELEASE;
|
|
|
|
+ ix0_map[6] = REO_REMAP_FW;
|
|
|
|
+ ix0_map[7] = REO_REMAP_FW;
|
|
|
|
+
|
|
/* Call HAL API to remap REO rings to REO2IPA ring */
|
|
/* Call HAL API to remap REO rings to REO2IPA ring */
|
|
- ix0 = HAL_REO_REMAP_IX0(REO_REMAP_TCL, 0) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW1, 1) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW2, 2) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW3, 3) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_SW2, 4) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_RELEASE, 5) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_FW, 6) |
|
|
|
|
- HAL_REO_REMAP_IX0(REO_REMAP_FW, 7);
|
|
|
|
|
|
+ ix0 = hal_gen_reo_remap_val(soc->hal_soc, HAL_REO_REMAP_REG_IX0,
|
|
|
|
+ ix0_map);
|
|
|
|
|
|
if (wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx)) {
|
|
if (wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx)) {
|
|
dp_reo_remap_config(soc, &ix2, &ix3);
|
|
dp_reo_remap_config(soc, &ix2, &ix3);
|
|
@@ -1859,14 +1874,20 @@ static void dp_ipa_wdi_tx_params(struct dp_soc *soc,
|
|
desc_addr =
|
|
desc_addr =
|
|
(uint8_t *)QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(tx);
|
|
(uint8_t *)QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(tx);
|
|
desc_size = sizeof(struct tcl_data_cmd);
|
|
desc_size = sizeof(struct tcl_data_cmd);
|
|
|
|
+#ifndef DP_BE_WAR
|
|
|
|
+ /* TODO - WCN7850 does not have these fields */
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
|
|
+#endif
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
(QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(tx) + 1);
|
|
(QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(tx) + 1);
|
|
tcl_desc_ptr->buf_addr_info.return_buffer_manager =
|
|
tcl_desc_ptr->buf_addr_info.return_buffer_manager =
|
|
- HAL_RX_BUF_RBM_SW2_BM;
|
|
|
|
|
|
+ HAL_RX_BUF_RBM_SW2_BM(soc->wbm_sw0_bm_id);
|
|
|
|
+#ifndef DP_BE_WAR
|
|
|
|
+ /* TODO - WCN7850 does not have these fields */
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
tcl_desc_ptr->packet_offset = 2; /* padding for alignment */
|
|
tcl_desc_ptr->packet_offset = 2; /* padding for alignment */
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
static void dp_ipa_wdi_rx_params(struct dp_soc *soc,
|
|
static void dp_ipa_wdi_rx_params(struct dp_soc *soc,
|
|
@@ -1906,7 +1927,7 @@ static void dp_ipa_wdi_rx_params(struct dp_soc *soc,
|
|
QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(rx) = false;
|
|
QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(rx) = false;
|
|
|
|
|
|
QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(rx) =
|
|
QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(rx) =
|
|
- RX_PKT_TLVS_LEN + L3_HEADER_PADDING;
|
|
|
|
|
|
+ soc->rx_pkt_tlv_size + L3_HEADER_PADDING;
|
|
}
|
|
}
|
|
|
|
|
|
static void
|
|
static void
|
|
@@ -1956,14 +1977,20 @@ dp_ipa_wdi_tx_smmu_params(struct dp_soc *soc,
|
|
desc_addr = (uint8_t *)QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(
|
|
desc_addr = (uint8_t *)QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(
|
|
tx_smmu);
|
|
tx_smmu);
|
|
desc_size = sizeof(struct tcl_data_cmd);
|
|
desc_size = sizeof(struct tcl_data_cmd);
|
|
|
|
+#ifndef DP_BE_WAR
|
|
|
|
+ /* TODO - WCN7850 does not have these fields */
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
HAL_TX_DESC_SET_TLV_HDR(desc_addr, HAL_TX_TCL_DATA_TAG, desc_size);
|
|
|
|
+#endif
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
tcl_desc_ptr = (struct tcl_data_cmd *)
|
|
(QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(tx_smmu) + 1);
|
|
(QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(tx_smmu) + 1);
|
|
tcl_desc_ptr->buf_addr_info.return_buffer_manager =
|
|
tcl_desc_ptr->buf_addr_info.return_buffer_manager =
|
|
- HAL_RX_BUF_RBM_SW2_BM;
|
|
|
|
|
|
+ HAL_RX_BUF_RBM_SW2_BM(soc->wbm_sw0_bm_id);
|
|
|
|
+#ifndef DP_BE_WAR
|
|
|
|
+ /* TODO - WCN7850 does not have these fields */
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->addrx_en = 1; /* Address X search enable in ASE */
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
tcl_desc_ptr->encap_type = HAL_TX_ENCAP_TYPE_ETHERNET;
|
|
tcl_desc_ptr->packet_offset = 2; /* padding for alignment */
|
|
tcl_desc_ptr->packet_offset = 2; /* padding for alignment */
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
static void
|
|
static void
|
|
@@ -2003,7 +2030,7 @@ dp_ipa_wdi_rx_smmu_params(struct dp_soc *soc,
|
|
QDF_IPA_WDI_SETUP_INFO_SMMU_IS_EVT_RN_DB_PCIE_ADDR(rx_smmu) = false;
|
|
QDF_IPA_WDI_SETUP_INFO_SMMU_IS_EVT_RN_DB_PCIE_ADDR(rx_smmu) = false;
|
|
|
|
|
|
QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(rx_smmu) =
|
|
QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(rx_smmu) =
|
|
- RX_PKT_TLVS_LEN + L3_HEADER_PADDING;
|
|
|
|
|
|
+ soc->rx_pkt_tlv_size + L3_HEADER_PADDING;
|
|
}
|
|
}
|
|
|
|
|
|
QDF_STATUS dp_ipa_setup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
|
QDF_STATUS dp_ipa_setup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
|
@@ -2326,7 +2353,7 @@ QDF_STATUS dp_ipa_setup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
|
/* FW Head Pointer Address */
|
|
/* FW Head Pointer Address */
|
|
QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(rx) =
|
|
QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(rx) =
|
|
soc->ipa_uc_rx_rsc.ipa_rx_refill_buf_hp_paddr;
|
|
soc->ipa_uc_rx_rsc.ipa_rx_refill_buf_hp_paddr;
|
|
- QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(rx) = RX_PKT_TLVS_LEN +
|
|
|
|
|
|
+ QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(rx) = soc->rx_pkt_tlv_size +
|
|
L3_HEADER_PADDING;
|
|
L3_HEADER_PADDING;
|
|
QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(&pipe_in) = ipa_w2i_cb;
|
|
QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(&pipe_in) = ipa_w2i_cb;
|
|
QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(&pipe_in) = ipa_priv;
|
|
QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(&pipe_in) = ipa_priv;
|
|
@@ -2815,12 +2842,13 @@ static qdf_nbuf_t dp_ipa_frag_nbuf_linearize(struct dp_soc *soc,
|
|
/* first head nbuf */
|
|
/* first head nbuf */
|
|
if (is_nbuf_head) {
|
|
if (is_nbuf_head) {
|
|
qdf_mem_copy(dst_nbuf_data, src_nbuf_data,
|
|
qdf_mem_copy(dst_nbuf_data, src_nbuf_data,
|
|
- RX_PKT_TLVS_LEN);
|
|
|
|
|
|
+ soc->rx_pkt_tlv_size);
|
|
/* leave extra 2 bytes L3_HEADER_PADDING */
|
|
/* leave extra 2 bytes L3_HEADER_PADDING */
|
|
- dst_nbuf_data += (RX_PKT_TLVS_LEN + L3_HEADER_PADDING);
|
|
|
|
- src_nbuf_data += RX_PKT_TLVS_LEN;
|
|
|
|
|
|
+ dst_nbuf_data += (soc->rx_pkt_tlv_size +
|
|
|
|
+ L3_HEADER_PADDING);
|
|
|
|
+ src_nbuf_data += soc->rx_pkt_tlv_size;
|
|
copy_len = qdf_nbuf_headlen(temp_nbuf) -
|
|
copy_len = qdf_nbuf_headlen(temp_nbuf) -
|
|
- RX_PKT_TLVS_LEN;
|
|
|
|
|
|
+ soc->rx_pkt_tlv_size;
|
|
temp_nbuf = qdf_nbuf_get_ext_list(temp_nbuf);
|
|
temp_nbuf = qdf_nbuf_get_ext_list(temp_nbuf);
|
|
is_nbuf_head = false;
|
|
is_nbuf_head = false;
|
|
} else {
|
|
} else {
|