Lines Matching refs:nbuf
448 static uint8_t dp_tx_prepare_htt_metadata(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_prepare_htt_metadata() argument
472 if (qdf_unlikely(qdf_nbuf_headroom(nbuf) < in dp_tx_prepare_htt_metadata()
474 nbuf = qdf_nbuf_realloc_headroom(nbuf, in dp_tx_prepare_htt_metadata()
476 if (!nbuf) { in dp_tx_prepare_htt_metadata()
491 hdr = qdf_nbuf_push_head(nbuf, htt_desc_size_aligned); in dp_tx_prepare_htt_metadata()
917 qdf_nbuf_t nbuf) in dp_tx_is_nbuf_marked_exception() argument
919 return QDF_NBUF_CB_TX_PACKET_TO_FW(nbuf); in dp_tx_is_nbuf_marked_exception()
923 qdf_nbuf_t nbuf) in dp_tx_is_nbuf_marked_exception() argument
942 qdf_nbuf_t nbuf) in dp_tx_get_traffic_end_indication_pkt() argument
950 if (qdf_unlikely(QDF_NBUF_CB_GET_PACKET_TYPE(nbuf) == in dp_tx_get_traffic_end_indication_pkt()
969 qdf_mem_copy(qdf_nbuf_data(end_nbuf), qdf_nbuf_data(nbuf), in dp_tx_get_traffic_end_indication_pkt()
996 qdf_nbuf_t nbuf; in dp_tx_send_traffic_end_indication_pkt() local
1005 nbuf = dp_tx_send_msdu_single(vdev, end_nbuf, &e_msdu_info, in dp_tx_send_traffic_end_indication_pkt()
1007 if (nbuf) { in dp_tx_send_traffic_end_indication_pkt()
1009 qdf_nbuf_free(nbuf); in dp_tx_send_traffic_end_indication_pkt()
1047 qdf_nbuf_t nbuf) in dp_tx_traffic_end_indication_enq_ind_pkt() argument
1056 qdf_nbuf_queue_add(&vdev->end_ind_pkt_q, nbuf); in dp_tx_traffic_end_indication_enq_ind_pkt()
1078 dp_tx_send_msdu_single_wrapper(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_send_msdu_single_wrapper() argument
1083 end_nbuf = dp_tx_get_traffic_end_indication_pkt(vdev, nbuf); in dp_tx_send_msdu_single_wrapper()
1085 nbuf = dp_tx_send_msdu_single(vdev, nbuf, msdu_info, peer_id, NULL); in dp_tx_send_msdu_single_wrapper()
1090 return nbuf; in dp_tx_send_msdu_single_wrapper()
1095 qdf_nbuf_t nbuf) in dp_tx_get_traffic_end_indication_pkt() argument
1115 qdf_nbuf_t nbuf) in dp_tx_traffic_end_indication_enq_ind_pkt() argument
1127 dp_tx_send_msdu_single_wrapper(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_send_msdu_single_wrapper() argument
1131 return dp_tx_send_msdu_single(vdev, nbuf, msdu_info, peer_id, NULL); in dp_tx_send_msdu_single_wrapper()
1170 qdf_nbuf_t nbuf, uint8_t desc_pool_id, in dp_tx_prepare_desc_single() argument
1182 if (dp_tx_limit_check(vdev, nbuf)) in dp_tx_prepare_desc_single()
1186 if (nbuf->protocol == QDF_NBUF_TRAC_EAPOL_ETH_TYPE) in dp_tx_prepare_desc_single()
1203 tx_desc->nbuf = nbuf; in dp_tx_prepare_desc_single()
1212 tx_desc->length = qdf_nbuf_headlen(nbuf); in dp_tx_prepare_desc_single()
1214 dp_tx_trace_pkt(soc, nbuf, tx_desc->id, vdev->vdev_id, in dp_tx_prepare_desc_single()
1218 if (!dp_tx_multipass_process(soc, vdev, nbuf, msdu_info)) in dp_tx_prepare_desc_single()
1223 if (dp_tx_is_nbuf_marked_exception(soc, nbuf)) in dp_tx_prepare_desc_single()
1267 align_pad = ((unsigned long) qdf_nbuf_data(nbuf)) & 0x7; in dp_tx_prepare_desc_single()
1269 if (qdf_unlikely(qdf_nbuf_headroom(nbuf) < align_pad)) { in dp_tx_prepare_desc_single()
1276 if (qdf_nbuf_push_head(nbuf, align_pad) == NULL) { in dp_tx_prepare_desc_single()
1281 htt_hdr_size = dp_tx_prepare_htt_metadata(vdev, nbuf, in dp_tx_prepare_desc_single()
1286 tx_desc->length = qdf_nbuf_headlen(nbuf); in dp_tx_prepare_desc_single()
1327 qdf_nbuf_t nbuf, struct dp_tx_msdu_info_s *msdu_info, in dp_tx_prepare_desc() argument
1335 if (dp_tx_limit_check(vdev, nbuf)) in dp_tx_prepare_desc()
1339 if (nbuf->protocol == QDF_NBUF_TRAC_EAPOL_ETH_TYPE) in dp_tx_prepare_desc()
1350 nbuf, tx_desc->id, DP_TX_DESC_COOKIE); in dp_tx_prepare_desc()
1355 tx_desc->nbuf = nbuf; in dp_tx_prepare_desc()
1362 dp_tx_trace_pkt(soc, nbuf, tx_desc->id, vdev->vdev_id, in dp_tx_prepare_desc()
1375 dp_tx_is_nbuf_marked_exception(soc, nbuf)) in dp_tx_prepare_desc()
1413 static qdf_nbuf_t dp_tx_prepare_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_prepare_raw() argument
1423 qdf_dot3_qosframe_t *qos_wh = (qdf_dot3_qosframe_t *) nbuf->data; in dp_tx_prepare_raw()
1426 1, qdf_nbuf_len(nbuf)); in dp_tx_prepare_raw()
1442 for (curr_nbuf = nbuf, i = 0; curr_nbuf; in dp_tx_prepare_raw()
1485 return nbuf; in dp_tx_prepare_raw()
1489 while (nbuf) { in dp_tx_prepare_raw()
1490 curr_nbuf = nbuf; in dp_tx_prepare_raw()
1497 nbuf = qdf_nbuf_next(nbuf); in dp_tx_prepare_raw()
1514 qdf_nbuf_t nbuf) in dp_tx_raw_prepare_unset() argument
1516 qdf_nbuf_t cur_nbuf = nbuf; in dp_tx_raw_prepare_unset()
1528 qdf_nbuf_t nbuf) in dp_vdev_peer_stats_update_protocol_cnt_tx() argument
1536 nbuf_local = nbuf; in dp_vdev_peer_stats_update_protocol_cnt_tx()
1577 tcl_data.nbuf = tx_desc->nbuf; in dp_tx_attempt_coalescing()
1722 static void dp_tx_get_tid(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_get_tid() argument
1734 DP_TX_TID_OVERRIDE(msdu_info, nbuf); in dp_tx_get_tid()
1736 eh = (qdf_ether_header_t *)nbuf->data; in dp_tx_get_tid()
1741 (qdf_dot3_qosframe_t *) nbuf->data; in dp_tx_get_tid()
1750 llcHdr = (qdf_llc_t *)(nbuf->data + sizeof(qdf_ether_header_t)); in dp_tx_get_tid()
1755 ether_type = (uint16_t)*(nbuf->data + 2*QDF_MAC_ADDR_SIZE + in dp_tx_get_tid()
1761 ether_type = (uint16_t)*(nbuf->data + 2*QDF_MAC_ADDR_SIZE in dp_tx_get_tid()
1779 if (qdf_nbuf_is_ipv4_pkt(nbuf)) { in dp_tx_get_tid()
1781 if (qdf_nbuf_is_ipv4_dhcp_pkt(nbuf)) { in dp_tx_get_tid()
1796 } else if (qdf_nbuf_is_ipv6_pkt(nbuf)) { in dp_tx_get_tid()
1808 } else if (qdf_nbuf_is_ipv4_eapol_pkt(nbuf)) in dp_tx_get_tid()
1810 else if (qdf_nbuf_is_ipv4_arp_pkt(nbuf)) { in dp_tx_get_tid()
1851 static inline void dp_tx_classify_tid(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_classify_tid() argument
1854 DP_TX_TID_OVERRIDE(msdu_info, nbuf); in dp_tx_classify_tid()
1866 uint32_t tid = qdf_nbuf_get_priority(nbuf); in dp_tx_classify_tid()
1877 dp_tx_get_tid(vdev, nbuf, msdu_info); in dp_tx_classify_tid()
1943 qdf_nbuf_t nbuf = tx_desc->nbuf; in dp_non_std_htt_tx_comp_free_buff() local
1957 qdf_nbuf_set_next(nbuf, NULL); in dp_non_std_htt_tx_comp_free_buff()
1960 nbuf, tx_status); in dp_non_std_htt_tx_comp_free_buff()
1969 qdf_nbuf_unmap_single(soc->osdev, nbuf, QDF_DMA_TO_DEVICE); in dp_non_std_htt_tx_comp_free_buff()
1970 qdf_nbuf_free(nbuf); in dp_non_std_htt_tx_comp_free_buff()
1986 qdf_nbuf_t nbuf) in dp_tx_msdu_single_map() argument
1990 nbuf, in dp_tx_msdu_single_map()
1992 nbuf->len); in dp_tx_msdu_single_map()
1994 return qdf_nbuf_map_single(vdev->osdev, nbuf, in dp_tx_msdu_single_map()
2011 qdf_nbuf_t nbuf) in dp_tx_msdu_single_map() argument
2014 nbuf, in dp_tx_msdu_single_map()
2016 nbuf->len); in dp_tx_msdu_single_map()
2023 qdf_nbuf_t nbuf) in dp_tx_nbuf_map_regular() argument
2027 ret = dp_tx_msdu_single_map(vdev, tx_desc, nbuf); in dp_tx_nbuf_map_regular()
2031 return qdf_nbuf_mapped_paddr_get(nbuf); in dp_tx_nbuf_map_regular()
2038 desc->nbuf, in dp_tx_nbuf_unmap_regular()
2046 is_nbuf_frm_rmnet(qdf_nbuf_t nbuf, struct dp_tx_msdu_info_s *msdu_info) in is_nbuf_frm_rmnet() argument
2054 ingress_dev = dev_get_by_index(dev_net(nbuf->dev), nbuf->skb_iif); in is_nbuf_frm_rmnet()
2061 frag = &(skb_shinfo(nbuf)->frags[0]); in is_nbuf_frm_rmnet()
2064 linear_data_len = skb_headlen(nbuf); in is_nbuf_frm_rmnet()
2068 memcpy(payload_addr, nbuf->data, linear_data_len); in is_nbuf_frm_rmnet()
2098 is_nbuf_frm_rmnet(qdf_nbuf_t nbuf, struct dp_tx_msdu_info_s *msdu_info) in is_nbuf_frm_rmnet() argument
2115 qdf_nbuf_t nbuf) in dp_tx_nbuf_map() argument
2118 qdf_nbuf_dma_clean_range((void *)nbuf->data, in dp_tx_nbuf_map()
2119 (void *)(nbuf->data + nbuf->len)); in dp_tx_nbuf_map()
2120 return (qdf_dma_addr_t)qdf_mem_virt_to_phys(nbuf->data); in dp_tx_nbuf_map()
2122 return dp_tx_nbuf_map_regular(vdev, tx_desc, nbuf); in dp_tx_nbuf_map()
2138 qdf_nbuf_t nbuf) in dp_tx_nbuf_map() argument
2140 return dp_tx_nbuf_map_regular(vdev, tx_desc, nbuf); in dp_tx_nbuf_map()
2207 qdf_nbuf_t nbuf = tx_desc->nbuf; in dp_mesh_tx_comp_free_buff() local
2209 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_mesh_tx_comp_free_buff()
2218 return nbuf; in dp_mesh_tx_comp_free_buff()
2220 qdf_nbuf_free(nbuf); in dp_mesh_tx_comp_free_buff()
2223 vdev->osif_tx_free_ext((nbuf)); in dp_mesh_tx_comp_free_buff()
2226 return nbuf; in dp_mesh_tx_comp_free_buff()
2228 qdf_nbuf_free(nbuf); in dp_mesh_tx_comp_free_buff()
2355 qdf_nbuf_t nbuf, in tx_sw_drop_stats_inc() argument
2359 if (qdf_nbuf_is_ipv4_eapol_pkt(nbuf)) { in tx_sw_drop_stats_inc()
2385 qdf_nbuf_t nbuf, in tx_sw_drop_stats_inc() argument
2427 qdf_nbuf_t nbuf) in dp_tx_get_driver_ingress_ts() argument
2432 msdu_info->driver_ingress_ts = qdf_nbuf_get_tx_ts(nbuf, true); in dp_tx_get_driver_ingress_ts()
2995 qdf_nbuf_t nbuf) in dp_tx_get_driver_ingress_ts() argument
3017 dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_send_msdu_single() argument
3033 tx_desc = dp_tx_prepare_desc_single(vdev, nbuf, tx_q->desc_pool_id, in dp_tx_send_msdu_single()
3067 paddr = dp_tx_nbuf_map(vdev, tx_desc, nbuf); in dp_tx_send_msdu_single()
3079 dp_tx_desc_history_add(soc, tx_desc->dma_addr, nbuf, in dp_tx_send_msdu_single()
3090 dp_tx_desc_history_add(soc, tx_desc->dma_addr, nbuf, in dp_tx_send_msdu_single()
3099 tx_sw_drop_stats_inc(pdev, nbuf, drop_code); in dp_tx_send_msdu_single()
3106 dp_tx_get_tid(vdev, nbuf, msdu_info); in dp_tx_send_msdu_single()
3107 tx_sw_drop_stats_inc(pdev, nbuf, drop_code); in dp_tx_send_msdu_single()
3111 return nbuf; in dp_tx_send_msdu_single()
3143 qdf_nbuf_t nbuf = desc->nbuf; in dp_tx_comp_free_buf() local
3147 if (!nbuf) in dp_tx_comp_free_buf()
3158 dp_tx_desc_history_add(soc, desc->dma_addr, desc->nbuf, in dp_tx_comp_free_buf()
3162 desc->nbuf, desc->id, type); in dp_tx_comp_free_buf()
3177 qdf_nbuf_unmap_nbytes_single(soc->osdev, nbuf, in dp_tx_comp_free_buf()
3179 qdf_nbuf_headlen(nbuf)); in dp_tx_comp_free_buf()
3196 if ((desc->flags & DP_TX_DESC_FLAG_ME) && qdf_nbuf_is_cloned(nbuf)) in dp_tx_comp_free_buf()
3199 dp_tx_desc_history_add(soc, desc->dma_addr, desc->nbuf, desc->id, type); in dp_tx_comp_free_buf()
3205 if (dp_tx_traffic_end_indication_enq_ind_pkt(soc, desc, nbuf)) in dp_tx_comp_free_buf()
3210 return nbuf; in dp_tx_comp_free_buf()
3212 qdf_nbuf_free(nbuf); in dp_tx_comp_free_buf()
3226 dp_tx_sg_unmap_buf(struct dp_soc *soc, qdf_nbuf_t nbuf, in dp_tx_sg_unmap_buf() argument
3232 qdf_nbuf_unmap_nbytes_single(soc->osdev, nbuf, QDF_DMA_TO_DEVICE, in dp_tx_sg_unmap_buf()
3233 qdf_nbuf_headlen(nbuf)); in dp_tx_sg_unmap_buf()
3247 qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_send_msdu_multiple() argument
3262 nbuf = msdu_info->u.sg_info.curr_seg->nbuf; in dp_tx_send_msdu_multiple()
3275 tx_desc = dp_tx_prepare_desc(vdev, nbuf, msdu_info, in dp_tx_send_msdu_multiple()
3291 curr_seg->nbuf, in dp_tx_send_msdu_multiple()
3301 .curr_seg->nbuf); in dp_tx_send_msdu_multiple()
3306 nbuf = msdu_info->u.sg_info in dp_tx_send_msdu_multiple()
3307 .curr_seg->nbuf; in dp_tx_send_msdu_multiple()
3317 nbuf, 0, DP_TX_DESC_UNMAP); in dp_tx_send_msdu_multiple()
3333 dp_tx_sg_unmap_buf(soc, nbuf, msdu_info); in dp_tx_send_msdu_multiple()
3371 qdf_nbuf_inc_users(nbuf); in dp_tx_send_msdu_multiple()
3396 dp_tx_get_tid(vdev, nbuf, msdu_info); in dp_tx_send_msdu_multiple()
3410 curr_seg->nbuf, in dp_tx_send_msdu_multiple()
3420 .curr_seg->nbuf); in dp_tx_send_msdu_multiple()
3427 nbuf = msdu_info->u.sg_info in dp_tx_send_msdu_multiple()
3428 .curr_seg->nbuf; in dp_tx_send_msdu_multiple()
3454 dp_tx_sg_unmap_buf(soc, nbuf, msdu_info); in dp_tx_send_msdu_multiple()
3479 nbuf = msdu_info->u.sg_info.curr_seg->nbuf; in dp_tx_send_msdu_multiple()
3486 nbuf = NULL; in dp_tx_send_msdu_multiple()
3489 return nbuf; in dp_tx_send_msdu_multiple()
3503 static qdf_nbuf_t dp_tx_prepare_sg(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_prepare_sg() argument
3512 nr_frags = qdf_nbuf_get_nr_frags(nbuf); in dp_tx_prepare_sg()
3515 qdf_nbuf_map_nbytes_single(vdev->osdev, nbuf, in dp_tx_prepare_sg()
3517 qdf_nbuf_headlen(nbuf))) { in dp_tx_prepare_sg()
3521 qdf_nbuf_free(nbuf); in dp_tx_prepare_sg()
3525 paddr = qdf_nbuf_mapped_paddr_get(nbuf); in dp_tx_prepare_sg()
3528 seg_info->frags[0].len = qdf_nbuf_headlen(nbuf); in dp_tx_prepare_sg()
3529 seg_info->frags[0].vaddr = (void *) nbuf; in dp_tx_prepare_sg()
3533 nbuf, 0, in dp_tx_prepare_sg()
3543 paddr = qdf_nbuf_get_tx_frag_paddr(nbuf); in dp_tx_prepare_sg()
3548 qdf_nbuf_get_frag_size(nbuf, cur_frag); in dp_tx_prepare_sg()
3552 seg_info->total_len = qdf_nbuf_len(nbuf); in dp_tx_prepare_sg()
3560 return nbuf; in dp_tx_prepare_sg()
3563 qdf_nbuf_mapped_paddr_set(nbuf, in dp_tx_prepare_sg()
3567 qdf_nbuf_unmap_nbytes_single(vdev->osdev, nbuf, in dp_tx_prepare_sg()
3577 qdf_nbuf_free(nbuf); in dp_tx_prepare_sg()
3624 qdf_nbuf_t dp_tx_extract_mesh_meta_data(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_extract_mesh_meta_data() argument
3631 mhdr = (struct meta_hdr_s *)qdf_nbuf_data(nbuf); in dp_tx_extract_mesh_meta_data()
3633 if (CB_FTYPE_MESH_TX_INFO != qdf_nbuf_get_tx_ftype(nbuf)) { in dp_tx_extract_mesh_meta_data()
3674 if (qdf_nbuf_pull_head(nbuf, sizeof(struct meta_hdr_s)) == NULL) { in dp_tx_extract_mesh_meta_data()
3676 qdf_nbuf_free(nbuf); in dp_tx_extract_mesh_meta_data()
3680 msdu_info->tid = qdf_nbuf_get_priority(nbuf); in dp_tx_extract_mesh_meta_data()
3692 return nbuf; in dp_tx_extract_mesh_meta_data()
3696 qdf_nbuf_t dp_tx_extract_mesh_meta_data(struct dp_vdev *vdev, qdf_nbuf_t nbuf, in dp_tx_extract_mesh_meta_data() argument
3699 return nbuf; in dp_tx_extract_mesh_meta_data()
3735 bool dp_tx_mcast_enhance(struct dp_vdev *vdev, qdf_nbuf_t nbuf) in dp_tx_mcast_enhance() argument
3738 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_mcast_enhance()
3743 eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf); in dp_tx_mcast_enhance()
3747 qdf_nbuf_set_next(nbuf, NULL); in dp_tx_mcast_enhance()
3750 qdf_nbuf_len(nbuf)); in dp_tx_mcast_enhance()
3751 if (dp_tx_prepare_send_me(vdev, nbuf) == in dp_tx_mcast_enhance()
3757 if (dp_tx_prepare_send_igmp_me(vdev, nbuf) == in dp_tx_mcast_enhance()
3767 bool dp_tx_mcast_enhance(struct dp_vdev *vdev, qdf_nbuf_t nbuf) in dp_tx_mcast_enhance() argument
3781 static inline bool dp_tx_mcast_drop(struct dp_vdev *vdev, qdf_nbuf_t nbuf) in dp_tx_mcast_drop() argument
3783 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_mcast_drop()
3788 qdf_nbuf_data(nbuf); in dp_tx_mcast_drop()
3799 static inline bool dp_tx_mcast_drop(struct dp_vdev *vdev, qdf_nbuf_t nbuf) in dp_tx_mcast_drop() argument
3816 dp_tx_per_pkt_vdev_id_check(qdf_nbuf_t nbuf, struct dp_vdev *vdev) in dp_tx_per_pkt_vdev_id_check() argument
3819 qdf_ether_header_t *eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf); in dp_tx_per_pkt_vdev_id_check()
3857 qdf_nbuf_t nbuf, uint16_t sa_peer_id) in dp_tx_nawds_handler() argument
3900 nbuf_clone = qdf_nbuf_clone(nbuf); in dp_tx_nawds_handler()
3920 1, qdf_nbuf_len(nbuf), link_id); in dp_tx_nawds_handler()
3952 qdf_nbuf_t nbuf, in dp_tx_send_exception() argument
3959 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_send_exception()
3972 QDF_MAC_ADDR_REF(nbuf->data)); in dp_tx_send_exception()
3974 DP_STATS_INC_PKT(vdev, tx_i[xmit_type].rcvd, 1, qdf_nbuf_len(nbuf)); in dp_tx_send_exception()
4011 if (qdf_nbuf_is_tso(nbuf)) { in dp_tx_send_exception()
4014 qdf_nbuf_len(nbuf)); in dp_tx_send_exception()
4016 if (dp_tx_prepare_tso(vdev, nbuf, &msdu_info)) { in dp_tx_send_exception()
4018 qdf_nbuf_len(nbuf)); in dp_tx_send_exception()
4029 if (qdf_unlikely(qdf_nbuf_is_nonlinear(nbuf))) { in dp_tx_send_exception()
4032 nbuf = dp_tx_prepare_sg(vdev, nbuf, &seg_info, &msdu_info); in dp_tx_send_exception()
4033 if (!nbuf) in dp_tx_send_exception()
4039 qdf_nbuf_len(nbuf)); in dp_tx_send_exception()
4046 qdf_nbuf_len(nbuf)); in dp_tx_send_exception()
4060 dp_tx_get_queue(vdev, nbuf, &msdu_info.tx_queue); in dp_tx_send_exception()
4071 nbuf = soc->arch_ops.dp_tx_mlo_mcast_send(soc, vdev, in dp_tx_send_exception()
4072 nbuf, in dp_tx_send_exception()
4074 if (!nbuf) in dp_tx_send_exception()
4083 dp_tx_nawds_handler(soc, vdev, &msdu_info, nbuf, in dp_tx_send_exception()
4086 1, qdf_nbuf_len(nbuf)); in dp_tx_send_exception()
4089 nbuf = dp_tx_send_msdu_single(vdev, nbuf, &msdu_info, in dp_tx_send_exception()
4104 nbuf = dp_tx_send_msdu_single(vdev, nbuf, &msdu_info, in dp_tx_send_exception()
4110 return nbuf; in dp_tx_send_exception()
4113 nbuf = dp_tx_send_msdu_multiple(vdev, nbuf, &msdu_info); in dp_tx_send_exception()
4119 return nbuf; in dp_tx_send_exception()
4124 uint8_t vdev_id, qdf_nbuf_t nbuf, in dp_tx_send_exception_vdev_id_check() argument
4130 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_send_exception_vdev_id_check()
4135 if (qdf_unlikely(dp_tx_per_pkt_vdev_id_check(nbuf, vdev) in dp_tx_send_exception_vdev_id_check()
4146 return dp_tx_send_exception(soc_hdl, vdev_id, nbuf, tx_exc_metadata); in dp_tx_send_exception_vdev_id_check()
4152 return nbuf; in dp_tx_send_exception_vdev_id_check()
4157 qdf_nbuf_t nbuf) in dp_tx_send_mesh() argument
4165 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_send_mesh()
4167 nbuf_mesh = qdf_nbuf_unshare(nbuf); in dp_tx_send_mesh()
4171 return nbuf; in dp_tx_send_mesh()
4178 return nbuf; in dp_tx_send_mesh()
4181 nbuf = nbuf_mesh; in dp_tx_send_mesh()
4183 mhdr = (struct meta_hdr_s *)qdf_nbuf_data(nbuf); in dp_tx_send_mesh()
4190 qdf_nbuf_set_priority(nbuf, HTT_TX_EXT_TID_NON_QOS_MCAST_BCAST); in dp_tx_send_mesh()
4194 nbuf_clone = qdf_nbuf_clone(nbuf); in dp_tx_send_mesh()
4199 return nbuf; in dp_tx_send_mesh()
4214 qdf_nbuf_set_tx_ftype(nbuf, CB_FTYPE_MESH_TX_INFO); in dp_tx_send_mesh()
4216 qdf_nbuf_set_tx_ftype(nbuf, CB_FTYPE_INVALID); in dp_tx_send_mesh()
4218 nbuf = dp_tx_send(soc_hdl, vdev_id, nbuf); in dp_tx_send_mesh()
4219 if ((!nbuf) && no_enc_frame) { in dp_tx_send_mesh()
4224 return nbuf; in dp_tx_send_mesh()
4230 qdf_nbuf_t nbuf) in dp_tx_send_mesh() argument
4232 return dp_tx_send(soc_hdl, vdev_id, nbuf); in dp_tx_send_mesh()
4239 qdf_nbuf_t nbuf) in dp_tx_drop() argument
4243 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_drop()
4247 return nbuf; in dp_tx_drop()
4250 return nbuf; in dp_tx_drop()
4254 qdf_nbuf_t nbuf, in dp_tx_exc_drop() argument
4257 return dp_tx_drop(soc_hdl, vdev_id, nbuf); in dp_tx_exc_drop()
4269 static inline void dp_vdev_tx_mark_to_fw(qdf_nbuf_t nbuf, struct dp_vdev *vdev) in dp_vdev_tx_mark_to_fw() argument
4272 QDF_NBUF_CB_TX_PACKET_TO_FW(nbuf) = 1; in dp_vdev_tx_mark_to_fw()
4275 static inline void dp_vdev_tx_mark_to_fw(qdf_nbuf_t nbuf, struct dp_vdev *vdev) in dp_vdev_tx_mark_to_fw() argument
4281 qdf_nbuf_t nbuf) in dp_tx_send() argument
4295 return nbuf; in dp_tx_send()
4306 return nbuf; in dp_tx_send()
4308 dp_tx_get_driver_ingress_ts(vdev, &msdu_info, nbuf); in dp_tx_send()
4310 dp_vdev_tx_mark_to_fw(nbuf, vdev); in dp_tx_send()
4317 xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_send()
4319 DP_STATS_INC_PKT(vdev, tx_i[xmit_type].rcvd, 1, qdf_nbuf_len(nbuf)); in dp_tx_send()
4322 qdf_nbuf_t nbuf_mesh = dp_tx_extract_mesh_meta_data(vdev, nbuf, in dp_tx_send()
4326 return nbuf; in dp_tx_send()
4328 nbuf = nbuf_mesh; in dp_tx_send()
4339 dp_tx_get_queue(vdev, nbuf, &msdu_info.tx_queue); in dp_tx_send()
4354 dp_tx_classify_tid(vdev, nbuf, &msdu_info); in dp_tx_send()
4363 if (qdf_nbuf_is_tso(nbuf)) { in dp_tx_send()
4366 qdf_nbuf_len(nbuf)); in dp_tx_send()
4368 if (dp_tx_prepare_tso(vdev, nbuf, &msdu_info)) { in dp_tx_send()
4370 qdf_nbuf_len(nbuf)); in dp_tx_send()
4371 return nbuf; in dp_tx_send()
4381 if (qdf_unlikely(qdf_nbuf_is_nonlinear(nbuf))) { in dp_tx_send()
4382 if (qdf_nbuf_get_nr_frags(nbuf) > DP_TX_MAX_NUM_FRAGS - 1) { in dp_tx_send()
4383 if (qdf_unlikely(qdf_nbuf_linearize(nbuf))) in dp_tx_send()
4384 return nbuf; in dp_tx_send()
4388 if (qdf_unlikely(is_nbuf_frm_rmnet(nbuf, &msdu_info))) in dp_tx_send()
4391 nbuf = dp_tx_prepare_sg(vdev, nbuf, &seg_info, in dp_tx_send()
4393 if (!nbuf) in dp_tx_send()
4399 qdf_nbuf_len(nbuf)); in dp_tx_send()
4405 if (qdf_unlikely(!dp_tx_mcast_enhance(vdev, nbuf))) in dp_tx_send()
4408 if (qdf_unlikely(dp_tx_mcast_drop(vdev, nbuf))) in dp_tx_send()
4409 return nbuf; in dp_tx_send()
4415 nbuf = dp_tx_prepare_raw(vdev, nbuf, &seg_info, &msdu_info); in dp_tx_send()
4416 if (!nbuf) in dp_tx_send()
4427 qdf_nbuf_data(nbuf); in dp_tx_send()
4444 dp_tx_nawds_handler(soc, vdev, &msdu_info, nbuf, in dp_tx_send()
4449 1, qdf_nbuf_len(nbuf)); in dp_tx_send()
4459 nbuf = dp_tx_send_msdu_single_wrapper(vdev, nbuf, &msdu_info, in dp_tx_send()
4461 return nbuf; in dp_tx_send()
4464 nbuf = dp_tx_send_msdu_multiple(vdev, nbuf, &msdu_info); in dp_tx_send()
4466 if (qdf_unlikely(nbuf && msdu_info.frm_type == dp_tx_frm_raw)) in dp_tx_send()
4467 dp_tx_raw_prepare_unset(vdev->pdev->soc, nbuf); in dp_tx_send()
4469 return nbuf; in dp_tx_send()
4473 uint8_t vdev_id, qdf_nbuf_t nbuf) in dp_tx_send_vdev_id_check() argument
4477 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf); in dp_tx_send_vdev_id_check()
4480 return nbuf; in dp_tx_send_vdev_id_check()
4491 return nbuf; in dp_tx_send_vdev_id_check()
4493 if (qdf_unlikely(dp_tx_per_pkt_vdev_id_check(nbuf, vdev) in dp_tx_send_vdev_id_check()
4498 return nbuf; in dp_tx_send_vdev_id_check()
4501 return dp_tx_send(soc_hdl, vdev_id, nbuf); in dp_tx_send_vdev_id_check()
4512 int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf) in dp_tx_proxy_arp() argument
4515 return vdev->osif_proxy_arp(vdev->osif_vdev, nbuf); in dp_tx_proxy_arp()
4527 int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf) in dp_tx_proxy_arp() argument
4539 qdf_nbuf_t nbuf, in dp_tx_reinject_mlo_hdl() argument
4544 soc->arch_ops.dp_tx_mcast_handler(soc, vdev, nbuf); in dp_tx_reinject_mlo_hdl()
4556 qdf_nbuf_t nbuf, in dp_tx_reinject_mlo_hdl() argument
4566 qdf_nbuf_t nbuf, in dp_tx_reinject_mlo_hdl() argument
4581 qdf_nbuf_t nbuf = tx_desc->nbuf; local
4587 qdf_ether_header_t *eth_hdr = (qdf_ether_header_t *)(qdf_nbuf_data(nbuf));
4588 struct ieee80211_frame_addr4 *wh = (struct ieee80211_frame_addr4 *)(qdf_nbuf_data(nbuf));
4591 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(nbuf);
4598 qdf_nbuf_len(tx_desc->nbuf));
4600 if (dp_tx_reinject_mlo_hdl(soc, vdev, tx_desc, nbuf, reinject_reason))
4634 DP_TX_FREE_SINGLE_BUF(vdev->pdev->soc, tx_desc->nbuf);
4658 (dp_tx_proxy_arp(vdev, nbuf) == QDF_STATUS_SUCCESS))) {
4662 nbuf_copy = qdf_nbuf_copy(nbuf);
4669 dp_tx_get_queue(vdev, nbuf,
4672 qdf_nbuf_get_vdev_xmit_type(nbuf);
4687 qdf_nbuf_unmap_nbytes_single(vdev->osdev, nbuf,
4688 QDF_DMA_TO_DEVICE, nbuf->len);
4689 qdf_nbuf_free(nbuf);
4700 uint8_t xmit_type = qdf_nbuf_get_vdev_xmit_type(tx_desc->nbuf);
4706 qdf_nbuf_len(tx_desc->nbuf));
4708 DP_TX_FREE_SINGLE_BUF(soc, tx_desc->nbuf);
4724 qdf_nbuf_t netbuf = tx_desc->nbuf;
4800 timestamp_ingress = qdf_nbuf_get_timestamp_us(tx_desc->nbuf);
4838 timestamp_ingress = qdf_nbuf_get_timestamp(tx_desc->nbuf);
5166 timestamp_ingress = qdf_nbuf_get_timestamp(tx_desc->nbuf);
5193 inline void dp_update_no_ack_stats(qdf_nbuf_t nbuf, argument
5200 dp_update_no_ack_stats(qdf_nbuf_t nbuf, struct dp_txrx_peer *txrx_peer, argument
5205 DPTRACE(qdf_dp_track_noack_check(nbuf, &subtype));
5366 length = qdf_nbuf_len(tx_desc->nbuf);
5413 dp_update_no_ack_stats(tx_desc->nbuf, txrx_peer, link_id);
5664 qdf_trace_dp_packet(desc->nbuf, QDF_TX,
5683 desc->nbuf,
5689 desc->nbuf);
5735 stats_cbk(tx_desc->nbuf, osif_dev, PKT_TYPE_TX_HOST_FW_SENT, &pkt_type);
5737 stats_cbk(tx_desc->nbuf, osif_dev, PKT_TYPE_TX_ACK_CNT,
5973 uint32_t length, qdf_nbuf_t nbuf) argument
5975 if (QDF_NBUF_CB_GET_IS_MCAST(nbuf))
5982 uint32_t length, qdf_nbuf_t nbuf) argument
5996 dp_tx_comp_set_nbuf_band(struct dp_soc *soc, qdf_nbuf_t nbuf, argument
6004 if ((QDF_NBUF_CB_GET_PACKET_TYPE(nbuf) !=
6006 QDF_NBUF_CB_GET_PACKET_TYPE(nbuf) !=
6008 QDF_NBUF_CB_GET_PACKET_TYPE(nbuf) !=
6010 QDF_NBUF_CB_GET_IS_BCAST(nbuf))
6013 mac_addr = (struct qdf_mac_addr *)(qdf_nbuf_data(nbuf) +
6025 qdf_nbuf_tx_set_band(nbuf, txrx_peer->ll_band[link_id]);
6032 dp_tx_comp_set_nbuf_band(struct dp_soc *soc, qdf_nbuf_t nbuf, argument
6047 qdf_nbuf_t nbuf = tx_desc->nbuf; local
6052 if (!nbuf) {
6057 eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf);
6099 dp_tx_comp_set_nbuf_band(soc, nbuf, ts);
6116 dp_tx_set_nbuf_band(nbuf, txrx_peer, link_id);
6123 if (qdf_nbuf_tx_notify_comp_get(nbuf))
6125 nbuf, ts->status);
6160 dp_update_mcast_stats(txrx_peer, link_id, length, nbuf);
6169 dp_tx_send_pktlog(soc, vdev->pdev, tx_desc, nbuf, dp_status);
6180 DPTRACE(qdf_dp_trace_ptr(tx_desc->nbuf,
6183 qdf_nbuf_data_addr(nbuf),
6184 sizeof(qdf_nbuf_data(nbuf)),
6238 qdf_nbuf_t nbuf = NULL; local
6241 nbuf = next->nbuf;
6242 if (nbuf)
6243 qdf_prefetch(nbuf);
6285 xmit_type = qdf_nbuf_get_vdev_xmit_type(desc->nbuf);
6287 qdf_nbuf_len(desc->nbuf));
6288 soc->arch_ops.dp_tx_mcast_handler(soc, vdev, desc->nbuf);
6315 qdf_nbuf_t nbuf = NULL; local
6317 nbuf = desc->nbuf;
6319 qdf_nbuf_dev_queue_head(nbuf_queue_head, nbuf);
6321 qdf_nbuf_free(nbuf);
6326 qdf_nbuf_t nbuf) argument
6328 if (!nbuf)
6331 if (nbuf->is_from_recycler)
6332 qdf_nbuf_dev_queue_head(nbuf_queue_head, nbuf);
6334 qdf_nbuf_free(nbuf);
6352 qdf_nbuf_free(desc->nbuf);
6357 qdf_nbuf_t nbuf) argument
6359 qdf_nbuf_free(nbuf);
6463 qdf_nbuf_t nbuf; local
6468 nbuf = desc->nbuf;
6469 dp_tx_nbuf_dev_queue_free_no_flag(&h, nbuf);
6479 nbuf = dp_ppeds_tx_desc_free(soc, desc);
6480 dp_tx_nbuf_dev_queue_free_no_flag(&h, nbuf);
6500 dp_tx_desc_history_add(soc, desc->dma_addr, desc->nbuf,
6537 dp_tx_comp_warn("tx_desc->nbuf: %pK", tx_desc->nbuf);
7858 qdf_nbuf_t nbuf) argument
7865 qdf_add_dp_pkt_timestamp(nbuf, index, tsf_time);
7989 qdf_nbuf_t nbuf, argument
8006 nbuf_copy = qdf_nbuf_copy(nbuf);
8018 qdf_nbuf_get_vdev_xmit_type(nbuf);
8032 qdf_nbuf_t nbuf, argument
8039 qdf_nbuf_t nbuf, argument
8049 is_spcl_peer = dp_tx_need_multipass_process(soc, vdev, nbuf, &vlan_id);
8056 dp_tx_remove_vlan_tag(vdev, nbuf);
8060 dp_tx_multipass_send_pkt_to_repeater(soc, vdev, nbuf, msdu_info);
8069 dp_tx_remove_vlan_tag(vdev, nbuf);