This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 9ae7119a39 net/devif: bypass send length check if ip fragment enabled
9ae7119a39 is described below
commit 9ae7119a394b900f919eea019db78b92c2f3483b
Author: chao an <[email protected]>
AuthorDate: Mon Jan 16 20:27:44 2023 +0800
net/devif: bypass send length check if ip fragment enabled
Signed-off-by: chao an <[email protected]>
---
net/devif/devif_iobsend.c | 8 ++------
net/devif/devif_send.c | 8 ++++++++
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/net/devif/devif_iobsend.c b/net/devif/devif_iobsend.c
index ee7eed6878..95baa6c212 100644
--- a/net/devif/devif_iobsend.c
+++ b/net/devif/devif_iobsend.c
@@ -59,10 +59,7 @@ void devif_iob_send(FAR struct net_driver_s *dev, FAR struct
iob_s *iob,
#ifndef CONFIG_NET_IPFRAG
unsigned int limit = NETDEV_PKTSIZE(dev) -
NET_LL_HDRLEN(dev) - target_offset;
-#endif
- int ret;
-#ifndef CONFIG_NET_IPFRAG
if (dev == NULL || len == 0 || len > limit)
#else
if (dev == NULL || len == 0)
@@ -95,9 +92,8 @@ void devif_iob_send(FAR struct net_driver_s *dev, FAR struct
iob_s *iob,
/* Clone the iob to target device buffer */
- ret = iob_clone_partial(iob, len, offset, dev->d_iob,
- target_offset, false, false);
- if (ret != OK)
+ if (iob_clone_partial(iob, len, offset, dev->d_iob,
+ target_offset, false, false) != OK)
{
netdev_iob_release(dev);
nerr("devif_iob_send error, not enough iob entries, "
diff --git a/net/devif/devif_send.c b/net/devif/devif_send.c
index ea2d5cad41..4c0faca0a7 100644
--- a/net/devif/devif_send.c
+++ b/net/devif/devif_send.c
@@ -68,6 +68,7 @@
void devif_send(FAR struct net_driver_s *dev, FAR const void *buf,
int len, unsigned int offset)
{
+#ifndef CONFIG_NET_IPFRAG
unsigned int limit = NETDEV_PKTSIZE(dev) -
NET_LL_HDRLEN(dev) - offset;
@@ -77,6 +78,13 @@ void devif_send(FAR struct net_driver_s *dev, FAR const void
*buf,
dev, len, limit);
return;
}
+#else
+ if (dev == NULL || len == 0)
+ {
+ nerr("ERROR: devif_send fail: %p, sndlen: %u\n", dev, len);
+ return;
+ }
+#endif
/* Copy in iob to target device buffer */