This is a hot-path function.
Remove ionic_q_has_space() while here.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
---
drivers/net/ionic/ionic_dev.c | 21 +--------------------
drivers/net/ionic/ionic_dev.h | 15 +++++++++++++--
2 files changed, 14 insertions(+), 22 deletions(-)
@@ -474,25 +474,6 @@ ionic_q_post(struct ionic_queue *q, bool ring_doorbell, desc_cb cb,
ionic_q_flush(q);
}
-uint32_t
-ionic_q_space_avail(struct ionic_queue *q)
-{
- uint32_t avail = q->tail_idx;
-
- if (q->head_idx >= avail)
- avail += q->num_descs - q->head_idx - 1;
- else
- avail -= q->head_idx + 1;
-
- return avail;
-}
-
-bool
-ionic_q_has_space(struct ionic_queue *q, uint32_t want)
-{
- return ionic_q_space_avail(q) >= want;
-}
-
void
ionic_q_service(struct ionic_queue *q, uint32_t cq_desc_index,
uint32_t stop_index, void *service_cb_arg)
@@ -561,7 +542,7 @@ ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
rte_spinlock_lock(&lif->adminq_lock);
- if (!ionic_q_has_space(adminq, 1)) {
+ if (ionic_q_space_avail(adminq) < 1) {
err = -ENOSPC;
goto err_out;
}
@@ -256,11 +256,22 @@ void ionic_q_map(struct ionic_queue *q, void *base, rte_iova_t base_pa);
void ionic_q_sg_map(struct ionic_queue *q, void *base, rte_iova_t base_pa);
void ionic_q_post(struct ionic_queue *q, bool ring_doorbell, desc_cb cb,
void *cb_arg);
-uint32_t ionic_q_space_avail(struct ionic_queue *q);
-bool ionic_q_has_space(struct ionic_queue *q, uint32_t want);
void ionic_q_service(struct ionic_queue *q, uint32_t cq_desc_index,
uint32_t stop_index, void *service_cb_arg);
+static inline uint32_t
+ionic_q_space_avail(struct ionic_queue *q)
+{
+ uint32_t avail = q->tail_idx;
+
+ if (q->head_idx >= avail)
+ avail += q->num_descs - q->head_idx - 1;
+ else
+ avail -= q->head_idx + 1;
+
+ return avail;
+}
+
static inline void
ionic_q_flush(struct ionic_queue *q)
{