Lines Matching refs:tq

233 static inline unsigned int txq_avail(const struct sge_txq *tq)  in txq_avail()  argument
235 return tq->size - 1 - tq->in_use; in txq_avail()
307 const struct ulptx_sgl *sgl, const struct sge_txq *tq) in unmap_sgl() argument
326 if (likely((u8 *)(p + 1) <= (u8 *)tq->stat)) { in unmap_sgl()
333 } else if ((u8 *)p == (u8 *)tq->stat) { in unmap_sgl()
334 p = (const struct ulptx_sge_pair *)tq->desc; in unmap_sgl()
336 } else if ((u8 *)p + 8 == (u8 *)tq->stat) { in unmap_sgl()
337 const __be64 *addr = (const __be64 *)tq->desc; in unmap_sgl()
345 const __be64 *addr = (const __be64 *)tq->desc; in unmap_sgl()
357 if ((u8 *)p == (u8 *)tq->stat) in unmap_sgl()
358 p = (const struct ulptx_sge_pair *)tq->desc; in unmap_sgl()
359 addr = ((u8 *)p + 16 <= (u8 *)tq->stat in unmap_sgl()
361 : *(const __be64 *)tq->desc); in unmap_sgl()
377 static void free_tx_desc(struct adapter *adapter, struct sge_txq *tq, in free_tx_desc() argument
381 unsigned int cidx = tq->cidx; in free_tx_desc()
386 sdesc = &tq->sdesc[cidx]; in free_tx_desc()
394 unmap_sgl(dev, sdesc->skb, sdesc->sgl, tq); in free_tx_desc()
400 if (++cidx == tq->size) { in free_tx_desc()
402 sdesc = tq->sdesc; in free_tx_desc()
405 tq->cidx = cidx; in free_tx_desc()
411 static inline int reclaimable(const struct sge_txq *tq) in reclaimable() argument
413 int hw_cidx = be16_to_cpu(tq->stat->cidx); in reclaimable()
414 int reclaimable = hw_cidx - tq->cidx; in reclaimable()
416 reclaimable += tq->size; in reclaimable()
431 struct sge_txq *tq, in reclaim_completed_tx() argument
434 int avail = reclaimable(tq); in reclaim_completed_tx()
444 free_tx_desc(adapter, tq, avail, unmap); in reclaim_completed_tx()
445 tq->in_use -= avail; in reclaim_completed_tx()
906 static void write_sgl(const struct sk_buff *skb, struct sge_txq *tq, in write_sgl() argument
935 to = (u8 *)end > (u8 *)tq->stat ? buf : sgl->sge; in write_sgl()
948 if (unlikely((u8 *)end > (u8 *)tq->stat)) { in write_sgl()
949 unsigned int part0 = (u8 *)tq->stat - (u8 *)sgl->sge, part1; in write_sgl()
953 part1 = (u8 *)end - (u8 *)tq->stat; in write_sgl()
954 memcpy(tq->desc, (u8 *)buf + part0, part1); in write_sgl()
955 end = (void *)tq->desc + part1; in write_sgl()
969 static inline void ring_tx_db(struct adapter *adapter, struct sge_txq *tq, in ring_tx_db() argument
980 if (unlikely(tq->bar2_addr == NULL)) { in ring_tx_db()
984 QID_V(tq->cntxt_id) | val); in ring_tx_db()
1000 if (n == 1 && tq->bar2_qid == 0) { in ring_tx_db()
1001 unsigned int index = (tq->pidx in ring_tx_db()
1002 ? (tq->pidx - 1) in ring_tx_db()
1003 : (tq->size - 1)); in ring_tx_db()
1004 __be64 *src = (__be64 *)&tq->desc[index]; in ring_tx_db()
1005 __be64 __iomem *dst = (__be64 __iomem *)(tq->bar2_addr + in ring_tx_db()
1029 writel(val | QID_V(tq->bar2_qid), in ring_tx_db()
1030 tq->bar2_addr + SGE_UDB_KDOORBELL); in ring_tx_db()
1057 static void inline_tx_skb(const struct sk_buff *skb, const struct sge_txq *tq, in inline_tx_skb() argument
1061 int left = (void *)tq->stat - pos; in inline_tx_skb()
1071 skb_copy_bits(skb, left, tq->desc, skb->len - left); in inline_tx_skb()
1072 pos = (void *)tq->desc + (skb->len - left); in inline_tx_skb()
1147 static inline void txq_advance(struct sge_txq *tq, unsigned int n) in txq_advance() argument
1149 tq->in_use += n; in txq_advance()
1150 tq->pidx += n; in txq_advance()
1151 if (tq->pidx >= tq->size) in txq_advance()
1152 tq->pidx -= tq->size; in txq_advance()
1421 struct sge_txq *tq = &txq->q; in t4vf_eth_xmit() local
1431 if (unlikely((void *)sgl == (void *)tq->stat)) { in t4vf_eth_xmit()
1432 sgl = (void *)tq->desc; in t4vf_eth_xmit()
1433 end = ((void *)tq->desc + ((void *)end - (void *)tq->stat)); in t4vf_eth_xmit()
1436 write_sgl(skb, tq, sgl, end, 0, addr); in t4vf_eth_xmit()
1439 last_desc = tq->pidx + ndesc - 1; in t4vf_eth_xmit()
1440 if (last_desc >= tq->size) in t4vf_eth_xmit()
1441 last_desc -= tq->size; in t4vf_eth_xmit()
1442 tq->sdesc[last_desc].skb = skb; in t4vf_eth_xmit()
1443 tq->sdesc[last_desc].sgl = sgl; in t4vf_eth_xmit()
2489 static void free_txq(struct adapter *adapter, struct sge_txq *tq) in free_txq() argument
2494 tq->size * sizeof(*tq->desc) + s->stat_len, in free_txq()
2495 tq->desc, tq->phys_addr); in free_txq()
2496 tq->cntxt_id = 0; in free_txq()
2497 tq->sdesc = NULL; in free_txq()
2498 tq->desc = NULL; in free_txq()