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()
901 static void write_sgl(const struct sk_buff *skb, struct sge_txq *tq, in write_sgl() argument
930 to = (u8 *)end > (u8 *)tq->stat ? buf : sgl->sge; in write_sgl()
943 if (unlikely((u8 *)end > (u8 *)tq->stat)) { in write_sgl()
944 unsigned int part0 = (u8 *)tq->stat - (u8 *)sgl->sge, part1; in write_sgl()
948 part1 = (u8 *)end - (u8 *)tq->stat; in write_sgl()
949 memcpy(tq->desc, (u8 *)buf + part0, part1); in write_sgl()
950 end = (void *)tq->desc + part1; in write_sgl()
964 static inline void ring_tx_db(struct adapter *adapter, struct sge_txq *tq, in ring_tx_db() argument
975 if (unlikely(tq->bar2_addr == NULL)) { in ring_tx_db()
979 QID_V(tq->cntxt_id) | val); in ring_tx_db()
995 if (n == 1 && tq->bar2_qid == 0) { in ring_tx_db()
996 unsigned int index = (tq->pidx in ring_tx_db()
997 ? (tq->pidx - 1) in ring_tx_db()
998 : (tq->size - 1)); in ring_tx_db()
999 __be64 *src = (__be64 *)&tq->desc[index]; in ring_tx_db()
1000 __be64 __iomem *dst = (__be64 __iomem *)(tq->bar2_addr + in ring_tx_db()
1024 writel(val | QID_V(tq->bar2_qid), in ring_tx_db()
1025 tq->bar2_addr + SGE_UDB_KDOORBELL); in ring_tx_db()
1052 static void inline_tx_skb(const struct sk_buff *skb, const struct sge_txq *tq, in inline_tx_skb() argument
1056 int left = (void *)tq->stat - pos; in inline_tx_skb()
1066 skb_copy_bits(skb, left, tq->desc, skb->len - left); in inline_tx_skb()
1067 pos = (void *)tq->desc + (skb->len - left); in inline_tx_skb()
1142 static inline void txq_advance(struct sge_txq *tq, unsigned int n) in txq_advance() argument
1144 tq->in_use += n; in txq_advance()
1145 tq->pidx += n; in txq_advance()
1146 if (tq->pidx >= tq->size) in txq_advance()
1147 tq->pidx -= tq->size; in txq_advance()
1420 struct sge_txq *tq = &txq->q; in t4vf_eth_xmit() local
1430 if (unlikely((void *)sgl == (void *)tq->stat)) { in t4vf_eth_xmit()
1431 sgl = (void *)tq->desc; in t4vf_eth_xmit()
1432 end = ((void *)tq->desc + ((void *)end - (void *)tq->stat)); in t4vf_eth_xmit()
1435 write_sgl(skb, tq, sgl, end, 0, addr); in t4vf_eth_xmit()
1438 last_desc = tq->pidx + ndesc - 1; in t4vf_eth_xmit()
1439 if (last_desc >= tq->size) in t4vf_eth_xmit()
1440 last_desc -= tq->size; in t4vf_eth_xmit()
1441 tq->sdesc[last_desc].skb = skb; in t4vf_eth_xmit()
1442 tq->sdesc[last_desc].sgl = sgl; in t4vf_eth_xmit()
2514 static void free_txq(struct adapter *adapter, struct sge_txq *tq) in free_txq() argument
2519 tq->size * sizeof(*tq->desc) + s->stat_len, in free_txq()
2520 tq->desc, tq->phys_addr); in free_txq()
2521 tq->cntxt_id = 0; in free_txq()
2522 tq->sdesc = NULL; in free_txq()
2523 tq->desc = NULL; in free_txq()