diff options
| -rw-r--r-- | core/bmi/src/ol_fw.c | 33 | ||||
| -rw-r--r-- | core/dp/htt/htt_rx.c | 60 | ||||
| -rw-r--r-- | core/dp/htt/htt_t2h.c | 94 | ||||
| -rw-r--r-- | core/dp/ol/inc/ol_htt_rx_api.h | 4 | ||||
| -rw-r--r-- | core/dp/ol/inc/ol_txrx_htt_api.h | 2 | ||||
| -rw-r--r-- | core/dp/txrx/ol_rx.c | 4 | ||||
| -rw-r--r-- | core/dp/txrx/ol_rx.h | 6 |
7 files changed, 116 insertions, 87 deletions
diff --git a/core/bmi/src/ol_fw.c b/core/bmi/src/ol_fw.c index aa31e65298ff..4d21f8f994a8 100644 --- a/core/bmi/src/ol_fw.c +++ b/core/bmi/src/ol_fw.c @@ -1533,6 +1533,23 @@ out: return result; } +#ifdef CONFIG_HL_SUPPORT + +/** + * ol_dump_ce_register() - cannot read the section + * @scn: ol_softc handler + * @memory_block: non-NULL reserved memory location + * + * Return: -EACCES for LL and not apllicable for HL + */ +static inline int +ol_dump_ce_register(struct hif_opaque_softc *scn, void *memory_block) +{ + return 0; +} + +#else + static void ol_dump_target_memory(struct hif_opaque_softc *scn, void *memory_block) { @@ -1562,22 +1579,6 @@ void ol_dump_target_memory(struct hif_opaque_softc *scn, void *memory_block) } } -#ifdef CONFIG_HL_SUPPORT - -/** - * ol_dump_ce_register() - cannot read the section - * @scn: ol_softc handler - * @memory_block: non-NULL reserved memory location - * - * Return: -EACCES for LL and not apllicable for HL - */ -static inline int -ol_dump_ce_register(struct hif_opaque_softc *scn, void *memory_block) -{ - return 0; -} -#else - static int ol_dump_ce_register(struct hif_opaque_softc *scn, void *memory_block) { diff --git a/core/dp/htt/htt_rx.c b/core/dp/htt/htt_rx.c index 1b1b25e730b7..7128d6c82fdf 100644 --- a/core/dp/htt/htt_rx.c +++ b/core/dp/htt/htt_rx.c @@ -116,6 +116,7 @@ #define RX_HASH_LOG(x) /* no-op */ #endif +#ifndef CONFIG_HL_SUPPORT /* De -initialization function of the rx buffer hash table. This function will * free up the hash table which includes freeing all the pending rx buffers */ @@ -168,6 +169,7 @@ static void htt_rx_hash_deinit(struct htt_pdev_t *pdev) qdf_spinlock_destroy(&(pdev->rx_ring.rx_hash_lock)); } +#endif /* * This function is used both below within this file (which the compiler @@ -214,7 +216,7 @@ htt_rx_mpdu_desc_retry_hl(htt_pdev_handle pdev, void *mpdu_desc) } #ifdef CONFIG_HL_SUPPORT -u_int16_t +static u_int16_t htt_rx_mpdu_desc_seq_num_hl(htt_pdev_handle pdev, void *mpdu_desc) { if (pdev->rx_desc_size_hl) { @@ -332,6 +334,7 @@ htt_rx_msdu_is_frag_hl(htt_pdev_handle pdev, void *msdu_desc) HTT_WORD_GET(*(u_int32_t *)rx_desc, HTT_HL_RX_DESC_MCAST_BCAST); } +#ifndef CONFIG_HL_SUPPORT static bool htt_rx_msdu_first_msdu_flag_ll(htt_pdev_handle pdev, void *msdu_desc) { @@ -343,7 +346,6 @@ htt_rx_msdu_first_msdu_flag_ll(htt_pdev_handle pdev, void *msdu_desc) RX_MSDU_END_4_FIRST_MSDU_LSB); } -#ifndef CONFIG_HL_SUPPORT #define RX_PADDR_MAGIC_PATTERN 0xDEAD0000 static qdf_dma_addr_t htt_rx_paddr_mark_high_bits(qdf_dma_addr_t paddr) @@ -410,7 +412,6 @@ htt_rx_in_ord_paddr_get(uint32_t *u32p) return HTT_RX_IN_ORD_PADDR_IND_PADDR_GET(*u32p); } #endif /* HELIUMPLUS_PADDR64 */ -#endif /* CONFIG_HL_SUPPORT*/ /* full_reorder_offload case: this function is called with lock held */ static int htt_rx_ring_fill_n(struct htt_pdev_t *pdev, int num) @@ -527,9 +528,6 @@ fail: return filled; } - -#ifndef CONFIG_HL_SUPPORT - static int htt_rx_ring_size(struct htt_pdev_t *pdev) { int size; @@ -688,7 +686,6 @@ void htt_rx_detach(struct htt_pdev_t *pdev) /* destroy the rx-parallelization refill spinlock */ qdf_spinlock_destroy(&(pdev->rx_ring.refill_lock)); } -#endif /*--- rx descriptor field access functions ----------------------------------*/ /* @@ -813,20 +810,6 @@ htt_rx_mpdu_desc_tid_ll(htt_pdev_handle pdev, void *mpdu_desc) RX_MPDU_START_2_TID_LSB); } -uint32_t htt_rx_mpdu_desc_tsf32(htt_pdev_handle pdev, void *mpdu_desc) -{ -/* FIX THIS */ - return 0; -} - -/* FIX THIS: APPLIES TO LL ONLY */ -char *htt_rx_mpdu_wifi_hdr_retrieve(htt_pdev_handle pdev, void *mpdu_desc) -{ - struct htt_host_rx_desc_base *rx_desc = - (struct htt_host_rx_desc_base *)mpdu_desc; - return rx_desc->rx_hdr_status; -} - /* FIX THIS: APPLIES TO LL ONLY */ static bool htt_rx_msdu_desc_completes_mpdu_ll(htt_pdev_handle pdev, void *msdu_desc) @@ -871,6 +854,21 @@ static int htt_rx_msdu_is_frag_ll(htt_pdev_handle pdev, void *msdu_desc) ((*((uint32_t *) &rx_desc->attention)) & RX_ATTENTION_0_FRAGMENT_MASK) >> RX_ATTENTION_0_FRAGMENT_LSB; } +#endif + +uint32_t htt_rx_mpdu_desc_tsf32(htt_pdev_handle pdev, void *mpdu_desc) +{ +/* FIX THIS */ + return 0; +} + +/* FIX THIS: APPLIES TO LL ONLY */ +char *htt_rx_mpdu_wifi_hdr_retrieve(htt_pdev_handle pdev, void *mpdu_desc) +{ + struct htt_host_rx_desc_base *rx_desc = + (struct htt_host_rx_desc_base *)mpdu_desc; + return rx_desc->rx_hdr_status; +} static inline uint8_t htt_rx_msdu_fw_desc_get(htt_pdev_handle pdev, void *msdu_desc) @@ -1081,6 +1079,7 @@ void htt_set_checksum_result_hl(qdf_nbuf_t msdu, #define MAX_DONE_BIT_CHECK_ITER 5 #endif +#ifndef CONFIG_HL_SUPPORT static int htt_rx_amsdu_pop_ll(htt_pdev_handle pdev, qdf_nbuf_t rx_ind_msg, @@ -1350,6 +1349,7 @@ htt_rx_amsdu_pop_ll(htt_pdev_handle pdev, */ return msdu_chaining; } +#endif #if defined(CONFIG_HL_SUPPORT) @@ -1445,6 +1445,7 @@ htt_rx_offload_msdu_pop_hl(htt_pdev_handle pdev, } #endif +#ifndef CONFIG_HL_SUPPORT static int htt_rx_offload_msdu_pop_ll(htt_pdev_handle pdev, qdf_nbuf_t offload_deliver_msg, @@ -1539,6 +1540,7 @@ htt_rx_offload_paddr_msdu_pop_ll(htt_pdev_handle pdev, qdf_nbuf_set_pktlen(buf, msdu_len); return 0; } +#endif #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #if HTT_PADDR64 @@ -1547,6 +1549,7 @@ htt_rx_offload_paddr_msdu_pop_ll(htt_pdev_handle pdev, #define NEXT_FIELD_OFFSET_IN32 1 #endif /* HTT_PADDR64 */ +#ifndef CONFIG_HL_SUPPORT /** * htt_mon_rx_handle_amsdu_packet() - Handle consecutive fragments of amsdu * @msdu: pointer to first msdu of amsdu @@ -1849,6 +1852,7 @@ static void htt_rx_mon_get_rx_status(htt_pdev_handle pdev, rx_status->chan_flags = channel_flags; rx_status->ant_signal_db = rx_desc->ppdu_start.rssi_comb; } +#endif #ifdef RX_HASH_DEBUG #define HTT_RX_CHECK_MSDU_COUNT(msdu_count) HTT_ASSERT_ALWAYS(msdu_count) @@ -1856,6 +1860,7 @@ static void htt_rx_mon_get_rx_status(htt_pdev_handle pdev, #define HTT_RX_CHECK_MSDU_COUNT(msdu_count) /* no-op */ #endif +#ifndef CONFIG_HL_SUPPORT /** * htt_rx_mon_amsdu_rx_in_order_pop_ll() - Monitor mode HTT Rx in order pop * function @@ -1994,6 +1999,7 @@ static int htt_rx_mon_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev, return 1; } +#endif /** * htt_rx_mon_note_capture_channel() - Make note of channel to update in @@ -2019,6 +2025,7 @@ uint32_t htt_rx_amsdu_rx_in_order_get_pktlog(qdf_nbuf_t rx_ind_msg) return HTT_RX_IN_ORD_PADDR_IND_PKTLOG_GET(*msg_word); } +#ifndef CONFIG_HL_SUPPORT /* Return values: 1 - success, 0 - failure */ static int htt_rx_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev, @@ -2206,6 +2213,7 @@ htt_rx_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev, return 1; } +#endif /* Util fake function that has same prototype as qdf_nbuf_clone that just * retures the same nbuf @@ -2642,6 +2650,7 @@ bool (*htt_rx_mpdu_is_encrypted)(htt_pdev_handle pdev, void *mpdu_desc); bool (*htt_rx_msdu_desc_key_id)(htt_pdev_handle pdev, void *mpdu_desc, uint8_t *key_id); +#ifndef CONFIG_HL_SUPPORT static void *htt_rx_mpdu_desc_list_next_ll(htt_pdev_handle pdev, qdf_nbuf_t rx_ind_msg) { @@ -2650,6 +2659,7 @@ void *htt_rx_mpdu_desc_list_next_ll(htt_pdev_handle pdev, qdf_nbuf_t rx_ind_msg) pdev->rx_ring.sw_rd_idx.msdu_desc = pdev->rx_ring.sw_rd_idx.msdu_payld; return (void *)htt_rx_desc(netbuf); } +#endif bool (*htt_rx_msdu_chan_info_present)( htt_pdev_handle pdev, @@ -2664,11 +2674,13 @@ bool (*htt_rx_msdu_center_freq)( uint16_t *contig_chan2_center_freq_mhz, uint8_t *phy_mode); +#ifndef CONFIG_HL_SUPPORT static void *htt_rx_in_ord_mpdu_desc_list_next_ll(htt_pdev_handle pdev, qdf_nbuf_t netbuf) { return (void *)htt_rx_desc(netbuf); } +#endif #if defined(CONFIG_HL_SUPPORT) @@ -2816,6 +2828,7 @@ htt_rx_msdu_desc_key_id_hl(htt_pdev_handle htt_pdev, #endif +#ifndef CONFIG_HL_SUPPORT static void *htt_rx_msdu_desc_retrieve_ll(htt_pdev_handle pdev, qdf_nbuf_t msdu) { return htt_rx_desc(msdu); @@ -2872,6 +2885,7 @@ htt_rx_msdu_desc_key_id_ll(htt_pdev_handle pdev, void *mpdu_desc, return true; } +#endif void htt_rx_desc_frame_free(htt_pdev_handle htt_pdev, qdf_nbuf_t msdu) { @@ -2919,6 +2933,7 @@ void htt_rx_msdu_buff_replenish(htt_pdev_handle pdev) qdf_atomic_inc(&pdev->rx_ring.refill_ref_cnt); } +#ifndef CONFIG_HL_SUPPORT #define RX_RING_REFILL_DEBT_MAX 128 int htt_rx_msdu_buff_in_order_replenish(htt_pdev_handle pdev, uint32_t num) { @@ -2952,6 +2967,7 @@ int htt_rx_msdu_buff_in_order_replenish(htt_pdev_handle pdev, uint32_t num) return filled; } +#endif #define AR600P_ASSEMBLE_HW_RATECODE(_rate, _nss, _pream) \ (((_pream) << 6) | ((_nss) << 4) | (_rate)) @@ -3145,6 +3161,7 @@ qdf_nbuf_t htt_rx_hash_list_lookup(struct htt_pdev_t *pdev, uint32_t paddr) return netbuf; } +#ifndef CONFIG_HL_SUPPORT /* Initialization function of the rx buffer hash table. This function will allocate a hash table of a certain pre-determined size and initialize all the elements */ @@ -3222,6 +3239,7 @@ hi_end: return rc; } +#endif /*--- RX In Order Hash Code --------------------------------------------------*/ diff --git a/core/dp/htt/htt_t2h.c b/core/dp/htt/htt_t2h.c index d81dd43e12c5..ab1293ea80e5 100644 --- a/core/dp/htt/htt_t2h.c +++ b/core/dp/htt/htt_t2h.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -544,6 +544,44 @@ static void htt_t2h_lp_msg_handler(void *context, qdf_nbuf_t htt_t2h_msg, qdf_nbuf_free(htt_t2h_msg); } +#if defined(CONFIG_HL_SUPPORT) +static inline void htt_t2h_rx_in_order_indication_handler( + ol_txrx_pdev_handle pdev, + qdf_nbuf_t htt_t2h_msg, uint32_t msg_word) +{ +} +#else +static void htt_t2h_rx_in_order_indication_handler( + ol_txrx_pdev_handle pdev, + qdf_nbuf_t htt_t2h_msg, uint32_t msg_word) +{ + u_int16_t peer_id; + u_int8_t tid; + u_int8_t offload_ind, frag_ind; + + peer_id = HTT_RX_IN_ORD_PADDR_IND_PEER_ID_GET(msg_word); + tid = HTT_RX_IN_ORD_PADDR_IND_EXT_TID_GET(msg_word); + offload_ind = HTT_RX_IN_ORD_PADDR_IND_OFFLOAD_GET(msg_word); + frag_ind = HTT_RX_IN_ORD_PADDR_IND_FRAG_GET(msg_word); + +#if defined(HELIUMPLUS_DEBUG) + qdf_print("%s %d: peerid %d tid %d offloadind %d fragind %d\n", + __func__, __LINE__, peer_id, tid, offload_ind, + frag_ind); +#endif + if (qdf_unlikely(frag_ind)) { + ol_rx_frag_indication_handler(pdev, + htt_t2h_msg, + peer_id, tid); + return; + } + + ol_rx_in_order_indication_handler(pdev, + htt_t2h_msg, peer_id, + tid, offload_ind); +} +#endif + /* Generic Target to host Msg/event handler for low priority messages Low priority message are handler in a different handler called from this function . So that the most likely succes path like Rx and @@ -738,10 +776,6 @@ void htt_t2h_msg_handler(void *context, HTC_PACKET *pkt) } case HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND: { - uint16_t peer_id; - uint8_t tid; - uint8_t offload_ind, frag_ind; - if (qdf_unlikely(!pdev->cfg.is_full_reorder_offload)) { qdf_print("HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND not "); qdf_print("supported when full reorder offload is "); @@ -755,26 +789,9 @@ void htt_t2h_msg_handler(void *context, HTC_PACKET *pkt) break; } - peer_id = HTT_RX_IN_ORD_PADDR_IND_PEER_ID_GET(*msg_word); - tid = HTT_RX_IN_ORD_PADDR_IND_EXT_TID_GET(*msg_word); - offload_ind = HTT_RX_IN_ORD_PADDR_IND_OFFLOAD_GET(*msg_word); - frag_ind = HTT_RX_IN_ORD_PADDR_IND_FRAG_GET(*msg_word); - -#if defined(HELIUMPLUS_DEBUG) - qdf_print("%s %d: peerid %d tid %d offloadind %d fragind %d\n", - __func__, __LINE__, peer_id, tid, offload_ind, - frag_ind); -#endif - if (qdf_unlikely(frag_ind)) { - ol_rx_frag_indication_handler(pdev->txrx_pdev, - htt_t2h_msg, - peer_id, tid); - break; - } - - ol_rx_in_order_indication_handler(pdev->txrx_pdev, - htt_t2h_msg, peer_id, - tid, offload_ind); + htt_t2h_rx_in_order_indication_handler( + pdev->txrx_pdev, + htt_t2h_msg, *msg_word); break; } @@ -964,10 +981,6 @@ void htt_t2h_msg_handler_fast(void *context, qdf_nbuf_t *cmpl_msdus, } case HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND: { - u_int16_t peer_id; - u_int8_t tid; - u_int8_t offload_ind, frag_ind; - if (qdf_unlikely( !pdev->cfg.is_full_reorder_offload)) { qdf_print("HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND not supported when full reorder offload is disabled\n"); @@ -980,26 +993,9 @@ void htt_t2h_msg_handler_fast(void *context, qdf_nbuf_t *cmpl_msdus, break; } - peer_id = HTT_RX_IN_ORD_PADDR_IND_PEER_ID_GET( - *msg_word); - tid = HTT_RX_IN_ORD_PADDR_IND_EXT_TID_GET( - *msg_word); - offload_ind = - HTT_RX_IN_ORD_PADDR_IND_OFFLOAD_GET( - *msg_word); - frag_ind = HTT_RX_IN_ORD_PADDR_IND_FRAG_GET( - *msg_word); - - if (qdf_unlikely(frag_ind)) { - ol_rx_frag_indication_handler( - pdev->txrx_pdev, htt_t2h_msg, peer_id, - tid); - break; - } - - ol_rx_in_order_indication_handler( - pdev->txrx_pdev, htt_t2h_msg, - peer_id, tid, offload_ind); + htt_t2h_rx_in_order_indication_handler( + pdev->txrx_pdev, + htt_t2h_msg, *msg_word); break; } default: diff --git a/core/dp/ol/inc/ol_htt_rx_api.h b/core/dp/ol/inc/ol_htt_rx_api.h index 5edebb7f7f8b..d63912c9d64a 100644 --- a/core/dp/ol/inc/ol_htt_rx_api.h +++ b/core/dp/ol/inc/ol_htt_rx_api.h @@ -787,6 +787,7 @@ void htt_rx_msdu_desc_free(htt_pdev_handle htt_pdev, qdf_nbuf_t msdu); */ void htt_rx_msdu_buff_replenish(htt_pdev_handle pdev); +#ifndef CONFIG_HL_SUPPORT /** * @brief Add new MSDU buffers for the target to fill. * @details @@ -803,6 +804,7 @@ 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); +#endif /** * @brief Links list of MSDUs into an single MPDU. Updates RX stats @@ -858,6 +860,7 @@ uint16_t htt_rx_msdu_rx_desc_size_hl(htt_pdev_handle pdev, void *msdu_desc); */ void htt_rx_get_vowext_stats(qdf_nbuf_t msdu, struct vow_extstats *vowstats); +#ifndef CONFIG_HL_SUPPORT /** * @brief parses the offload message passed by the target. * @param pdev - pdev handle @@ -879,6 +882,7 @@ htt_rx_offload_paddr_msdu_pop_ll(htt_pdev_handle pdev, int *tid, uint8_t *fw_desc, qdf_nbuf_t *head_buf, qdf_nbuf_t *tail_buf); +#endif uint32_t htt_rx_amsdu_rx_in_order_get_pktlog(qdf_nbuf_t rx_ind_msg); diff --git a/core/dp/ol/inc/ol_txrx_htt_api.h b/core/dp/ol/inc/ol_txrx_htt_api.h index c778515a7ba1..64b4c5870b5b 100644 --- a/core/dp/ol/inc/ol_txrx_htt_api.h +++ b/core/dp/ol/inc/ol_txrx_htt_api.h @@ -698,6 +698,7 @@ ol_txrx_peer_uapsdmask_get(struct ol_txrx_pdev_t *txrx_pdev, uint16_t peer_id); uint8_t ol_txrx_peer_qoscapable_get(struct ol_txrx_pdev_t *txrx_pdev, uint16_t peer_id); +#ifndef CONFIG_HL_SUPPORT /** * @brief Process an rx indication message sent by the target. * @details @@ -723,6 +724,7 @@ ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev, qdf_nbuf_t rx_ind_msg, uint16_t peer_id, uint8_t tid, uint8_t is_offload); +#endif #ifdef FEATURE_HL_GROUP_CREDIT_FLOW_CONTROL diff --git a/core/dp/txrx/ol_rx.c b/core/dp/txrx/ol_rx.c index 9e0b4f37b819..a8258addc0cf 100644 --- a/core/dp/txrx/ol_rx.c +++ b/core/dp/txrx/ol_rx.c @@ -1337,6 +1337,7 @@ void ol_rx_frames_free(htt_pdev_handle htt_pdev, qdf_nbuf_t frames) } } +#ifndef CONFIG_HL_SUPPORT void ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev, qdf_nbuf_t rx_ind_msg, @@ -1428,6 +1429,7 @@ ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev, peer->rx_opt_proc(vdev, peer, tid, head_msdu); } +#endif /** * ol_rx_pkt_dump_call() - updates status and @@ -1525,6 +1527,7 @@ void ol_rx_log_packet(htt_pdev_handle htt_pdev, qdf_dp_trace_log_pkt(peer->vdev->vdev_id, msdu, QDF_RX); } +#ifndef CONFIG_HL_SUPPORT void ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev, uint32_t msdu_count, @@ -1571,6 +1574,7 @@ ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev, } htt_rx_msdu_buff_replenish(htt_pdev); } +#endif /** * ol_htt_mon_note_chan() - Update monitor channel information diff --git a/core/dp/txrx/ol_rx.h b/core/dp/txrx/ol_rx.h index 97723bb592eb..09a5401a75f4 100644 --- a/core/dp/txrx/ol_rx.h +++ b/core/dp/txrx/ol_rx.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2011, 2014-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -58,10 +58,14 @@ ol_rx_in_order_deliver(struct ol_txrx_vdev_t *vdev, void ol_rx_log_packet(htt_pdev_handle htt_pdev, uint8_t peer_id, qdf_nbuf_t msdu); + +#ifndef CONFIG_HL_SUPPORT void ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev, uint32_t msdu_count, uint32_t *msg_word); +#endif + void ol_rx_update_histogram_stats(uint32_t msdu_count, uint8_t frag_ind, uint8_t offload_ind); |
