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_peer.c +6 −3 Original line number Diff line number Diff line Loading @@ -3257,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 @@ -3688,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 Loading @@ -4075,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 +1 −1 Original line number Diff line number Diff line 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 dp/wifi3.0/dp_rx_err.c +3 −2 Original line number Diff line number Diff line Loading @@ -981,7 +981,8 @@ dp_2k_jump_handle(struct dp_soc *soc, peer->vdev->vdev_id, peer->mac_addr.raw, tid, rx_tid->delba_rcode); rx_tid->delba_rcode, CDP_DELBA_2K_JUMP); } } else { qdf_spin_unlock_bh(&rx_tid->tid_lock); Loading Loading @@ -1693,7 +1694,7 @@ static int dp_rx_err_handle_msdu_buf(struct dp_soc *soc, /* After this point the rx_desc and nbuf are valid */ dp_ipa_rx_buf_smmu_mapping_lock(soc); qdf_assert_always(rx_desc->unmapped); qdf_assert_always(!rx_desc->unmapped); dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, RX_DATA_BUFFER_SIZE, Loading dp/wifi3.0/dp_tx.c +32 −0 Original line number Diff line number Diff line Loading @@ -1562,6 +1562,36 @@ dp_tx_hw_desc_update_evt(uint8_t *hal_tx_desc_cached, } #endif #if defined(CLEAR_SW2TCL_CONSUMED_DESC) /** * dp_tx_clear_consumed_hw_descs - Reset all the consumed Tx ring descs to 0 * * @soc: DP soc handle * @hal_ring_hdl: Source ring pointer * * Return: void */ static inline void dp_tx_clear_consumed_hw_descs(struct dp_soc *soc, hal_ring_handle_t hal_ring_hdl) { void *desc = hal_srng_src_get_next_consumed(soc->hal_soc, hal_ring_hdl); while (desc) { hal_tx_desc_clear(desc); desc = hal_srng_src_get_next_consumed(soc->hal_soc, hal_ring_hdl); } } #else static inline void dp_tx_clear_consumed_hw_descs(struct dp_soc *soc, hal_ring_handle_t hal_ring_hdl) { } #endif /* CLEAR_SW2TCL_CONSUMED_DESC */ /** * dp_tx_hw_enqueue() - Enqueue to TCL HW for transmit * @soc: DP Soc Handle Loading Loading @@ -1697,6 +1727,8 @@ dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev, return status; } dp_tx_clear_consumed_hw_descs(soc, hal_ring_hdl); /* Sync cached descriptor with HW */ hal_tx_desc = hal_srng_src_get_next(soc->hal_soc, hal_ring_hdl); 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_peer.c +6 −3 Original line number Diff line number Diff line Loading @@ -3257,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 @@ -3688,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 Loading @@ -4075,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 +1 −1 Original line number Diff line number Diff line 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
dp/wifi3.0/dp_rx_err.c +3 −2 Original line number Diff line number Diff line Loading @@ -981,7 +981,8 @@ dp_2k_jump_handle(struct dp_soc *soc, peer->vdev->vdev_id, peer->mac_addr.raw, tid, rx_tid->delba_rcode); rx_tid->delba_rcode, CDP_DELBA_2K_JUMP); } } else { qdf_spin_unlock_bh(&rx_tid->tid_lock); Loading Loading @@ -1693,7 +1694,7 @@ static int dp_rx_err_handle_msdu_buf(struct dp_soc *soc, /* After this point the rx_desc and nbuf are valid */ dp_ipa_rx_buf_smmu_mapping_lock(soc); qdf_assert_always(rx_desc->unmapped); qdf_assert_always(!rx_desc->unmapped); dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, RX_DATA_BUFFER_SIZE, Loading
dp/wifi3.0/dp_tx.c +32 −0 Original line number Diff line number Diff line Loading @@ -1562,6 +1562,36 @@ dp_tx_hw_desc_update_evt(uint8_t *hal_tx_desc_cached, } #endif #if defined(CLEAR_SW2TCL_CONSUMED_DESC) /** * dp_tx_clear_consumed_hw_descs - Reset all the consumed Tx ring descs to 0 * * @soc: DP soc handle * @hal_ring_hdl: Source ring pointer * * Return: void */ static inline void dp_tx_clear_consumed_hw_descs(struct dp_soc *soc, hal_ring_handle_t hal_ring_hdl) { void *desc = hal_srng_src_get_next_consumed(soc->hal_soc, hal_ring_hdl); while (desc) { hal_tx_desc_clear(desc); desc = hal_srng_src_get_next_consumed(soc->hal_soc, hal_ring_hdl); } } #else static inline void dp_tx_clear_consumed_hw_descs(struct dp_soc *soc, hal_ring_handle_t hal_ring_hdl) { } #endif /* CLEAR_SW2TCL_CONSUMED_DESC */ /** * dp_tx_hw_enqueue() - Enqueue to TCL HW for transmit * @soc: DP Soc Handle Loading Loading @@ -1697,6 +1727,8 @@ dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev, return status; } dp_tx_clear_consumed_hw_descs(soc, hal_ring_hdl); /* Sync cached descriptor with HW */ hal_tx_desc = hal_srng_src_get_next(soc->hal_soc, hal_ring_hdl); Loading