diff options
author | Kumar Anand <kumaranand@google.com> | 2019-03-29 18:41:41 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2019-03-29 18:41:41 +0000 |
commit | d6273aad77569b2678a82c678df5e103b3dc52a7 (patch) | |
tree | cf175ea6e2e097dba0ab374ad826474a37218b4d | |
parent | 7f05e5396c089c9fbdb5171feb23a355eeddfa52 (diff) | |
parent | 51239b5b5ebfe62ebad31e9097fcf70ace6b4723 (diff) | |
download | qcacld-d6273aad77569b2678a82c678df5e103b3dc52a7.tar.gz |
Merge "qcacld-3.0: Do rx inorder replenish for fragmented packets" into android-msm-bluecross-4.9
-rw-r--r-- | core/dp/ol/inc/ol_htt_rx_api.h | 6 | ||||
-rw-r--r-- | core/dp/txrx/ol_rx_defrag.c | 29 |
2 files changed, 34 insertions, 1 deletions
diff --git a/core/dp/ol/inc/ol_htt_rx_api.h b/core/dp/ol/inc/ol_htt_rx_api.h index 950751aa9f..85dd80954b 100644 --- a/core/dp/ol/inc/ol_htt_rx_api.h +++ b/core/dp/ol/inc/ol_htt_rx_api.h @@ -815,6 +815,12 @@ void htt_rx_msdu_buff_replenish(htt_pdev_handle pdev); * Return: number of buffers actually replenished */ int htt_rx_msdu_buff_in_order_replenish(htt_pdev_handle pdev, uint32_t num); +#else +static inline +int htt_rx_msdu_buff_in_order_replenish(htt_pdev_handle pdev, uint32_t num) +{ + return 0; +} #endif /** diff --git a/core/dp/txrx/ol_rx_defrag.c b/core/dp/txrx/ol_rx_defrag.c index 4496b21eab..60ec626246 100644 --- a/core/dp/txrx/ol_rx_defrag.c +++ b/core/dp/txrx/ol_rx_defrag.c @@ -316,6 +316,26 @@ void ol_rx_frag_send_pktlog_event(struct ol_txrx_pdev_t *pdev, #endif +#ifndef CONFIG_HL_SUPPORT +static int ol_rx_frag_get_inord_msdu_cnt(qdf_nbuf_t rx_ind_msg) +{ + uint32_t *msg_word; + uint8_t *rx_ind_data; + uint32_t msdu_cnt; + + rx_ind_data = qdf_nbuf_data(rx_ind_msg); + msg_word = (uint32_t *)rx_ind_data; + msdu_cnt = HTT_RX_IN_ORD_PADDR_IND_MSDU_CNT_GET(*(msg_word + 1)); + + return msdu_cnt; +} +#else +static int ol_rx_frag_get_inord_msdu_cnt(qdf_nbuf_t rx_ind_msg) +{ + return 0; +} +#endif + /* * Process incoming fragments */ @@ -353,7 +373,10 @@ ol_rx_frag_indication_handler(ol_txrx_pdev_handle pdev, * separate from normal frames */ ol_rx_reorder_flush_frag(htt_pdev, peer, tid, seq_num_start); + } else { + msdu_count = ol_rx_frag_get_inord_msdu_cnt(rx_frag_ind_msg); } + pktlog_bit = (htt_rx_amsdu_rx_in_order_get_pktlog(rx_frag_ind_msg) == 0x01); ret = htt_rx_frag_pop(htt_pdev, rx_frag_ind_msg, &head_msdu, @@ -389,7 +412,11 @@ ol_rx_frag_indication_handler(ol_txrx_pdev_handle pdev, htt_rx_desc_frame_free(htt_pdev, head_msdu); } /* request HTT to provide new rx MSDU buffers for the target to fill. */ - htt_rx_msdu_buff_replenish(htt_pdev); + if (ol_cfg_is_full_reorder_offload(pdev->ctrl_pdev) && + !pdev->cfg.is_high_latency) + htt_rx_msdu_buff_in_order_replenish(htt_pdev, msdu_count); + else + htt_rx_msdu_buff_replenish(htt_pdev); } /* |