qcacmn: REO descriptor changes
Disable CHK_2K_MODE and OOR_MODE in REO descriptor. Also set RTY bit for non-BA TID queues as temporary WAR for duplicate detection issue. Change-Id: Ifa51c20ffbfe31c807d4e7f99014cb76f411e066
This commit is contained in:

committed by
qcabuildsw

parent
2fab33dcd4
commit
e8380bbece
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -615,13 +615,10 @@ dp_rx_wbm_err_process(struct dp_soc *soc, void *hal_ring, uint32_t quota)
|
|||||||
* queue descriptor
|
* queue descriptor
|
||||||
*/
|
*/
|
||||||
case HAL_REO_ERR_QUEUE_DESC_ADDR_0:
|
case HAL_REO_ERR_QUEUE_DESC_ADDR_0:
|
||||||
case HAL_REO_ERR_REGULAR_FRAME_2K_JUMP:
|
|
||||||
case HAL_REO_ERR_2K_ERROR_HANDLING_FLAG_SET:
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP,
|
QDF_TRACE(QDF_MODULE_ID_DP,
|
||||||
QDF_TRACE_LEVEL_WARN,
|
QDF_TRACE_LEVEL_WARN,
|
||||||
"Got pkt with REO ERROR: %d",
|
"Got pkt with REO ERROR: %d",
|
||||||
reo_error_code);
|
reo_error_code);
|
||||||
|
|
||||||
rx_bufs_used +=
|
rx_bufs_used +=
|
||||||
dp_rx_null_q_desc_handle(soc,
|
dp_rx_null_q_desc_handle(soc,
|
||||||
ring_desc, &head, &tail, quota);
|
ring_desc, &head, &tail, quota);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -101,12 +101,14 @@ void hal_reo_qdesc_setup(void *hal_soc, int tid, uint32_t ba_window_size,
|
|||||||
reg_val = TID_TO_WME_AC(tid);
|
reg_val = TID_TO_WME_AC(tid);
|
||||||
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, AC, reg_val);
|
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, AC, reg_val);
|
||||||
|
|
||||||
/* Check the purpose of RTY field.
|
/* Set RTY bit for non-BA case. Duplicate detection is currently not
|
||||||
* HW documentation says "Retry bit is checked if this bit is set"
|
* done by HW in non-BA case if RTY bit is not set.
|
||||||
|
* TODO: This is a temporary War and should be removed once HW fix is
|
||||||
|
* made to check and discard duplicates even if RTY bit is not set.
|
||||||
*/
|
*/
|
||||||
|
if (ba_window_size == 1)
|
||||||
|
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, RTY, 1);
|
||||||
|
|
||||||
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, CHK_2K_MODE, 1);
|
|
||||||
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, OOR_MODE, 1);
|
|
||||||
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, BA_WINDOW_SIZE,
|
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, BA_WINDOW_SIZE,
|
||||||
ba_window_size - 1);
|
ba_window_size - 1);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user