+static void
+sfc_repr_proxy_handle_tx(struct sfc_repr_proxy_dp_txq *rp_txq,
+ struct sfc_repr_proxy_txq *repr_txq)
+{
+ /*
+ * With multiple representor proxy queues configured it is
+ * possible that not all of the corresponding representor
+ * queues were created. Skip the queues that do not exist.
+ */
+ if (repr_txq->ring == NULL)
+ return;
+
+ if (rp_txq->available < RTE_DIM(rp_txq->tx_pkts)) {
+ rp_txq->available +=
+ rte_ring_sc_dequeue_burst(repr_txq->ring,
+ (void **)(&rp_txq->tx_pkts[rp_txq->available]),
+ RTE_DIM(rp_txq->tx_pkts) - rp_txq->available,
+ NULL);
+
+ if (rp_txq->available == rp_txq->transmitted)
+ return;
+ }
+
+ rp_txq->transmitted += rp_txq->pkt_burst(rp_txq->dp,
+ &rp_txq->tx_pkts[rp_txq->transmitted],
+ rp_txq->available - rp_txq->transmitted);
+
+ if (rp_txq->available == rp_txq->transmitted) {
+ rp_txq->available = 0;
+ rp_txq->transmitted = 0;
+ }
+}
+