aboutsummaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2020-07-16 13:37:32 +0000
committerKyle Evans <kevans@FreeBSD.org>2020-07-16 13:37:32 +0000
commitfa2ab81e3269870cbc4882653862fafd2dc1bb92 (patch)
tree6b7a9826ed66b834fbd52a9d9f776e5124ce998a /sys/net
parentc4e64133d881ca446a95ec5c2cfb6a4d138507eb (diff)
downloadsrc-fa2ab81e3269870cbc4882653862fafd2dc1bb92.tar.gz
src-fa2ab81e3269870cbc4882653862fafd2dc1bb92.zip
ether_ifattach: set mtu before calling if_attach()
if_attach() -> if_attach_internal() will call if_attachdomain1(ifp) any time an ethernet interface is setup *after* SI_SUB_PROTO_IFATTACHDOMAIN/SI_ORDER_FIRST. This eventually leads to nd6_ifattach() -> nd6_setmtu0() stashing off ifp->if_mtu in ndi->maxmtu *before* ifp->if_mtu has been properly set in some scenarios, e.g., USB ethernet adapter plugged in later on. For interfaces that are created in early boot, we don't have this issue as domains aren't constructed enough for them to attach and thus it gets deferred to domainifattach at SI_SUB_PROTO_IFATTACHDOMAIN/SI_ORDER_SECOND *after* the mtu has been set earlier in ether_ifattach(). PR: 248005 Submitted by: Mathew <mjanelle blackberry com> MFC after: 1 week
Notes
Notes: svn path=/head/; revision=363244
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if_ethersubr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index 72fc0441d3b9..0f23e0bc836c 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -969,8 +969,8 @@ ether_ifattach(struct ifnet *ifp, const u_int8_t *lla)
ifp->if_addrlen = ETHER_ADDR_LEN;
ifp->if_hdrlen = ETHER_HDR_LEN;
- if_attach(ifp);
ifp->if_mtu = ETHERMTU;
+ if_attach(ifp);
ifp->if_output = ether_output;
ifp->if_input = ether_input;
ifp->if_resolvemulti = ether_resolvemulti;