Lines Matching refs:sq
103 struct otx2_snd_queue *sq, in otx2_snd_pkt_handler() argument
119 sg = &sq->sg[snd_comp->sqe_id]; in otx2_snd_pkt_handler()
125 timestamp = ((u64 *)sq->timestamps->base)[snd_comp->sqe_id]; in otx2_snd_pkt_handler()
418 otx2_snd_pkt_handler(pfvf, cq, &pfvf->qset.sq[cq->cint_idx], in otx2_tx_napi_handler()
489 void otx2_sqe_flush(void *dev, struct otx2_snd_queue *sq, in otx2_sqe_flush() argument
498 memcpy(sq->lmt_addr, sq->sqe_base, size); in otx2_sqe_flush()
499 status = otx2_lmt_flush(sq->io_addr); in otx2_sqe_flush()
502 sq->head++; in otx2_sqe_flush()
503 sq->head &= (sq->sqe_cnt - 1); in otx2_sqe_flush()
508 static bool otx2_sqe_add_sg(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sqe_add_sg() argument
516 sq->sg[sq->head].num_segs = 0; in otx2_sqe_add_sg()
520 sg = (struct nix_sqe_sg_s *)(sq->sqe_base + *offset); in otx2_sqe_add_sg()
543 sq->sg[sq->head].dma_addr[seg] = dma_addr; in otx2_sqe_add_sg()
544 sq->sg[sq->head].size[seg] = len; in otx2_sqe_add_sg()
545 sq->sg[sq->head].num_segs++; in otx2_sqe_add_sg()
548 sq->sg[sq->head].skb = (u64)skb; in otx2_sqe_add_sg()
553 static void otx2_sqe_add_ext(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sqe_add_ext() argument
558 ext = (struct nix_sqe_ext_s *)(sq->sqe_base + *offset); in otx2_sqe_add_ext()
621 static void otx2_sqe_add_mem(struct otx2_snd_queue *sq, int *offset, in otx2_sqe_add_mem() argument
626 mem = (struct nix_sqe_mem_s *)(sq->sqe_base + *offset); in otx2_sqe_add_mem()
636 static void otx2_sqe_add_hdr(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sqe_add_hdr() argument
648 sqe_hdr->aura = sq->aura_id; in otx2_sqe_add_hdr()
651 sqe_hdr->sq = qidx; in otx2_sqe_add_hdr()
655 sqe_hdr->sqe_id = sq->head; in otx2_sqe_add_hdr()
684 struct otx2_snd_queue *sq, in otx2_dma_map_tso_skb() argument
688 struct sg_list *sg = &sq->sg[sqe]; in otx2_dma_map_tso_skb()
716 static u64 otx2_tso_frag_dma_addr(struct otx2_snd_queue *sq, in otx2_tso_frag_dma_addr() argument
720 struct sg_list *sg = &sq->sg[sqe]; in otx2_tso_frag_dma_addr()
734 static void otx2_sqe_tso_add_sg(struct otx2_snd_queue *sq, in otx2_sqe_tso_add_sg() argument
745 sg = (struct nix_sqe_sg_s *)(sq->sqe_base + *offset); in otx2_sqe_tso_add_sg()
765 static void otx2_sq_append_tso(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, in otx2_sq_append_tso() argument
771 int first_sqe = sq->head; in otx2_sq_append_tso()
780 if (otx2_dma_map_tso_skb(pfvf, sq, skb, first_sqe, hdr_len)) { in otx2_sq_append_tso()
795 memset(sq->sqe_base, 0, sq->sqe_size); in otx2_sq_append_tso()
796 sqe_hdr = (struct nix_sqe_hdr_s *)(sq->sqe_base); in otx2_sq_append_tso()
797 otx2_sqe_add_hdr(pfvf, sq, sqe_hdr, skb, qidx); in otx2_sq_append_tso()
801 hdr = sq->tso_hdrs->base + (sq->head * TSO_HEADER_SIZE); in otx2_sq_append_tso()
804 sq->tso_hdrs->iova + (sq->head * TSO_HEADER_SIZE); in otx2_sq_append_tso()
817 otx2_tso_frag_dma_addr(sq, skb, in otx2_sq_append_tso()
827 otx2_sqe_tso_add_sg(sq, &list, &offset); in otx2_sq_append_tso()
838 sq->sg[first_sqe].skb = (u64)skb; in otx2_sq_append_tso()
846 pfvf->hw_ops->sqe_flush(pfvf, sq, offset, qidx); in otx2_sq_append_tso()
889 struct otx2_snd_queue *sq, int *offset) in otx2_set_txtstamp() argument
896 iova = sq->timestamps->iova + (sq->head * sizeof(u64)); in otx2_set_txtstamp()
897 otx2_sqe_add_mem(sq, offset, NIX_SENDMEMALG_E_SETTSTMP, iova); in otx2_set_txtstamp()
903 bool otx2_sq_append_skb(struct net_device *netdev, struct otx2_snd_queue *sq, in otx2_sq_append_skb() argument
915 free_sqe = (sq->num_sqbs - *sq->aura_fc_addr) * sq->sqe_per_sqb; in otx2_sq_append_skb()
917 if (free_sqe < sq->sqe_thresh || in otx2_sq_append_skb()
938 otx2_sq_append_tso(pfvf, sq, skb, qidx); in otx2_sq_append_skb()
945 memset(sq->sqe_base + 8, 0, sq->sqe_size - 8); in otx2_sq_append_skb()
946 sqe_hdr = (struct nix_sqe_hdr_s *)(sq->sqe_base); in otx2_sq_append_skb()
947 otx2_sqe_add_hdr(pfvf, sq, sqe_hdr, skb, qidx); in otx2_sq_append_skb()
951 otx2_sqe_add_ext(pfvf, sq, skb, &offset); in otx2_sq_append_skb()
954 if (!otx2_sqe_add_sg(pfvf, sq, skb, num_segs, &offset)) { in otx2_sq_append_skb()
955 otx2_dma_unmap_skb_frags(pfvf, &sq->sg[sq->head]); in otx2_sq_append_skb()
959 otx2_set_txtstamp(pfvf, skb, sq, &offset); in otx2_sq_append_skb()
966 pfvf->hw_ops->sqe_flush(pfvf, sq, offset, qidx); in otx2_sq_append_skb()
1006 struct otx2_snd_queue *sq; in otx2_cleanup_tx_cqes() local
1011 sq = &pfvf->qset.sq[cq->cint_idx]; in otx2_cleanup_tx_cqes()
1023 sg = &sq->sg[cqe->comp.sqe_id]; in otx2_cleanup_tx_cqes()