Lines Matching refs:sq
115 struct otx2_snd_queue *sq, in otx2_xdp_snd_pkt_handler() argument
123 sg = &sq->sg[snd_comp->sqe_id]; in otx2_xdp_snd_pkt_handler()
134 struct otx2_snd_queue *sq, in otx2_snd_pkt_handler() argument
150 sg = &sq->sg[snd_comp->sqe_id]; in otx2_snd_pkt_handler()
156 timestamp = ((u64 *)sq->timestamps->base)[snd_comp->sqe_id]; in otx2_snd_pkt_handler()
445 struct otx2_snd_queue *sq; in otx2_tx_napi_handler() local
457 sq = &pfvf->qset.sq[qidx]; in otx2_tx_napi_handler()
468 otx2_xdp_snd_pkt_handler(pfvf, sq, cqe); in otx2_tx_napi_handler()
470 otx2_snd_pkt_handler(pfvf, cq, sq, cqe, budget, in otx2_tx_napi_handler()
478 sq->cons_head++; in otx2_tx_napi_handler()
479 sq->cons_head &= (sq->sqe_cnt - 1); in otx2_tx_napi_handler()
567 void otx2_sqe_flush(void *dev, struct otx2_snd_queue *sq, in otx2_sqe_flush() argument
576 memcpy(sq->lmt_addr, sq->sqe_base, size); in otx2_sqe_flush()
577 status = otx2_lmt_flush(sq->io_addr); in otx2_sqe_flush()
580 sq->head++; in otx2_sqe_flush()
581 sq->head &= (sq->sqe_cnt - 1); in otx2_sqe_flush()
586 static bool otx2_sqe_add_sg(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sqe_add_sg() argument
594 sq->sg[sq->head].num_segs = 0; in otx2_sqe_add_sg()
598 sg = (struct nix_sqe_sg_s *)(sq->sqe_base + *offset); in otx2_sqe_add_sg()
621 sq->sg[sq->head].dma_addr[seg] = dma_addr; in otx2_sqe_add_sg()
622 sq->sg[sq->head].size[seg] = len; in otx2_sqe_add_sg()
623 sq->sg[sq->head].num_segs++; in otx2_sqe_add_sg()
626 sq->sg[sq->head].skb = (u64)skb; in otx2_sqe_add_sg()
631 static void otx2_sqe_add_ext(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sqe_add_ext() argument
636 ext = (struct nix_sqe_ext_s *)(sq->sqe_base + *offset); in otx2_sqe_add_ext()
701 static void otx2_sqe_add_mem(struct otx2_snd_queue *sq, int *offset, in otx2_sqe_add_mem() argument
707 mem = (struct nix_sqe_mem_s *)(sq->sqe_base + *offset); in otx2_sqe_add_mem()
724 static void otx2_sqe_add_hdr(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sqe_add_hdr() argument
736 sqe_hdr->aura = sq->aura_id; in otx2_sqe_add_hdr()
739 sqe_hdr->sq = qidx; in otx2_sqe_add_hdr()
743 sqe_hdr->sqe_id = sq->head; in otx2_sqe_add_hdr()
772 struct otx2_snd_queue *sq, in otx2_dma_map_tso_skb() argument
776 struct sg_list *sg = &sq->sg[sqe]; in otx2_dma_map_tso_skb()
804 static u64 otx2_tso_frag_dma_addr(struct otx2_snd_queue *sq, in otx2_tso_frag_dma_addr() argument
808 struct sg_list *sg = &sq->sg[sqe]; in otx2_tso_frag_dma_addr()
822 static void otx2_sqe_tso_add_sg(struct otx2_snd_queue *sq, in otx2_sqe_tso_add_sg() argument
833 sg = (struct nix_sqe_sg_s *)(sq->sqe_base + *offset); in otx2_sqe_tso_add_sg()
853 static void otx2_sq_append_tso(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sq_append_tso() argument
859 int first_sqe = sq->head; in otx2_sq_append_tso()
868 if (otx2_dma_map_tso_skb(pfvf, sq, skb, first_sqe, hdr_len)) { in otx2_sq_append_tso()
883 memset(sq->sqe_base, 0, sq->sqe_size); in otx2_sq_append_tso()
884 sqe_hdr = (struct nix_sqe_hdr_s *)(sq->sqe_base); in otx2_sq_append_tso()
885 otx2_sqe_add_hdr(pfvf, sq, sqe_hdr, skb, qidx); in otx2_sq_append_tso()
889 hdr = sq->tso_hdrs->base + (sq->head * TSO_HEADER_SIZE); in otx2_sq_append_tso()
892 sq->tso_hdrs->iova + (sq->head * TSO_HEADER_SIZE); in otx2_sq_append_tso()
905 otx2_tso_frag_dma_addr(sq, skb, in otx2_sq_append_tso()
915 otx2_sqe_tso_add_sg(sq, &list, &offset); in otx2_sq_append_tso()
926 sq->sg[first_sqe].skb = (u64)skb; in otx2_sq_append_tso()
934 pfvf->hw_ops->sqe_flush(pfvf, sq, offset, qidx); in otx2_sq_append_tso()
1052 struct otx2_snd_queue *sq, int *offset) in otx2_set_txtstamp() argument
1106 iova = sq->timestamps->iova + (sq->head * sizeof(u64)); in otx2_set_txtstamp()
1107 otx2_sqe_add_mem(sq, offset, NIX_SENDMEMALG_E_SETTSTMP, iova, in otx2_set_txtstamp()
1114 bool otx2_sq_append_skb(struct net_device *netdev, struct otx2_snd_queue *sq, in otx2_sq_append_skb() argument
1125 free_desc = (sq->cons_head - sq->head - 1 + sq->sqe_cnt) & (sq->sqe_cnt - 1); in otx2_sq_append_skb()
1126 if (free_desc < sq->sqe_thresh) in otx2_sq_append_skb()
1149 otx2_sq_append_tso(pfvf, sq, skb, qidx); in otx2_sq_append_skb()
1156 memset(sq->sqe_base + 8, 0, sq->sqe_size - 8); in otx2_sq_append_skb()
1157 sqe_hdr = (struct nix_sqe_hdr_s *)(sq->sqe_base); in otx2_sq_append_skb()
1158 otx2_sqe_add_hdr(pfvf, sq, sqe_hdr, skb, qidx); in otx2_sq_append_skb()
1162 otx2_sqe_add_ext(pfvf, sq, skb, &offset); in otx2_sq_append_skb()
1165 if (!otx2_sqe_add_sg(pfvf, sq, skb, num_segs, &offset)) { in otx2_sq_append_skb()
1166 otx2_dma_unmap_skb_frags(pfvf, &sq->sg[sq->head]); in otx2_sq_append_skb()
1170 otx2_set_txtstamp(pfvf, skb, sq, &offset); in otx2_sq_append_skb()
1177 pfvf->hw_ops->sqe_flush(pfvf, sq, offset, qidx); in otx2_sq_append_skb()
1220 struct otx2_snd_queue *sq; in otx2_cleanup_tx_cqes() local
1225 sq = &pfvf->qset.sq[cq->cint_idx]; in otx2_cleanup_tx_cqes()
1237 sg = &sq->sg[cqe->comp.sqe_id]; in otx2_cleanup_tx_cqes()
1272 static void otx2_xdp_sqe_add_sg(struct otx2_snd_queue *sq, u64 dma_addr, in otx2_xdp_sqe_add_sg() argument
1278 sg = (struct nix_sqe_sg_s *)(sq->sqe_base + *offset); in otx2_xdp_sqe_add_sg()
1287 sq->sg[sq->head].dma_addr[0] = dma_addr; in otx2_xdp_sqe_add_sg()
1288 sq->sg[sq->head].size[0] = len; in otx2_xdp_sqe_add_sg()
1289 sq->sg[sq->head].num_segs = 1; in otx2_xdp_sqe_add_sg()
1295 struct otx2_snd_queue *sq; in otx2_xdp_sq_append_pkt() local
1298 sq = &pfvf->qset.sq[qidx]; in otx2_xdp_sq_append_pkt()
1299 free_sqe = (sq->num_sqbs - *sq->aura_fc_addr) * sq->sqe_per_sqb; in otx2_xdp_sq_append_pkt()
1300 if (free_sqe < sq->sqe_thresh) in otx2_xdp_sq_append_pkt()
1303 memset(sq->sqe_base + 8, 0, sq->sqe_size - 8); in otx2_xdp_sq_append_pkt()
1305 sqe_hdr = (struct nix_sqe_hdr_s *)(sq->sqe_base); in otx2_xdp_sq_append_pkt()
1308 sqe_hdr->aura = sq->aura_id; in otx2_xdp_sq_append_pkt()
1310 sqe_hdr->sq = qidx; in otx2_xdp_sq_append_pkt()
1314 sqe_hdr->sqe_id = sq->head; in otx2_xdp_sq_append_pkt()
1318 otx2_xdp_sqe_add_sg(sq, iova, len, &offset); in otx2_xdp_sq_append_pkt()
1320 pfvf->hw_ops->sqe_flush(pfvf, sq, offset, qidx); in otx2_xdp_sq_append_pkt()