From b4a3dddcc6e174a9d2c64047036bcc24caa642c6 Mon Sep 17 00:00:00 2001 From: Rajesh Chauhan Date: Tue, 2 Jun 2020 22:54:33 -0700 Subject: [PATCH] Revert "qcacld-3.0: flush batched GRO_NORMAL packets" This reverts Change-Id: Ib3e851c0822a85c4712a1b817cc19dfecf6d0e7a. First we need to get ABI snapshot/Whitelist updated for the new kernel API being used in this change and then only we can promote this change. To unblock promotion, revert this change for now. Change-Id: I8aae0fe64623034486c9db6275a16654119c06bd CRs-Fixed: 2673959 --- core/dp/txrx3.0/dp_rx_thread.c | 16 +--------------- core/dp/txrx3.0/dp_txrx.h | 15 --------------- core/hdd/src/wlan_hdd_tx_rx.c | 26 ++++++-------------------- 3 files changed, 7 insertions(+), 50 deletions(-) diff --git a/core/dp/txrx3.0/dp_rx_thread.c b/core/dp/txrx3.0/dp_rx_thread.c index adb4df609617..9edb7e921cab 100644 --- a/core/dp/txrx3.0/dp_rx_thread.c +++ b/core/dp/txrx3.0/dp_rx_thread.c @@ -352,7 +352,7 @@ static void dp_rx_thread_gro_flush(struct dp_rx_thread *rx_thread) dp_debug("flushing packets for thread %u", rx_thread->id); local_bh_disable(); - dp_rx_napi_gro_flush(&rx_thread->napi); + napi_gro_flush(&rx_thread->napi, false); local_bh_enable(); rx_thread->stats.gro_flushes++; @@ -953,17 +953,3 @@ QDF_STATUS dp_rx_tm_set_cpu_mask(struct dp_rx_tm_handle *rx_tm_hdl, } return QDF_STATUS_SUCCESS; } - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) -void dp_rx_napi_gro_flush(struct napi_struct *napi) -{ - if (napi->poll) { - napi_gro_flush(napi, false); - if (napi->rx_count) { - netif_receive_skb_list(&napi->rx_list); - qdf_init_list_head(&napi->rx_list); - napi->rx_count = 0; - } - } -} -#endif diff --git a/core/dp/txrx3.0/dp_txrx.h b/core/dp/txrx3.0/dp_txrx.h index 614c06169be3..c766f002c9fe 100644 --- a/core/dp/txrx3.0/dp_txrx.h +++ b/core/dp/txrx3.0/dp_txrx.h @@ -46,21 +46,6 @@ struct dp_txrx_handle { struct dp_txrx_config config; }; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) -/** - * dp_rx_napi_gro_flush() - do gro flush - * @napi: napi used to do gro flush - * - * if there is RX GRO_NORMAL packets pending in napi - * rx_list, flush them manually right after napi_gro_flush. - * - * return: none - */ -void dp_rx_napi_gro_flush(struct napi_struct *napi); -#else -#define dp_rx_napi_gro_flush(_napi) napi_gro_flush((_napi), false) -#endif - #ifdef FEATURE_WLAN_DP_RX_THREADS /** * dp_txrx_get_cmn_hdl_frm_ext_hdl() - conversion func ext_hdl->txrx_handle_cmn diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 8e17334be11e..4a4a60cf4560 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -1544,20 +1544,6 @@ static void hdd_resolve_rx_ol_mode(struct hdd_context *hdd_ctx) } } -/** - * When bus bandwidth is idle, if RX data is delivered with - * napi_gro_receive, to reduce RX delay related with GRO, - * check gro_result returned from napi_gro_receive to determine - * is extra GRO flush still necessary. - */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) -#define HDD_IS_EXTRA_GRO_FLUSH_NECESSARY(_gro_ret) \ - ((_gro_ret) != GRO_DROP) -#else -#define HDD_IS_EXTRA_GRO_FLUSH_NECESSARY(_gro_ret) \ - ((_gro_ret) != GRO_DROP && (_gro_ret) != GRO_NORMAL) -#endif - /** * hdd_gro_rx_bh_disable() - GRO RX/flush function. * @napi_to_use: napi to be used to give packets to the stack, gro flush @@ -1577,23 +1563,23 @@ static QDF_STATUS hdd_gro_rx_bh_disable(struct hdd_adapter *adapter, { QDF_STATUS status = QDF_STATUS_SUCCESS; struct hdd_context *hdd_ctx = adapter->hdd_ctx; - gro_result_t gro_ret; + gro_result_t gro_res; skb_set_hash(skb, QDF_NBUF_CB_RX_FLOW_ID(skb), PKT_HASH_TYPE_L4); local_bh_disable(); - gro_ret = napi_gro_receive(napi_to_use, skb); + gro_res = napi_gro_receive(napi_to_use, skb); if (hdd_get_current_throughput_level(hdd_ctx) == PLD_BUS_WIDTH_IDLE) { - if (HDD_IS_EXTRA_GRO_FLUSH_NECESSARY(gro_ret)) { + if (gro_res != GRO_DROP && gro_res != GRO_NORMAL) { adapter->hdd_stats.tx_rx_stats. rx_gro_low_tput_flush++; - dp_rx_napi_gro_flush(napi_to_use); + napi_gro_flush(napi_to_use, false); } } local_bh_enable(); - if (gro_ret == GRO_DROP) + if (gro_res == GRO_DROP) status = QDF_STATUS_E_GRO_DROP; return status; @@ -1696,7 +1682,7 @@ static void hdd_rxthread_napi_gro_flush(void *data) * As we are breaking context in Rxthread mode, there is rx_thread NAPI * corresponds each hif_napi. */ - dp_rx_napi_gro_flush(&qca_napii->rx_thread_napi); + napi_gro_flush(&qca_napii->rx_thread_napi, false); local_bh_enable(); }