MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ionic_tx

Function ionic_tx

dpdk/drivers/net/ionic/ionic_rxtx_simple.c:74–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72}
73
74static __rte_always_inline int
75ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm)
76{
77 struct ionic_queue *q = &txq->qcq.q;
78 struct ionic_txq_desc *desc, *desc_base = q->base;
79 struct ionic_tx_stats *stats = &txq->stats;
80 void **info;
81 uint64_t ol_flags = txm->ol_flags;
82 uint64_t addr, cmd;
83 uint8_t opcode = IONIC_TXQ_DESC_OPCODE_CSUM_NONE;
84 uint8_t flags = 0;
85
86 if (txm->nb_segs > 1)
87 return -EINVAL;
88
89 desc = &desc_base[q->head_idx];
90 info = &q->info[q->head_idx];
91
92 if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) &&
93 (txq->flags & IONIC_QCQ_F_CSUM_L3)) {
94 opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW;
95 flags |= IONIC_TXQ_DESC_FLAG_CSUM_L3;
96 }
97
98 if (((ol_flags & RTE_MBUF_F_TX_TCP_CKSUM) &&
99 (txq->flags & IONIC_QCQ_F_CSUM_TCP)) ||
100 ((ol_flags & RTE_MBUF_F_TX_UDP_CKSUM) &&
101 (txq->flags & IONIC_QCQ_F_CSUM_UDP))) {
102 opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW;
103 flags |= IONIC_TXQ_DESC_FLAG_CSUM_L4;
104 }
105
106 if (opcode == IONIC_TXQ_DESC_OPCODE_CSUM_NONE)
107 stats->no_csum++;
108
109 if (((ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) ||
110 (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) &&
111 ((ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) ||
112 (ol_flags & RTE_MBUF_F_TX_OUTER_IPV6))) {
113 flags |= IONIC_TXQ_DESC_FLAG_ENCAP;
114 }
115
116 if (ol_flags & RTE_MBUF_F_TX_VLAN) {
117 flags |= IONIC_TXQ_DESC_FLAG_VLAN;
118 desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci);
119 }
120
121 addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm));
122
123 cmd = encode_txq_desc_cmd(opcode, flags, 0, addr);
124 desc->cmd = rte_cpu_to_le_64(cmd);
125 desc->len = rte_cpu_to_le_16(txm->data_len);
126
127 info[0] = txm;
128
129 q->head_idx = Q_NEXT_TO_POST(q, 1);
130
131 return 0;

Callers 1

ionic_xmit_pktsFunction · 0.85

Calls 2

rte_mbuf_data_iovaFunction · 0.85
encode_txq_desc_cmdFunction · 0.85

Tested by

no test coverage detected