net: ena: Pass ena_adapter instead of net_device to ena_xmit_common()
authorDavid Arinzon <darinzon@amazon.com>
Mon, 1 Jan 2024 19:08:46 +0000 (19:08 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 4 Jan 2024 02:00:57 +0000 (18:00 -0800)
This change will enable the ability to use ena_xmit_common()
in functions that don't have a net_device pointer.
While it can be retrieved by dereferencing
ena_adapter (adapter->netdev), there's no reason to do it in
fast path code where this pointer is only needed for
debug prints.

Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Link: https://lore.kernel.org/r/20240101190855.18739-3-darinzon@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/amazon/ena/ena_netdev.c
drivers/net/ethernet/amazon/ena/ena_netdev.h
drivers/net/ethernet/amazon/ena/ena_xdp.c
drivers/net/ethernet/amazon/ena/ena_xdp.h

index 0a0d97c4044c11339069b572ebd1245d67927751..b7f300b55fbb94205a1c252527e7426bc63f71f5 100644 (file)
@@ -88,19 +88,18 @@ static int ena_change_mtu(struct net_device *dev, int new_mtu)
        return ret;
 }
 
-int ena_xmit_common(struct net_device *dev,
+int ena_xmit_common(struct ena_adapter *adapter,
                    struct ena_ring *ring,
                    struct ena_tx_buffer *tx_info,
                    struct ena_com_tx_ctx *ena_tx_ctx,
                    u16 next_to_use,
                    u32 bytes)
 {
-       struct ena_adapter *adapter = netdev_priv(dev);
        int rc, nb_hw_desc;
 
        if (unlikely(ena_com_is_doorbell_needed(ring->ena_com_io_sq,
                                                ena_tx_ctx))) {
-               netif_dbg(adapter, tx_queued, dev,
+               netif_dbg(adapter, tx_queued, adapter->netdev,
                          "llq tx max burst size of queue %d achieved, writing doorbell to send burst\n",
                          ring->qid);
                ena_ring_tx_doorbell(ring);
@@ -115,7 +114,7 @@ int ena_xmit_common(struct net_device *dev,
         * ena_com_prepare_tx() are fatal and therefore require a device reset.
         */
        if (unlikely(rc)) {
-               netif_err(adapter, tx_queued, dev,
+               netif_err(adapter, tx_queued, adapter->netdev,
                          "Failed to prepare tx bufs\n");
                ena_increase_stat(&ring->tx_stats.prepare_ctx_err, 1,
                                  &ring->syncp);
@@ -2599,7 +2598,7 @@ static netdev_tx_t ena_start_xmit(struct sk_buff *skb, struct net_device *dev)
        /* set flags and meta data */
        ena_tx_csum(&ena_tx_ctx, skb, tx_ring->disable_meta_caching);
 
-       rc = ena_xmit_common(dev,
+       rc = ena_xmit_common(adapter,
                             tx_ring,
                             tx_info,
                             &ena_tx_ctx,
index 041f08d20b4506047896fe5f8bd729cd1e1fa72e..236d1f859a783e294af666168e5cad1d1f779fd7 100644 (file)
@@ -426,7 +426,7 @@ static inline void ena_ring_tx_doorbell(struct ena_ring *tx_ring)
        ena_increase_stat(&tx_ring->tx_stats.doorbells, 1, &tx_ring->syncp);
 }
 
-int ena_xmit_common(struct net_device *dev,
+int ena_xmit_common(struct ena_adapter *adapter,
                    struct ena_ring *ring,
                    struct ena_tx_buffer *tx_info,
                    struct ena_com_tx_ctx *ena_tx_ctx,
index d0c8a2dc9a676cb4fbde838596c15e04b5d2d09b..42370fa0277332169e966b78ec080708ae074411 100644 (file)
@@ -73,7 +73,7 @@ error_report_dma_error:
 }
 
 int ena_xdp_xmit_frame(struct ena_ring *xdp_ring,
-                      struct net_device *dev,
+                      struct ena_adapter *adapter,
                       struct xdp_frame *xdpf,
                       int flags)
 {
@@ -93,7 +93,7 @@ int ena_xdp_xmit_frame(struct ena_ring *xdp_ring,
 
        ena_tx_ctx.req_id = req_id;
 
-       rc = ena_xmit_common(dev,
+       rc = ena_xmit_common(adapter,
                             xdp_ring,
                             tx_info,
                             &ena_tx_ctx,
@@ -141,7 +141,7 @@ int ena_xdp_xmit(struct net_device *dev, int n,
        spin_lock(&xdp_ring->xdp_tx_lock);
 
        for (i = 0; i < n; i++) {
-               if (ena_xdp_xmit_frame(xdp_ring, dev, frames[i], 0))
+               if (ena_xdp_xmit_frame(xdp_ring, adapter, frames[i], 0))
                        break;
                nxmit++;
        }
index 80c74960810883c23c237f50c31de1acdebc2b0d..6e472ba6ce1bad8219b0a827839b15bd4a635234 100644 (file)
@@ -36,7 +36,7 @@ void ena_xdp_exchange_program_rx_in_range(struct ena_adapter *adapter,
                                          int first, int count);
 int ena_xdp_io_poll(struct napi_struct *napi, int budget);
 int ena_xdp_xmit_frame(struct ena_ring *xdp_ring,
-                      struct net_device *dev,
+                      struct ena_adapter *adapter,
                       struct xdp_frame *xdpf,
                       int flags);
 int ena_xdp_xmit(struct net_device *dev, int n,
@@ -108,7 +108,7 @@ static inline int ena_xdp_execute(struct ena_ring *rx_ring, struct xdp_buff *xdp
                /* The XDP queues are shared between XDP_TX and XDP_REDIRECT */
                spin_lock(&xdp_ring->xdp_tx_lock);
 
-               if (ena_xdp_xmit_frame(xdp_ring, rx_ring->netdev, xdpf,
+               if (ena_xdp_xmit_frame(xdp_ring, rx_ring->adapter, xdpf,
                                       XDP_XMIT_FLUSH))
                        xdp_return_frame(xdpf);