diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-11-16 08:49:14 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-11-16 08:49:14 -0600 |
commit | 0f01a4882771fb5abd708d650bbead4dd2039058 (patch) | |
tree | 936d1a9a4cafc7af2c908813a06ae1290795ae3e | |
parent | 0432aa72902865f16adfca70e682263324e7f868 (diff) | |
download | px4-nuttx-0f01a4882771fb5abd708d650bbead4dd2039058.tar.gz px4-nuttx-0f01a4882771fb5abd708d650bbead4dd2039058.tar.bz2 px4-nuttx-0f01a4882771fb5abd708d650bbead4dd2039058.zip |
Add link MTU size to network device structure.
-rw-r--r-- | nuttx/include/nuttx/net/netconfig.h | 48 | ||||
-rw-r--r-- | nuttx/include/nuttx/net/netdev.h | 1 | ||||
-rw-r--r-- | nuttx/net/netdev/netdev_register.c | 5 |
3 files changed, 42 insertions, 12 deletions
diff --git a/nuttx/include/nuttx/net/netconfig.h b/nuttx/include/nuttx/net/netconfig.h index fef0294c3..5e987cf65 100644 --- a/nuttx/include/nuttx/net/netconfig.h +++ b/nuttx/include/nuttx/net/netconfig.h @@ -93,6 +93,26 @@ */ # define NET_LL_HDRLEN(d) ((d)->d_llhdrlen) +# define NET_LL_MTU(d) ((d)->d_llmtu) + +# ifdef CONFIG_NET_ETHERNET +# define _MIN_ETH_MTU CONFIG_NET_ETH_MTU +# define _MAX_ETH_MTU CONFIG_NET_ETH_MTU +# else +# define _MIN_ETH_MTU UINT16_MAX +# define _MAX_ETH_MTU 0 +# endif + +# ifdef CONFIG_NET_SLIP +# define _MIN_SLIP_MTU MIN(_MIN_ETH_MTU,CONFIG_NET_SLIP_MTU) +# define _MAX_SLIP_MTU MAX(_MAX_ETH_MTU,CONFIG_NET_SLIP_MTU) +# else +# define _MIN_SLIP_MTU _MIN_ETH_MTU +# define _MAX_SLIP_MTU _MAX_ETH_MTU +# endif + +# define MIN_NET_LL_MTU _MIN_SLIP_MTU +# define MAX_NET_LL_MTU _MAX_SLIP_MTU #elif defined(CONFIG_NET_SLIP) /* There is no link layer header with SLIP */ @@ -101,11 +121,17 @@ # error SLIP is not available for IPv6 # endif # define NET_LL_HDRLEN(d) 0 +# define NET_LL_MTU(d) CONFIG_NET_SLIP_MTU +# define MIN_NET_LL_MTU CONFIG_NET_SLIP_MTU +# define MAX_NET_LL_MTU CONFIG_NET_SLIP_MTU #else /* if defined(CONFIG_NET_ETHERNET) */ /* Assume standard Ethernet link layer header */ # define NET_LL_HDRLEN(d) 14 +# define NET_LL_MTU(d) CONFIG_NET_ETH_MTU +# define MIN_NET_LL_MTU CONFIG_NET_ETH_MTU +# define MAX_NET_LL_MTU CONFIG_NET_ETH_MTU #endif /* MULTILINK or SLIP or ETHERNET */ @@ -165,18 +191,18 @@ * than CONFIG_NET_BUFSIZE - NET_LL_HDRLEN(dev) - IPUDP_HDRLEN. */ -#define UDP_MSS(d) (CONFIG_NET_BUFSIZE - NET_LL_HDRLEN(d) - IPUDP_HDRLEN) +#define UDP_MSS(d) (CONFIG_NET_ETH_MTU - NET_LL_HDRLEN(d) - IPUDP_HDRLEN) #ifdef CONFIG_NET_ETHERNET -# define MIN_UDP_MSS (CONFIG_NET_BUFSIZE - ETH_HDRLEN - IPUDP_HDRLEN) +# define MIN_UDP_MSS (CONFIG_NET_ETH_MTU - ETH_HDRLEN - IPUDP_HDRLEN) #else /* if defined(CONFIG_NET_SLIP) */ -# define MIN_UDP_MSS (CONFIG_NET_BUFSIZE - IPUDP_HDRLEN) +# define MIN_UDP_MSS (CONFIG_NET_ETH_MTU - IPUDP_HDRLEN) #endif #ifdef CONFIG_NET_SLIP -# define MAX_UDP_MSS (CONFIG_NET_BUFSIZE - IPUDP_HDRLEN) +# define MAX_UDP_MSS (CONFIG_NET_ETH_MTU - IPUDP_HDRLEN) #else /* if defined(CONFIG_NET_ETHERNET) */ -# define MAX_UDP_MSS (CONFIG_NET_BUFSIZE - ETH_HDRLEN - IPUDP_HDRLEN) +# define MAX_UDP_MSS (CONFIG_NET_ETH_MTU - ETH_HDRLEN - IPUDP_HDRLEN) #endif /* TCP configuration options */ @@ -239,7 +265,7 @@ #define TCP_MAXSYNRTX 5 /* The TCP maximum segment size. This is should not be set to more - * than CONFIG_NET_BUFSIZE - NET_LL_HDRLEN(dev) - IPTCP_HDRLEN. + * than CONFIG_NET_ETH_MTU - NET_LL_HDRLEN(dev) - IPTCP_HDRLEN. * * In the case where there are multiple network devices with different * link layer protocols (CONFIG_NET_MULTILINK), each network device @@ -247,18 +273,18 @@ * the minimum MSS for that case. */ -#define TCP_MSS(d) (CONFIG_NET_BUFSIZE - NET_LL_HDRLEN(d) - IPTCP_HDRLEN) +#define TCP_MSS(d) (CONFIG_NET_ETH_MTU - NET_LL_HDRLEN(d) - IPTCP_HDRLEN) #ifdef CONFIG_NET_ETHERNET -# define MIN_TCP_MSS (CONFIG_NET_BUFSIZE - ETH_HDRLEN - IPTCP_HDRLEN) +# define MIN_TCP_MSS (CONFIG_NET_ETH_MTU - ETH_HDRLEN - IPTCP_HDRLEN) #else /* if defined(CONFIG_NET_SLIP) */ -# define MIN_TCP_MSS (CONFIG_NET_BUFSIZE - IPTCP_HDRLEN) +# define MIN_TCP_MSS (CONFIG_NET_ETH_MTU - IPTCP_HDRLEN) #endif #ifdef CONFIG_NET_SLIP -# define MAX_TCP_MSS (CONFIG_NET_BUFSIZE - IPTCP_HDRLEN) +# define MAX_TCP_MSS (CONFIG_NET_ETH_MTU - IPTCP_HDRLEN) #else /* if defined(CONFIG_NET_ETHERNET) */ -# define MAX_TCP_MSS (CONFIG_NET_BUFSIZE - ETH_HDRLEN - IPTCP_HDRLEN) +# define MAX_TCP_MSS (CONFIG_NET_ETH_MTU - ETH_HDRLEN - IPTCP_HDRLEN) #endif /* The size of the advertised receiver's window. diff --git a/nuttx/include/nuttx/net/netdev.h b/nuttx/include/nuttx/net/netdev.h index 92146b179..8e6f1b6eb 100644 --- a/nuttx/include/nuttx/net/netdev.h +++ b/nuttx/include/nuttx/net/netdev.h @@ -101,6 +101,7 @@ struct net_driver_s uint8_t d_lltype; /* See enum net_datalink_e */ uint8_t d_llhdrlen; /* Link layer header size */ + uint16_t d_llmtu; /* Maximum packet size */ #endif #ifdef CONFIG_NET_ETHERNET diff --git a/nuttx/net/netdev/netdev_register.c b/nuttx/net/netdev/netdev_register.c index 9c8b95a11..ea336cab6 100644 --- a/nuttx/net/netdev/netdev_register.c +++ b/nuttx/net/netdev/netdev_register.c @@ -83,7 +83,7 @@ static int g_next_devnum = 0; * Public Data ****************************************************************************/ -/* List of registered ethernet device drivers */ +/* List of registered Ethernet device drivers */ struct net_driver_s *g_netdevices = NULL; @@ -134,6 +134,7 @@ int netdev_register(FAR struct net_driver_s *dev, enum net_lltype_e lltype) #ifdef CONFIG_NET_ETHERNET case NET_LL_ETHERNET: /* Ethernet */ dev->d_llhdrlen = ETH_HDRLEN; + dev->d_llmtu = CONFIG_NET_ETH_MTU; devfmt = NETDEV_ETH_FORMAT; break; #endif @@ -141,6 +142,7 @@ int netdev_register(FAR struct net_driver_s *dev, enum net_lltype_e lltype) #ifdef CONFIG_NET_SLIP case NET_LL_SLIP: /* Serial Line Internet Protocol (SLIP) */ dev->d_llhdrlen = 0; + dev->d_llmtu = CONFIG_NET_SLIP_MTU; devfmt = NETDEV_SLIP_FORMAT; break; #endif @@ -148,6 +150,7 @@ int netdev_register(FAR struct net_driver_s *dev, enum net_lltype_e lltype) #if 0 /* REVISIT: Not yet supported */ case NET_LL_PPP: /* Point-to-Point Protocol (PPP) */ dev->d_llhdrlen = 0; + dev->d_llmtu = CONFIG_NET_PPP_MTU; devfmt = NETDEV_PPP_FORMAT; break; #endif |