qcacmn: Set default value for REO dest ctrl register

Currently in some case we are receiving non error packets on REO2TCL
ring, which is causing issue.

Fix is to set DEST_RING_MAPPING_0 to SW1 for REO dest ctrl
register, So that non error packets with reo_destination_indication
with 0x0 in the reo entrance ring will be routed to SW1 ring.

Change-Id: I67f78f35e7dba899943307902d99d0325a60498f
CRs-Fixed: 3150186
This commit is contained in:
Amit Mehta
2022-03-15 23:30:19 -07:00
committed by Madan Koyyalamudi
szülő a95a769c93
commit d2199b7a99
16 fájl változott, egészen pontosan 79 új sor hozzáadva és 3 régi sor törölve

Fájl megtekintése

@@ -1501,7 +1501,7 @@ int dp_ipa_ring_resource_setup(struct dp_soc *soc,
* Set DEST_RING_MAPPING_4 to SW2 as default value for
* DESTINATION_RING_CTRL_IX_0.
*/
ix0_map[0] = REO_REMAP_TCL;
ix0_map[0] = REO_REMAP_SW1;
ix0_map[1] = REO_REMAP_SW1;
ix0_map[2] = REO_REMAP_SW2;
ix0_map[3] = REO_REMAP_SW3;
@@ -1778,7 +1778,7 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
return QDF_STATUS_E_AGAIN;
/* Call HAL API to remap REO rings to REO2IPA ring */
ix_map[0] = REO_REMAP_TCL;
ix_map[0] = REO_REMAP_SW1;
ix_map[1] = REO_REMAP_SW4;
ix_map[2] = REO_REMAP_SW1;
ix_map[3] = REO_REMAP_SW4;
@@ -1840,7 +1840,7 @@ QDF_STATUS dp_ipa_disable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
if (!dp_ipa_is_target_ready(soc))
return QDF_STATUS_E_AGAIN;
ix0_map[0] = REO_REMAP_TCL;
ix0_map[0] = REO_REMAP_SW1;
ix0_map[1] = REO_REMAP_SW1;
ix0_map[2] = REO_REMAP_SW2;
ix0_map[3] = REO_REMAP_SW3;

Fájl megtekintése

@@ -4247,6 +4247,7 @@ bool dp_reo_remap_config(struct dp_soc *soc, uint32_t *remap0,
soc->num_reo_dest_rings -
USE_1_IPA_RX_REO_RING, remap1,
remap2);
hal_compute_reo_remap_ix0(soc->hal_soc, remap0);
break;
default:
dp_err("unkonwn arch_id 0x%x", soc->arch_id);
@@ -4457,6 +4458,7 @@ bool dp_reo_remap_config(struct dp_soc *soc,
num = dp_reo_ring_selection(value, ring);
hal_compute_reo_remap_ix2_ix3(soc->hal_soc, ring,
num, remap1, remap2);
hal_compute_reo_remap_ix0(soc->hal_soc, remap0);
break;
case dp_nss_cfg_first_radio:

Fájl megtekintése

@@ -2550,6 +2550,15 @@ void hal_compute_reo_remap_ix2_ix3(hal_soc_handle_t hal_soc_hdl,
num_rings, remap1, remap2);
}
static inline
void hal_compute_reo_remap_ix0(hal_soc_handle_t hal_soc_hdl, uint32_t *remap0)
{
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
if (hal_soc->ops->hal_compute_reo_remap_ix0)
hal_soc->ops->hal_compute_reo_remap_ix0(remap0);
}
/**
* hal_setup_link_idle_list - Setup scattered idle list using the
* buffer list provided

Fájl megtekintése

@@ -929,6 +929,7 @@ struct hal_hw_txrx_ops {
uint32_t num_rings,
uint32_t *remap1,
uint32_t *remap2);
void (*hal_compute_reo_remap_ix0)(uint32_t *remap0);
uint32_t (*hal_rx_flow_setup_cmem_fse)(
struct hal_soc *soc, uint32_t cmem_ba,
uint32_t table_offset, uint8_t *rx_flow);

Fájl megtekintése

@@ -1872,6 +1872,7 @@ static void hal_hw_txrx_ops_attach_kiwi(struct hal_soc *hal_soc)
hal_soc->ops->hal_get_first_wow_wakeup_packet =
hal_get_first_wow_wakeup_packet_kiwi;
#endif
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_kiwi[] = {

Fájl megtekintése

@@ -2251,6 +2251,17 @@ void hal_reo_setup_generic_li(struct hal_soc *soc, void *reoparams)
* 7: NOT_USED.
*/
if (reo_params->rx_hash_enabled) {
if (reo_params->remap0)
HAL_REG_WRITE(soc,
HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR(
SEQ_WCSS_UMAC_REO_REG_OFFSET),
reo_params->remap0);
hal_debug("HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR 0x%x",
HAL_REG_READ(soc,
HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR(
SEQ_WCSS_UMAC_REO_REG_OFFSET)));
HAL_REG_WRITE(soc,
HWIO_REO_R0_DESTINATION_RING_CTRL_IX_2_ADDR(
SEQ_WCSS_UMAC_REO_REG_OFFSET),

Fájl megtekintése

@@ -1841,6 +1841,7 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc)
hal_soc->ops->hal_compute_reo_remap_ix2_ix3 = hal_compute_reo_remap_ix2_ix3_5018;
hal_soc->ops->hal_setup_link_idle_list =
hal_setup_link_idle_list_generic_li;
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_5018[] = {

Fájl megtekintése

@@ -1237,6 +1237,7 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc)
hal_soc->ops->hal_get_first_wow_wakeup_packet =
hal_get_first_wow_wakeup_packet_6290;
#endif
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_6290[] = {

Fájl megtekintése

@@ -1100,6 +1100,19 @@ void hal_compute_reo_remap_ix2_ix3_6390(uint32_t *ring, uint32_t num_rings,
}
}
static
void hal_compute_reo_remap_ix0_6390(uint32_t *remap0)
{
*remap0 = HAL_REO_REMAP_IX0(REO_REMAP_SW1, 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);
}
#ifdef WLAN_FEATURE_MARK_FIRST_WAKEUP_PACKET
/**
* hal_get_first_wow_wakeup_packet_6390(): Function to get if the buffer
@@ -1293,6 +1306,8 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc)
hal_soc->ops->hal_get_first_wow_wakeup_packet =
hal_get_first_wow_wakeup_packet_6390;
#endif
hal_soc->ops->hal_compute_reo_remap_ix0 =
hal_compute_reo_remap_ix0_6390;
};
struct hal_hw_srng_config hw_srng_table_6390[] = {

Fájl megtekintése

@@ -1681,6 +1681,19 @@ void hal_compute_reo_remap_ix2_ix3_6490(uint32_t *ring, uint32_t num_rings,
}
}
static
void hal_compute_reo_remap_ix0_6490(uint32_t *remap0)
{
*remap0 = HAL_REO_REMAP_IX0(REO_REMAP_SW1, 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);
}
#ifdef WLAN_FEATURE_MARK_FIRST_WAKEUP_PACKET
/**
* hal_get_first_wow_wakeup_packet_6490(): Function to retrieve
@@ -1897,6 +1910,8 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc)
hal_soc->ops->hal_get_first_wow_wakeup_packet =
hal_get_first_wow_wakeup_packet_6490;
#endif
hal_soc->ops->hal_compute_reo_remap_ix0 =
hal_compute_reo_remap_ix0_6490;
};
struct hal_hw_srng_config hw_srng_table_6490[] = {

Fájl megtekintése

@@ -1834,6 +1834,19 @@ void hal_compute_reo_remap_ix2_ix3_6750(uint32_t *ring, uint32_t num_rings,
}
}
static
void hal_compute_reo_remap_ix0_6750(uint32_t *remap0)
{
*remap0 = HAL_REO_REMAP_IX0(REO_REMAP_SW1, 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);
}
#ifdef WLAN_FEATURE_MARK_FIRST_WAKEUP_PACKET
/**
* hal_get_first_wow_wakeup_packet_6750(): Function to retrieve
@@ -2055,6 +2068,8 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc)
hal_soc->ops->hal_get_first_wow_wakeup_packet =
hal_get_first_wow_wakeup_packet_6750;
#endif
hal_soc->ops->hal_compute_reo_remap_ix0 =
hal_compute_reo_remap_ix0_6750;
};
struct hal_hw_srng_config hw_srng_table_6750[] = {

Fájl megtekintése

@@ -1406,6 +1406,7 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc)
hal_compute_reo_remap_ix2_ix3_8074v1;
hal_soc->ops->hal_setup_link_idle_list =
hal_setup_link_idle_list_generic_li;
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_8074[] = {

Fájl megtekintése

@@ -1407,6 +1407,7 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc)
hal_compute_reo_remap_ix2_ix3_8074v2;
hal_soc->ops->hal_setup_link_idle_list =
hal_setup_link_idle_list_generic_li;
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_8074v2[] = {

Fájl megtekintése

@@ -1900,6 +1900,7 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc)
hal_compute_reo_remap_ix2_ix3_6122;
hal_soc->ops->hal_setup_link_idle_list =
hal_setup_link_idle_list_generic_li;
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_6122[] = {

Fájl megtekintése

@@ -1945,6 +1945,7 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc)
hal_compute_reo_remap_ix2_ix3_9000;
hal_soc->ops->hal_setup_link_idle_list =
hal_setup_link_idle_list_generic_li;
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_9000[] = {

Fájl megtekintése

@@ -1929,6 +1929,7 @@ static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
hal_soc->ops->hal_txmon_status_free_buffer =
hal_txmon_status_free_buffer_generic_be;
#endif /* QCA_MONITOR_2_0_SUPPORT */
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
};
struct hal_hw_srng_config hw_srng_table_9224[] = {