summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/renesas/rswitch.h
diff options
context:
space:
mode:
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>2023-12-08 07:10:24 +0300
committerDavid S. Miller <davem@davemloft.net>2023-12-10 22:31:41 +0300
commit6a203cb5165d2257e8d54193b69afdb480a17f6f (patch)
tree17917ce1527c8cf84414df6ec532c0daaa6ee5f1 /drivers/net/ethernet/renesas/rswitch.h
parent8857034184538ca92b0e029f6f56e5e04f518ad2 (diff)
downloadlinux-6a203cb5165d2257e8d54193b69afdb480a17f6f.tar.xz
net: rswitch: Use build_skb() for RX
If this hardware receives a jumbo frame like 2KiB or more, it will be split into multiple queues. In the near future, to support this, use build_skb() instead of netdev_alloc_skb_ip_align(). Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/renesas/rswitch.h')
-rw-r--r--drivers/net/ethernet/renesas/rswitch.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/renesas/rswitch.h
index f1c7f7cdefc2..a407d85dcfad 100644
--- a/drivers/net/ethernet/renesas/rswitch.h
+++ b/drivers/net/ethernet/renesas/rswitch.h
@@ -29,8 +29,13 @@
#define RX_RING_SIZE 1024
#define TS_RING_SIZE (TX_RING_SIZE * RSWITCH_NUM_PORTS)
-#define PKT_BUF_SZ 1584
+#define RSWITCH_HEADROOM (NET_SKB_PAD + NET_IP_ALIGN)
+#define RSWITCH_DESC_BUF_SIZE 2048
+#define RSWITCH_TAILROOM SKB_DATA_ALIGN(sizeof(struct skb_shared_info))
#define RSWITCH_ALIGN 128
+#define RSWITCH_BUF_SIZE (RSWITCH_HEADROOM + RSWITCH_DESC_BUF_SIZE + \
+ RSWITCH_TAILROOM + RSWITCH_ALIGN)
+#define RSWITCH_MAP_BUF_SIZE (RSWITCH_BUF_SIZE - RSWITCH_HEADROOM)
#define RSWITCH_MAX_CTAG_PCP 7
#define RSWITCH_TIMEOUT_US 100000
@@ -945,8 +950,18 @@ struct rswitch_gwca_queue {
/* For [rt]x_ring */
unsigned int index;
bool dir_tx;
- struct sk_buff **skbs;
struct net_device *ndev; /* queue to ndev for irq */
+
+ union {
+ /* For TX */
+ struct {
+ struct sk_buff **skbs;
+ };
+ /* For RX */
+ struct {
+ void **rx_bufs;
+ };
+ };
};
struct rswitch_gwca_ts_info {