[PATCH 4/9] thunderbolt / net: Move ring_frame_size() to thunderbolt.h

Mika Westerberg
2026-04-28T07:22:16Z

This function can be used outside of thunderbolt networking driver so
move it to the common header.

No functional changes.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/net/thunderbolt/main.c | 16 ++++++----------
include/linux/thunderbolt.h | 10 +++++++++-
2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/net/thunderbolt/main.c b/drivers/net/thunderbolt/main.c
index d8fcf18fc55c..49673f7e0055 100644
--- a/drivers/net/thunderbolt/main.c
+++ b/drivers/net/thunderbolt/main.c
@@ -38,7 +38,7 @@
#define TBNET_MATCH_FRAGS_ID BIT(1)
#define TBNET_64K_FRAMES BIT(2)
#define TBNET_MAX_MTU SZ_64K
-#define TBNET_FRAME_SIZE SZ_4K
+#define TBNET_FRAME_SIZE TB_MAX_FRAME_SIZE
#define TBNET_MAX_PAYLOAD_SIZE \
(TBNET_FRAME_SIZE - sizeof(struct thunderbolt_ip_frame_header))
/* Rx packets need to hold space for skb_shared_info */
@@ -327,11 +327,6 @@ static void stop_login(struct tbnet *net)
netdev_dbg(net->dev, "login stopped\n");
}

-static inline unsigned int tbnet_frame_size(const struct tbnet_frame *tf)
-{
- return tf->frame.size ? : TBNET_FRAME_SIZE;
-}
-
static void tbnet_free_buffers(struct tbnet_ring *ring)
{
unsigned int i;
@@ -561,7 +556,7 @@ static struct tbnet_frame *tbnet_get_tx_buffer(struct tbnet *net)
tf->frame.size = 0;

dma_sync_single_for_cpu(dma_dev, tf->frame.buffer_phy,
- tbnet_frame_size(tf), DMA_TO_DEVICE);
+ tb_ring_frame_size(&tf->frame), DMA_TO_DEVICE);

return tf;
}
@@ -743,7 +738,7 @@ static bool tbnet_check_frame(struct tbnet *net, const struct tbnet_frame *tf,
}

/* Should be greater than just header i.e. contains data */
- size = tbnet_frame_size(tf);
+ size = tb_ring_frame_size(&tf->frame);
if (size <= sizeof(*hdr)) {
net->stats.rx_length_errors++;
return false;
@@ -1010,7 +1005,8 @@ static bool tbnet_xmit_csum_and_map(struct tbnet *net, struct sk_buff *skb,
hdr->frame_index, hdr->frame_count);
dma_sync_single_for_device(dma_dev,
frames[i]->frame.buffer_phy,
- tbnet_frame_size(frames[i]), DMA_TO_DEVICE);
+ tb_ring_frame_size(&frames[i]->frame),
+ DMA_TO_DEVICE);
}

return true;
@@ -1084,7 +1080,7 @@ static bool tbnet_xmit_csum_and_map(struct tbnet *net, struct sk_buff *skb,
*/
for (i = 0; i < frame_count; i++) {
dma_sync_single_for_device(dma_dev, frames[i]->frame.buffer_phy,
- tbnet_frame_size(frames[i]), DMA_TO_DEVICE);
+ tb_ring_frame_size(&frames[i]->frame), DMA_TO_DEVICE);
}

return true;
diff --git a/include/linux/thunderbolt.h b/include/linux/thunderbolt.h
index f60e3a1aecae..1d1bd458b5af 100644
--- a/include/linux/thunderbolt.h
+++ b/include/linux/thunderbolt.h
@@ -628,7 +628,15 @@ struct ring_frame {
};

/* Minimum size for ring_rx */
-#define TB_FRAME_SIZE 0x100
+#define TB_FRAME_SIZE 256
+#define TB_MAX_FRAME_SIZE 4096
+
+static inline size_t tb_ring_frame_size(const struct ring_frame *frame)
+{
+ if (frame->size)
+ return frame->size;
+ return TB_MAX_FRAME_SIZE;
+}

struct tb_ring *tb_ring_alloc_tx(struct tb_nhi *nhi, int hop, int size,
unsigned int flags);
--
2.50.1