diff options
author | gallatin <gallatin@FreeBSD.org> | 2007-06-11 14:59:56 +0000 |
---|---|---|
committer | gallatin <gallatin@FreeBSD.org> | 2007-06-11 14:59:56 +0000 |
commit | 219a5fe659b5f4ab5663414840ab571fc219f284 (patch) | |
tree | 10293235207f206563a818775acd4b19c869b6eb /sys/net/if_ethersubr.c | |
parent | ee7a5f8c9ad971d0919a0528c3073e4eae4ddcee (diff) | |
download | FreeBSD-src-219a5fe659b5f4ab5663414840ab571fc219f284.zip FreeBSD-src-219a5fe659b5f4ab5663414840ab571fc219f284.tar.gz |
Allow drivers, such as cxgb and mxge, which support LRO to bypass
the MTU check in ether_input() on LRO merged frames.
Discussed with: kmacy
Diffstat (limited to 'sys/net/if_ethersubr.c')
-rw-r--r-- | sys/net/if_ethersubr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index 1fabaca..41a2467 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -542,7 +542,8 @@ ether_input(struct ifnet *ifp, struct mbuf *m) } eh = mtod(m, struct ether_header *); etype = ntohs(eh->ether_type); - if (m->m_pkthdr.len > + if ((m->m_flags & M_LRO) == 0 && + m->m_pkthdr.len > ETHER_MAX_FRAME(ifp, etype, m->m_flags & M_HASFCS)) { if_printf(ifp, "discard oversize frame " "(ether type %x flags %x len %u > max %lu)\n", |