#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 */
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;
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;
}
}
/* 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;
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;
*/
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;
};
/* 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);