diff --git a/arch/sim/src/sim/sim_netdriver.c b/arch/sim/src/sim/sim_netdriver.c index 69fadd8b3b0..97d2a91fe64 100644 --- a/arch/sim/src/sim/sim_netdriver.c +++ b/arch/sim/src/sim/sim_netdriver.c @@ -103,8 +103,7 @@ static void netdriver_send(struct net_driver_s *dev) { int devidx = (intptr_t)dev->d_private; #ifdef SIM_NETDEV_IOB_OFFLOAD - uint8_t *buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + uint8_t *buf = NETLLBUF; #else uint8_t *buf = dev->d_buf; #endif diff --git a/include/nuttx/net/netdev.h b/include/nuttx/net/netdev.h index 10f55c463f8..33a4f8c7da3 100644 --- a/include/nuttx/net/netdev.h +++ b/include/nuttx/net/netdev.h @@ -161,8 +161,8 @@ * headers */ -#define IPBUF(hl) ((FAR void *)\ - &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE + (hl)]) +#define IPBUF(hl) ((FAR void *)(IOB_DATA(dev->d_iob) + (hl))) +#define NETLLBUF (IPBUF(0) - NET_LL_HDRLEN(dev)) #define IPv4BUF ((FAR struct ipv4_hdr_s *)IPBUF(0)) #define IPv6BUF ((FAR struct ipv6_hdr_s *)IPBUF(0)) diff --git a/net/arp/arp.h b/net/arp/arp.h index 503b09ffced..75e41c85283 100644 --- a/net/arp/arp.h +++ b/net/arp/arp.h @@ -84,10 +84,8 @@ /* This is a helper pointer for accessing the contents of the IP header */ -#define ARPBUF ((FAR struct arp_hdr_s *)\ - &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE]) -#define ARPIPBUF ((FAR struct arp_iphdr_s *)\ - &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE]) +#define ARPBUF ((FAR struct arp_hdr_s *)IPBUF(0)) +#define ARPIPBUF ((FAR struct arp_iphdr_s *)IPBUF(0)) /**************************************************************************** * Public Types diff --git a/net/arp/arp_input.c b/net/arp/arp_input.c index b347d11265f..5b60aed5894 100644 --- a/net/arp/arp_input.c +++ b/net/arp/arp_input.c @@ -195,8 +195,7 @@ void arp_input(FAR struct net_driver_s *dev) /* Set the device buffer to l2 */ - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; arp_in(dev); dev->d_buf = buf; diff --git a/net/can/can_input.c b/net/can/can_input.c index 0d6c353f314..42ae6c86ff0 100644 --- a/net/can/can_input.c +++ b/net/can/can_input.c @@ -228,8 +228,7 @@ int can_input(FAR struct net_driver_s *dev) /* Set the device buffer to l2 */ - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; ret = can_in(dev); dev->d_buf = buf; diff --git a/net/devif/devif.h b/net/devif/devif.h index 9c4b89656e9..ea38a7823f1 100644 --- a/net/devif/devif.h +++ b/net/devif/devif.h @@ -237,9 +237,7 @@ * headers */ -#define ETHBUF ((FAR struct eth_hdr_s *)\ - &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - \ - NET_LL_HDRLEN(dev)]) +#define ETHBUF ((FAR struct eth_hdr_s *)NETLLBUF) /**************************************************************************** * Public Type Definitions diff --git a/net/devif/devif_iobsend.c b/net/devif/devif_iobsend.c index 95baa6c2127..55db92f0533 100644 --- a/net/devif/devif_iobsend.c +++ b/net/devif/devif_iobsend.c @@ -109,8 +109,7 @@ void devif_iob_send(FAR struct net_driver_s *dev, FAR struct iob_s *iob, dev->d_iob = iob; dev->d_sndlen = len; - dev->d_buf = &iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; } #ifdef CONFIG_NET_TCP_WRBUFFER_DUMP diff --git a/net/devif/devif_poll.c b/net/devif/devif_poll.c index 176657b9733..7eb4e497766 100644 --- a/net/devif/devif_poll.c +++ b/net/devif/devif_poll.c @@ -1009,8 +1009,7 @@ int devif_poll(FAR struct net_driver_s *dev, devif_poll_callback_t callback) /* Copy l2 header (arp out) */ - memcpy(buf, dev->d_iob->io_data + - (CONFIG_NET_LL_GUARDSIZE - llhdrlen), llhdrlen); + memcpy(buf, IPBUF(-llhdrlen), llhdrlen); /* Restore flat buffer pointer */ diff --git a/net/devif/ipv4_input.c b/net/devif/ipv4_input.c index 18f96e0dce4..7a04d96dc23 100644 --- a/net/devif/ipv4_input.c +++ b/net/devif/ipv4_input.c @@ -497,8 +497,7 @@ int ipv4_input(FAR struct net_driver_s *dev) /* Set the device buffer to l2 */ - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; ret = ipv4_in(dev); dev->d_buf = buf; diff --git a/net/devif/ipv6_input.c b/net/devif/ipv6_input.c index 7783eda841c..84d56061fe6 100644 --- a/net/devif/ipv6_input.c +++ b/net/devif/ipv6_input.c @@ -621,8 +621,7 @@ int ipv6_input(FAR struct net_driver_s *dev) /* Set the device buffer to l2 */ - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; ret = ipv6_in(dev); dev->d_buf = buf; diff --git a/net/ipforward/ipfwd_dropstats.c b/net/ipforward/ipfwd_dropstats.c index 94a60b8bab9..781c5757e90 100644 --- a/net/ipforward/ipfwd_dropstats.c +++ b/net/ipforward/ipfwd_dropstats.c @@ -167,8 +167,7 @@ void ipfwd_dropstats(FAR struct forward_s *fwd) if (fwd->f_domain == PF_INET) #endif { - ipv4_dropstats((FAR struct ipv4_hdr_s *) - &fwd->f_iob->io_data[CONFIG_NET_LL_GUARDSIZE]); + ipv4_dropstats((FAR struct ipv4_hdr_s *)IOB_DATA(fwd->f_iob)); } #endif #ifdef CONFIG_NET_IPv6 @@ -176,8 +175,7 @@ void ipfwd_dropstats(FAR struct forward_s *fwd) else #endif { - ipv6_dropstats((FAR struct ipv6_hdr_s *) - &fwd->f_iob->io_data[CONFIG_NET_LL_GUARDSIZE]); + ipv6_dropstats((FAR struct ipv6_hdr_s *)IOB_DATA(fwd->f_iob)); } #endif } diff --git a/net/netdev/netdev_input.c b/net/netdev/netdev_input.c index a2669a4c98d..45a63d71760 100644 --- a/net/netdev/netdev_input.c +++ b/net/netdev/netdev_input.c @@ -67,8 +67,8 @@ int netdev_input(FAR struct net_driver_s *dev, devif_poll_callback_t callback, bool reply) { uint16_t llhdrlen = NET_LL_HDRLEN(dev); - unsigned int offset = CONFIG_NET_LL_GUARDSIZE - llhdrlen; FAR uint8_t *buf = dev->d_buf; + unsigned int offset; unsigned int l3l4len; int ret; @@ -82,6 +82,7 @@ int netdev_input(FAR struct net_driver_s *dev, /* Copy l2 header to gruard area */ + offset = dev->d_iob->io_offset - llhdrlen; memcpy(dev->d_iob->io_data + offset, buf, llhdrlen); /* Copy l3/l4 data to iob entry */ diff --git a/net/netdev/netdev_iob.c b/net/netdev/netdev_iob.c index f6159c4f54a..1c4886b2090 100644 --- a/net/netdev/netdev_iob.c +++ b/net/netdev/netdev_iob.c @@ -73,15 +73,14 @@ int netdev_iob_prepare(FAR struct net_driver_s *dev, bool throttled, return -ENOMEM; } - /* Set the device buffer to l2 */ - - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; - /* Update l2 gruard size */ iob_reserve(dev->d_iob, CONFIG_NET_LL_GUARDSIZE); + /* Set the device buffer to l2 */ + + dev->d_buf = NETLLBUF; + return OK; } @@ -106,8 +105,7 @@ void netdev_iob_replace(FAR struct net_driver_s *dev, FAR struct iob_s *iob) /* Set new buffer */ dev->d_iob = iob; - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; dev->d_len = iob->io_pktlen; } diff --git a/net/pkt/pkt_input.c b/net/pkt/pkt_input.c index c04e9a45616..b9a5124aa35 100644 --- a/net/pkt/pkt_input.c +++ b/net/pkt/pkt_input.c @@ -146,8 +146,7 @@ int pkt_input(FAR struct net_driver_s *dev) /* Set the device buffer to l2 */ - dev->d_buf = &dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE - - NET_LL_HDRLEN(dev)]; + dev->d_buf = NETLLBUF; ret = pkt_in(dev); dev->d_buf = buf; diff --git a/net/tcp/tcp_input.c b/net/tcp/tcp_input.c index 72710e45850..4ed4edc0256 100644 --- a/net/tcp/tcp_input.c +++ b/net/tcp/tcp_input.c @@ -63,7 +63,7 @@ #include "utils/utils.h" #include "tcp/tcp.h" -#define IPDATA(hl) (dev->d_iob->io_data[CONFIG_NET_LL_GUARDSIZE + (hl)]) +#define IPDATA(hl) (*(FAR uint8_t *)IPBUF(hl)) /**************************************************************************** * Private Functions