[v2,22/33] net/ena/hal: rework Rx ring submission queue
Checks
Commit Message
From: Shai Brandes <shaibran@amazon.com>
RX ring submission queue descriptors are always located in host memory
This optimization replaces the generic update tail method with a
tailored method for host memory type descriptors to avoid unnecessary if
statement.
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Amit Bernstein <amitbern@amazon.com>
---
drivers/net/ena/hal/ena_eth_com.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
@@ -210,11 +210,8 @@ static int ena_com_sq_update_llq_tail(struct ena_com_io_sq *io_sq)
return ENA_COM_OK;
}
-static int ena_com_sq_update_tail(struct ena_com_io_sq *io_sq)
+static int ena_com_sq_update_reqular_queue_tail(struct ena_com_io_sq *io_sq)
{
- if (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV)
- return ena_com_sq_update_llq_tail(io_sq);
-
io_sq->tail++;
/* Switch phase bit in case of wrap around */
@@ -224,6 +221,14 @@ static int ena_com_sq_update_tail(struct ena_com_io_sq *io_sq)
return ENA_COM_OK;
}
+static int ena_com_sq_update_tail(struct ena_com_io_sq *io_sq)
+{
+ if (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV)
+ return ena_com_sq_update_llq_tail(io_sq);
+
+ return ena_com_sq_update_reqular_queue_tail(io_sq);
+}
+
static struct ena_eth_io_rx_cdesc_base *
ena_com_rx_cdesc_idx_to_ptr(struct ena_com_io_cq *io_cq, u16 idx)
{
@@ -662,7 +667,7 @@ int ena_com_add_single_rx_desc(struct ena_com_io_sq *io_sq,
desc->buff_addr_hi =
((ena_buf->paddr & GENMASK_ULL(io_sq->dma_addr_bits - 1, 32)) >> 32);
- return ena_com_sq_update_tail(io_sq);
+ return ena_com_sq_update_reqular_queue_tail(io_sq);
}
bool ena_com_cq_empty(struct ena_com_io_cq *io_cq)