From e8380bbeceed9988c8640a64d003894cf173834c Mon Sep 17 00:00:00 2001 From: Karunakar Dasineni Date: Sun, 11 Dec 2016 00:46:32 -0800 Subject: [PATCH] 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 --- dp/wifi3.0/dp_rx_err.c | 5 +---- hal/wifi3.0/hal_rx.c | 12 +++++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index f719f06a4e..a7c218ccf1 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -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 * 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 */ 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_LEVEL_WARN, "Got pkt with REO ERROR: %d", reo_error_code); - rx_bufs_used += dp_rx_null_q_desc_handle(soc, ring_desc, &head, &tail, quota); diff --git a/hal/wifi3.0/hal_rx.c b/hal/wifi3.0/hal_rx.c index 1dc9dfdca6..8f4b7a0d07 100644 --- a/hal/wifi3.0/hal_rx.c +++ b/hal/wifi3.0/hal_rx.c @@ -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 * 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); HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE_2, AC, reg_val); - /* Check the purpose of RTY field. - * HW documentation says "Retry bit is checked if this bit is set" + /* Set RTY bit for non-BA case. Duplicate detection is currently not + * 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, ba_window_size - 1);