- return rdma_device_output_tx (vm, node, frame, rd, 1 /* is_mlx5dv */ );
+ n_left = rdma_device_output_tx (vm, node, rd, txq, from, n_buffers,
+ 1 /* is_mlx5dv */);
+ else
+ n_left = rdma_device_output_tx (vm, node, rd, txq, from, n_buffers,
+ 0 /* is_mlx5dv */);
+
+ clib_spinlock_unlock_if_init (&txq->lock);
+
+ if (PREDICT_FALSE (n_left))
+ {
+ vlib_buffer_free (vm, from + n_buffers - n_left, n_left);
+ vlib_error_count (vm, node->node_index, RDMA_TX_ERROR_NO_FREE_SLOTS,
+ n_left);
+ }