aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2006-11-21 04:23:52 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2006-11-21 04:23:52 +0000
commit960fd5b3d010cf60e2089c59d5b51b2c55cbd8fe (patch)
tree4e15d613bf215592a5c6cecf31fcc626f74434cb
parent19ecd2310cb439d40bfe844f2cbde37c869b1180 (diff)
Notes
-rw-r--r--sys/dev/re/if_re.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index 5ef8995f7504..e9ca0f16c534 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -1257,14 +1257,10 @@ re_attach(dev)
ifp->if_mtu = ETHERMTU;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
ifp->if_ioctl = re_ioctl;
- ifp->if_capabilities = IFCAP_VLAN_MTU;
ifp->if_start = re_start;
ifp->if_hwassist = RE_CSUM_FEATURES;
- ifp->if_capabilities |= IFCAP_HWCSUM|IFCAP_VLAN_HWTAGGING;
+ ifp->if_capabilities = IFCAP_HWCSUM;
ifp->if_capenable = ifp->if_capabilities;
-#ifdef DEVICE_POLLING
- ifp->if_capabilities |= IFCAP_POLLING;
-#endif
ifp->if_watchdog = re_watchdog;
ifp->if_init = re_init;
IFQ_SET_MAXLEN(&ifp->if_snd, RL_IFQ_MAXLEN);
@@ -1279,6 +1275,21 @@ re_attach(dev)
*/
ether_ifattach(ifp, eaddr);
+ /* VLAN capability setup */
+ ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING;
+ if (ifp->if_capabilities & IFCAP_HWCSUM)
+ ifp->if_capabilities |= IFCAP_VLAN_HWCSUM;
+ ifp->if_capenable = ifp->if_capabilities;
+#ifdef DEVICE_POLLING
+ ifp->if_capabilities |= IFCAP_POLLING;
+#endif
+ /*
+ * Tell the upper layer(s) we support long frames.
+ * Must appear after the call to ether_ifattach() because
+ * ether_ifattach() sets ifi_hdrlen to the default value.
+ */
+ ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
+
#ifdef RE_DIAG
/*
* Perform hardware diagnostic on the original RTL8169.
@@ -2542,6 +2553,7 @@ re_ioctl(ifp, command, data)
}
if (reinit && ifp->if_drv_flags & IFF_DRV_RUNNING)
re_init(sc);
+ VLAN_CAPABILITIES(ifp);
}
break;
default: