On 4/2/2025 8:49 am, Song Yoong Siang wrote:
Refactor the code for inserting an empty packet into a new function
igc_insert_empty_packet(). This change extracts the logic for inserting
an empty packet from igc_xmit_frame_ring() into a separate function,
allowing it to be reused in future implementations, such as the XDP
zero copy transmit function.

This patch introduces no functional changes.

Signed-off-by: Song Yoong Siang <yoong.siang.s...@intel.com>
---
  drivers/net/ethernet/intel/igc/igc_main.c | 42 ++++++++++++-----------
  1 file changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/net/ethernet/intel/igc/igc_main.c 
b/drivers/net/ethernet/intel/igc/igc_main.c
index 56a35d58e7a6..c3edd8bcf633 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -1566,6 +1566,26 @@ static bool igc_request_tx_tstamp(struct igc_adapter 
*adapter, struct sk_buff *s
        return false;
  }
+static void igc_insert_empty_packet(struct igc_ring *tx_ring)
+{
+       struct igc_tx_buffer *empty_info;
+       struct sk_buff *empty;
+       void *data;
+
+       empty_info = &tx_ring->tx_buffer_info[tx_ring->next_to_use];
+       empty = alloc_skb(IGC_EMPTY_FRAME_SIZE, GFP_ATOMIC);
+       if (!empty)
+               return;
+
+       data = skb_put(empty, IGC_EMPTY_FRAME_SIZE);
+       memset(data, 0, IGC_EMPTY_FRAME_SIZE);
+
+       igc_tx_ctxtdesc(tx_ring, 0, false, 0, 0, 0);
+
+       if (igc_init_tx_empty_descriptor(tx_ring, empty, empty_info) < 0)
+               dev_kfree_skb_any(empty);
+}
+
  static netdev_tx_t igc_xmit_frame_ring(struct sk_buff *skb,
                                       struct igc_ring *tx_ring)
  {
@@ -1603,26 +1623,8 @@ static netdev_tx_t igc_xmit_frame_ring(struct sk_buff 
*skb,
        skb->tstamp = ktime_set(0, 0);
        launch_time = igc_tx_launchtime(tx_ring, txtime, &first_flag, 
&insert_empty);
- if (insert_empty) {
-               struct igc_tx_buffer *empty_info;
-               struct sk_buff *empty;
-               void *data;
-
-               empty_info = &tx_ring->tx_buffer_info[tx_ring->next_to_use];
-               empty = alloc_skb(IGC_EMPTY_FRAME_SIZE, GFP_ATOMIC);
-               if (!empty)
-                       goto done;
-
-               data = skb_put(empty, IGC_EMPTY_FRAME_SIZE);
-               memset(data, 0, IGC_EMPTY_FRAME_SIZE);
-
-               igc_tx_ctxtdesc(tx_ring, 0, false, 0, 0, 0);
-
-               if (igc_init_tx_empty_descriptor(tx_ring,
-                                                empty,
-                                                empty_info) < 0)
-                       dev_kfree_skb_any(empty);
-       }
+       if (insert_empty)
+               igc_insert_empty_packet(tx_ring);
done:
        /* record the location of the first descriptor for this packet */

Reviewed-by: Faizal Rahim <faizal.abdul.ra...@linux.intel.com>

Reply via email to