net/devif: bypass send length check if ip fragment enabled

Signed-off-by: chao an <anchao@xiaomi.com>
This commit is contained in:
chao an
2023-01-16 20:27:44 +08:00
committed by Xiang Xiao
parent 715785245c
commit 9ae7119a39
2 changed files with 10 additions and 6 deletions
+2 -6
View File
@@ -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, "
+8
View File
@@ -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 */