Loading dp/inc/cdp_txrx_ops.h +14 −1 Original line number Diff line number Diff line Loading @@ -58,6 +58,17 @@ enum cdp_nac_param_cmd { CDP_NAC_PARAM_LIST, }; #define CDP_DELBA_INTERVAL_MS 3000 /** * enum cdp_delba_rcode - CDP reason code for sending DELBA * @CDP_DELBA_REASON_NONE: None * @CDP_DELBA_2K_JUMP: Sending DELBA from 2k_jump_handle */ enum cdp_delba_rcode { CDP_DELBA_REASON_NONE = 0, CDP_DELBA_2K_JUMP, }; /** * enum vdev_peer_protocol_enter_exit - whether ingress or egress * @CDP_VDEV_PEER_PROTOCOL_IS_INGRESS: ingress Loading Loading @@ -1097,12 +1108,14 @@ struct ol_if_ops { * @vdev_id: dp vdev id * @peer_macaddr: Peer mac addr * @tid: Tid number * @reason_code: Reason code * @cdp_rcode: CDP reason code for sending DELBA * * Return: 0 for success, non-zero for failure */ int (*send_delba)(struct cdp_ctrl_objmgr_psoc *psoc, uint8_t vdev_id, uint8_t *peer_macaddr, uint8_t tid, uint8_t reason_code); uint8_t reason_code, uint8_t cdp_rcode); int (*peer_delete_multiple_wds_entries)(struct cdp_ctrl_objmgr_psoc *psoc, Loading dp/wifi3.0/dp_internal.h +3 −1 Original line number Diff line number Diff line Loading @@ -2311,11 +2311,13 @@ dp_get_pdev_from_soc_pdev_id_wifi3(struct dp_soc *soc, * @tid: TID * @ba_window_size: BlockAck window size * @start_seq: Starting sequence number * @bar_update: BAR update triggered * * Return: QDF_STATUS code */ QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t ba_window_size, uint32_t start_seq); ba_window_size, uint32_t start_seq, bool bar_update); /** * dp_get_peer_mac_list(): function to get peer mac list of vdev Loading dp/wifi3.0/dp_main.c +28 −6 Original line number Diff line number Diff line Loading @@ -1650,6 +1650,27 @@ static void dp_srng_free(struct dp_soc *soc, struct dp_srng *srng) srng->hal_srng = NULL; } #ifdef DISABLE_MON_RING_MSI_CFG /* * dp_skip_msi_cfg() - Check if msi cfg has to be skipped for ring_type * @ring_type: sring type * * Return: True if msi cfg should be skipped for srng type else false */ static inline bool dp_skip_msi_cfg(int ring_type) { if (ring_type == RXDMA_MONITOR_STATUS) return true; return false; } #else static inline bool dp_skip_msi_cfg(int ring_type) { return false; } #endif /* * dp_srng_init() - Initialize SRNG * @soc : Data path soc handle Loading Loading @@ -1688,11 +1709,10 @@ static QDF_STATUS dp_srng_init(struct dp_soc *soc, struct dp_srng *srng, (void *)ring_params.ring_base_paddr, ring_params.num_entries); if (soc->intr_mode == DP_INTR_MSI) { if (soc->intr_mode == DP_INTR_MSI && !dp_skip_msi_cfg(ring_type)) { dp_srng_msi_setup(soc, &ring_params, ring_type, ring_num); dp_verbose_debug("Using MSI for ring_type: %d, ring_num %d", ring_type, ring_num); } else { ring_params.msi_data = 0; ring_params.msi_addr = 0; Loading Loading @@ -5974,6 +5994,8 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, else if (hif_get_target_status(soc->hif_handle) == TARGET_STATUS_RESET) dp_vdev_flush_peers((struct cdp_vdev *)vdev, true); /* indicate that the vdev needs to be deleted */ vdev->delete.pending = 1; dp_rx_vdev_detach(vdev); /* * move it after dp_rx_vdev_detach(), Loading Loading @@ -6004,8 +6026,6 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, qdf_mem_free(vdev->vdev_dp_ext_handle); vdev->vdev_dp_ext_handle = NULL; } /* indicate that the vdev needs to be deleted */ vdev->delete.pending = 1; vdev->delete.callback = callback; vdev->delete.context = cb_context; Loading Loading @@ -7321,9 +7341,11 @@ void dp_get_os_rx_handles_from_vdev_wifi3(struct cdp_soc_t *soc_hdl, struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP); if (!vdev) if (qdf_unlikely(!vdev)) { *stack_fn_p = NULL; *osif_vdev_p = NULL; return; } *stack_fn_p = vdev->osif_rx_stack; *osif_vdev_p = vdev->osif_vdev; dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP); Loading dp/wifi3.0/dp_peer.c +17 −12 Original line number Diff line number Diff line Loading @@ -2325,7 +2325,8 @@ static bool dp_get_peer_vdev_roaming_in_progress(struct dp_peer *peer) } QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t ba_window_size, uint32_t start_seq) ba_window_size, uint32_t start_seq, bool bar_update) { struct dp_rx_tid *rx_tid = &peer->rx_tid[tid]; struct dp_soc *soc = peer->vdev->pdev->soc; Loading Loading @@ -2357,7 +2358,7 @@ QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t if (dp_get_peer_vdev_roaming_in_progress(peer)) return QDF_STATUS_E_PERM; if (soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup) if (soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup && !bar_update) soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup( soc->ctrl_psoc, peer->vdev->pdev->pdev_id, peer->vdev->vdev_id, peer->mac_addr.raw, Loading Loading @@ -2548,7 +2549,7 @@ QDF_STATUS dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid, rx_tid->ba_win_size = ba_window_size; if (rx_tid->hw_qdesc_vaddr_unaligned) return dp_rx_tid_update_wifi3(peer, tid, ba_window_size, start_seq); start_seq, false); rx_tid->delba_tx_status = 0; rx_tid->ppdu_id_2k = 0; rx_tid->num_of_addba_req = 0; Loading Loading @@ -3256,7 +3257,8 @@ static void dp_teardown_256_ba_sessions(struct dp_peer *peer) peer->vdev->pdev->soc->ctrl_psoc, peer->vdev->vdev_id, peer->mac_addr.raw, tid, delba_rcode); tid, delba_rcode, CDP_DELBA_REASON_NONE); } else { qdf_spin_unlock_bh(&rx_tid->tid_lock); } Loading Loading @@ -3297,7 +3299,7 @@ int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, if (status) { rx_tid->num_addba_rsp_failed++; dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; qdf_spin_unlock_bh(&rx_tid->tid_lock); dp_err("RxTid- %d addba rsp tx completion failed", tid); Loading @@ -3324,7 +3326,8 @@ int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, if (dp_rx_tid_update_wifi3(peer, tid, rx_tid->ba_win_size, rx_tid->startseqnum)) { rx_tid->startseqnum, false)) { dp_err("Failed update REO SSN"); } Loading Loading @@ -3493,7 +3496,7 @@ int dp_addba_requestprocess_wifi3(struct cdp_soc_t *cdp_soc, rx_tid->num_of_addba_req++; if ((rx_tid->ba_status == DP_RX_BA_ACTIVE && rx_tid->hw_qdesc_vaddr_unaligned)) { dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; peer->active_ba_session_cnt--; QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, Loading Loading @@ -3632,7 +3635,7 @@ int dp_delba_process_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac, */ rx_tid->delba_rcode = reasoncode; rx_tid->num_of_delba_req++; dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; peer->active_ba_session_cnt--; Loading Loading @@ -3686,7 +3689,8 @@ int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac, peer->vdev->pdev->soc->ctrl_psoc, peer->vdev->vdev_id, peer->mac_addr.raw, tid, rx_tid->delba_rcode); rx_tid->delba_rcode, CDP_DELBA_REASON_NONE); } goto end; } else { Loading @@ -3695,12 +3699,12 @@ int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac, rx_tid->delba_tx_status = 0; } if (rx_tid->ba_status == DP_RX_BA_ACTIVE) { dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; peer->active_ba_session_cnt--; } if (rx_tid->ba_status == DP_RX_BA_IN_PROGRESS) { dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; } qdf_spin_unlock_bh(&rx_tid->tid_lock); Loading Loading @@ -4073,7 +4077,8 @@ dp_rx_delba_ind_handler(void *soc_handle, uint16_t peer_id, peer->vdev->vdev_id, peer->mac_addr.raw, tid, rx_tid->delba_rcode); rx_tid->delba_rcode, CDP_DELBA_REASON_NONE); } } else { QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, Loading dp/wifi3.0/dp_rx.c +4 −4 Original line number Diff line number Diff line Loading @@ -2261,7 +2261,6 @@ void dp_rx_deliver_to_pkt_capture_no_peer(struct dp_soc *soc, qdf_nbuf_t nbuf, uint16_t peer_id, vdev_id; uint32_t pkt_len = 0; uint8_t *rx_tlv_hdr; uint32_t l2_hdr_offset = 0; struct hal_rx_msdu_metadata msdu_metadata; peer_id = QDF_NBUF_CB_RX_PEER_ID(nbuf); Loading @@ -2271,14 +2270,15 @@ void dp_rx_deliver_to_pkt_capture_no_peer(struct dp_soc *soc, qdf_nbuf_t nbuf, msdu_len = QDF_NBUF_CB_RX_PKT_LEN(nbuf); pkt_len = msdu_len + msdu_metadata.l3_hdr_pad + RX_PKT_TLVS_LEN; l2_hdr_offset = hal_rx_msdu_end_l3_hdr_padding_get(soc->hal_soc, rx_tlv_hdr); qdf_nbuf_set_pktlen(nbuf, pkt_len); dp_rx_skip_tlvs(nbuf, msdu_metadata.l3_hdr_pad); dp_wdi_event_handler(WDI_EVENT_PKT_CAPTURE_RX_DATA, soc, nbuf, HTT_INVALID_VDEV, is_offload, 0); qdf_nbuf_push_head(nbuf, msdu_metadata.l3_hdr_pad + RX_PKT_TLVS_LEN); } #endif Loading Loading @@ -2459,7 +2459,7 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl, ring_desc, rx_desc); if (QDF_IS_STATUS_ERROR(status)) { if (qdf_unlikely(rx_desc && rx_desc->nbuf)) { qdf_assert_always(rx_desc->unmapped); qdf_assert_always(!rx_desc->unmapped); dp_ipa_reo_ctx_buf_mapping_lock( soc, reo_ring_num); Loading Loading
dp/inc/cdp_txrx_ops.h +14 −1 Original line number Diff line number Diff line Loading @@ -58,6 +58,17 @@ enum cdp_nac_param_cmd { CDP_NAC_PARAM_LIST, }; #define CDP_DELBA_INTERVAL_MS 3000 /** * enum cdp_delba_rcode - CDP reason code for sending DELBA * @CDP_DELBA_REASON_NONE: None * @CDP_DELBA_2K_JUMP: Sending DELBA from 2k_jump_handle */ enum cdp_delba_rcode { CDP_DELBA_REASON_NONE = 0, CDP_DELBA_2K_JUMP, }; /** * enum vdev_peer_protocol_enter_exit - whether ingress or egress * @CDP_VDEV_PEER_PROTOCOL_IS_INGRESS: ingress Loading Loading @@ -1097,12 +1108,14 @@ struct ol_if_ops { * @vdev_id: dp vdev id * @peer_macaddr: Peer mac addr * @tid: Tid number * @reason_code: Reason code * @cdp_rcode: CDP reason code for sending DELBA * * Return: 0 for success, non-zero for failure */ int (*send_delba)(struct cdp_ctrl_objmgr_psoc *psoc, uint8_t vdev_id, uint8_t *peer_macaddr, uint8_t tid, uint8_t reason_code); uint8_t reason_code, uint8_t cdp_rcode); int (*peer_delete_multiple_wds_entries)(struct cdp_ctrl_objmgr_psoc *psoc, Loading
dp/wifi3.0/dp_internal.h +3 −1 Original line number Diff line number Diff line Loading @@ -2311,11 +2311,13 @@ dp_get_pdev_from_soc_pdev_id_wifi3(struct dp_soc *soc, * @tid: TID * @ba_window_size: BlockAck window size * @start_seq: Starting sequence number * @bar_update: BAR update triggered * * Return: QDF_STATUS code */ QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t ba_window_size, uint32_t start_seq); ba_window_size, uint32_t start_seq, bool bar_update); /** * dp_get_peer_mac_list(): function to get peer mac list of vdev Loading
dp/wifi3.0/dp_main.c +28 −6 Original line number Diff line number Diff line Loading @@ -1650,6 +1650,27 @@ static void dp_srng_free(struct dp_soc *soc, struct dp_srng *srng) srng->hal_srng = NULL; } #ifdef DISABLE_MON_RING_MSI_CFG /* * dp_skip_msi_cfg() - Check if msi cfg has to be skipped for ring_type * @ring_type: sring type * * Return: True if msi cfg should be skipped for srng type else false */ static inline bool dp_skip_msi_cfg(int ring_type) { if (ring_type == RXDMA_MONITOR_STATUS) return true; return false; } #else static inline bool dp_skip_msi_cfg(int ring_type) { return false; } #endif /* * dp_srng_init() - Initialize SRNG * @soc : Data path soc handle Loading Loading @@ -1688,11 +1709,10 @@ static QDF_STATUS dp_srng_init(struct dp_soc *soc, struct dp_srng *srng, (void *)ring_params.ring_base_paddr, ring_params.num_entries); if (soc->intr_mode == DP_INTR_MSI) { if (soc->intr_mode == DP_INTR_MSI && !dp_skip_msi_cfg(ring_type)) { dp_srng_msi_setup(soc, &ring_params, ring_type, ring_num); dp_verbose_debug("Using MSI for ring_type: %d, ring_num %d", ring_type, ring_num); } else { ring_params.msi_data = 0; ring_params.msi_addr = 0; Loading Loading @@ -5974,6 +5994,8 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, else if (hif_get_target_status(soc->hif_handle) == TARGET_STATUS_RESET) dp_vdev_flush_peers((struct cdp_vdev *)vdev, true); /* indicate that the vdev needs to be deleted */ vdev->delete.pending = 1; dp_rx_vdev_detach(vdev); /* * move it after dp_rx_vdev_detach(), Loading Loading @@ -6004,8 +6026,6 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, qdf_mem_free(vdev->vdev_dp_ext_handle); vdev->vdev_dp_ext_handle = NULL; } /* indicate that the vdev needs to be deleted */ vdev->delete.pending = 1; vdev->delete.callback = callback; vdev->delete.context = cb_context; Loading Loading @@ -7321,9 +7341,11 @@ void dp_get_os_rx_handles_from_vdev_wifi3(struct cdp_soc_t *soc_hdl, struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP); if (!vdev) if (qdf_unlikely(!vdev)) { *stack_fn_p = NULL; *osif_vdev_p = NULL; return; } *stack_fn_p = vdev->osif_rx_stack; *osif_vdev_p = vdev->osif_vdev; dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP); Loading
dp/wifi3.0/dp_peer.c +17 −12 Original line number Diff line number Diff line Loading @@ -2325,7 +2325,8 @@ static bool dp_get_peer_vdev_roaming_in_progress(struct dp_peer *peer) } QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t ba_window_size, uint32_t start_seq) ba_window_size, uint32_t start_seq, bool bar_update) { struct dp_rx_tid *rx_tid = &peer->rx_tid[tid]; struct dp_soc *soc = peer->vdev->pdev->soc; Loading Loading @@ -2357,7 +2358,7 @@ QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t if (dp_get_peer_vdev_roaming_in_progress(peer)) return QDF_STATUS_E_PERM; if (soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup) if (soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup && !bar_update) soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup( soc->ctrl_psoc, peer->vdev->pdev->pdev_id, peer->vdev->vdev_id, peer->mac_addr.raw, Loading Loading @@ -2548,7 +2549,7 @@ QDF_STATUS dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid, rx_tid->ba_win_size = ba_window_size; if (rx_tid->hw_qdesc_vaddr_unaligned) return dp_rx_tid_update_wifi3(peer, tid, ba_window_size, start_seq); start_seq, false); rx_tid->delba_tx_status = 0; rx_tid->ppdu_id_2k = 0; rx_tid->num_of_addba_req = 0; Loading Loading @@ -3256,7 +3257,8 @@ static void dp_teardown_256_ba_sessions(struct dp_peer *peer) peer->vdev->pdev->soc->ctrl_psoc, peer->vdev->vdev_id, peer->mac_addr.raw, tid, delba_rcode); tid, delba_rcode, CDP_DELBA_REASON_NONE); } else { qdf_spin_unlock_bh(&rx_tid->tid_lock); } Loading Loading @@ -3297,7 +3299,7 @@ int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, if (status) { rx_tid->num_addba_rsp_failed++; dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; qdf_spin_unlock_bh(&rx_tid->tid_lock); dp_err("RxTid- %d addba rsp tx completion failed", tid); Loading @@ -3324,7 +3326,8 @@ int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, if (dp_rx_tid_update_wifi3(peer, tid, rx_tid->ba_win_size, rx_tid->startseqnum)) { rx_tid->startseqnum, false)) { dp_err("Failed update REO SSN"); } Loading Loading @@ -3493,7 +3496,7 @@ int dp_addba_requestprocess_wifi3(struct cdp_soc_t *cdp_soc, rx_tid->num_of_addba_req++; if ((rx_tid->ba_status == DP_RX_BA_ACTIVE && rx_tid->hw_qdesc_vaddr_unaligned)) { dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; peer->active_ba_session_cnt--; QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, Loading Loading @@ -3632,7 +3635,7 @@ int dp_delba_process_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac, */ rx_tid->delba_rcode = reasoncode; rx_tid->num_of_delba_req++; dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; peer->active_ba_session_cnt--; Loading Loading @@ -3686,7 +3689,8 @@ int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac, peer->vdev->pdev->soc->ctrl_psoc, peer->vdev->vdev_id, peer->mac_addr.raw, tid, rx_tid->delba_rcode); rx_tid->delba_rcode, CDP_DELBA_REASON_NONE); } goto end; } else { Loading @@ -3695,12 +3699,12 @@ int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac, rx_tid->delba_tx_status = 0; } if (rx_tid->ba_status == DP_RX_BA_ACTIVE) { dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; peer->active_ba_session_cnt--; } if (rx_tid->ba_status == DP_RX_BA_IN_PROGRESS) { dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX); dp_rx_tid_update_wifi3(peer, tid, 1, IEEE80211_SEQ_MAX, false); rx_tid->ba_status = DP_RX_BA_INACTIVE; } qdf_spin_unlock_bh(&rx_tid->tid_lock); Loading Loading @@ -4073,7 +4077,8 @@ dp_rx_delba_ind_handler(void *soc_handle, uint16_t peer_id, peer->vdev->vdev_id, peer->mac_addr.raw, tid, rx_tid->delba_rcode); rx_tid->delba_rcode, CDP_DELBA_REASON_NONE); } } else { QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, Loading
dp/wifi3.0/dp_rx.c +4 −4 Original line number Diff line number Diff line Loading @@ -2261,7 +2261,6 @@ void dp_rx_deliver_to_pkt_capture_no_peer(struct dp_soc *soc, qdf_nbuf_t nbuf, uint16_t peer_id, vdev_id; uint32_t pkt_len = 0; uint8_t *rx_tlv_hdr; uint32_t l2_hdr_offset = 0; struct hal_rx_msdu_metadata msdu_metadata; peer_id = QDF_NBUF_CB_RX_PEER_ID(nbuf); Loading @@ -2271,14 +2270,15 @@ void dp_rx_deliver_to_pkt_capture_no_peer(struct dp_soc *soc, qdf_nbuf_t nbuf, msdu_len = QDF_NBUF_CB_RX_PKT_LEN(nbuf); pkt_len = msdu_len + msdu_metadata.l3_hdr_pad + RX_PKT_TLVS_LEN; l2_hdr_offset = hal_rx_msdu_end_l3_hdr_padding_get(soc->hal_soc, rx_tlv_hdr); qdf_nbuf_set_pktlen(nbuf, pkt_len); dp_rx_skip_tlvs(nbuf, msdu_metadata.l3_hdr_pad); dp_wdi_event_handler(WDI_EVENT_PKT_CAPTURE_RX_DATA, soc, nbuf, HTT_INVALID_VDEV, is_offload, 0); qdf_nbuf_push_head(nbuf, msdu_metadata.l3_hdr_pad + RX_PKT_TLVS_LEN); } #endif Loading Loading @@ -2459,7 +2459,7 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl, ring_desc, rx_desc); if (QDF_IS_STATUS_ERROR(status)) { if (qdf_unlikely(rx_desc && rx_desc->nbuf)) { qdf_assert_always(rx_desc->unmapped); qdf_assert_always(!rx_desc->unmapped); dp_ipa_reo_ctx_buf_mapping_lock( soc, reo_ring_num); Loading