From owner-p4-projects@FreeBSD.ORG Sat Sep 8 17:26:03 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EFAF516A41A; Sat, 8 Sep 2007 17:26:02 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C49BB16A46D for ; Sat, 8 Sep 2007 17:26:02 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id AAAD913C469 for ; Sat, 8 Sep 2007 17:26:02 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l88HQ251071790 for ; Sat, 8 Sep 2007 17:26:02 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l88HQ1Ca071785 for perforce@freebsd.org; Sat, 8 Sep 2007 17:26:01 GMT (envelope-from zec@FreeBSD.org) Date: Sat, 8 Sep 2007 17:26:01 GMT Message-Id: <200709081726.l88HQ1Ca071785@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 126186 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Sep 2007 17:26:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=126186 Change 126186 by zec@zec_tpx32 on 2007/09/08 17:25:17 IFC @ 126179 Affected files ... .. //depot/projects/vimage/src/sys/amd64/linux32/linux32_proto.h#4 integrate .. //depot/projects/vimage/src/sys/amd64/linux32/linux32_syscall.h#4 integrate .. //depot/projects/vimage/src/sys/amd64/linux32/linux32_sysent.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/linux32/syscalls.master#4 integrate .. //depot/projects/vimage/src/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_misc.c#6 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_misc.c#9 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#3 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_cpu.c#5 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_ath.c#12 integrate .. //depot/projects/vimage/src/sys/dev/awi/awi.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ipw/if_ipw.c#6 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_freebsd.h#7 integrate .. //depot/projects/vimage/src/sys/dev/iwi/if_iwi.c#6 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_82598.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_api.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_api.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_common.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_common.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_osdep.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_phy.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_phy.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe_type.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ral/rt2560.c#9 integrate .. //depot/projects/vimage/src/sys/dev/ral/rt2661.c#8 integrate .. //depot/projects/vimage/src/sys/dev/ray/if_ray.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_rum.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_ural.c#9 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_zyd.c#1 branch .. //depot/projects/vimage/src/sys/dev/usb/if_zydfw.h#1 branch .. //depot/projects/vimage/src/sys/dev/usb/if_zydreg.h#1 branch .. //depot/projects/vimage/src/sys/dev/usb/usbdevs#11 integrate .. //depot/projects/vimage/src/sys/dev/wi/if_wi.c#9 integrate .. //depot/projects/vimage/src/sys/fs/msdosfs/direntry.h#2 integrate .. //depot/projects/vimage/src/sys/fs/msdosfs/msdosfs_conv.c#3 integrate .. //depot/projects/vimage/src/sys/fs/msdosfs/msdosfs_lookup.c#3 integrate .. //depot/projects/vimage/src/sys/fs/msdosfs/msdosfs_vnops.c#7 integrate .. //depot/projects/vimage/src/sys/geom/eli/g_eli.h#2 integrate .. //depot/projects/vimage/src/sys/geom/eli/g_eli_crypto.c#3 integrate .. //depot/projects/vimage/src/sys/i386/isa/isa.c#3 integrate .. //depot/projects/vimage/src/sys/i386/linux/linux_proto.h#5 integrate .. //depot/projects/vimage/src/sys/i386/linux/linux_syscall.h#5 integrate .. //depot/projects/vimage/src/sys/i386/linux/linux_sysent.c#5 integrate .. //depot/projects/vimage/src/sys/i386/linux/syscalls.master#5 integrate .. //depot/projects/vimage/src/sys/kern/kern_acct.c#5 integrate .. //depot/projects/vimage/src/sys/kern/kern_ktrace.c#6 integrate .. //depot/projects/vimage/src/sys/kern/kern_sysctl.c#8 integrate .. //depot/projects/vimage/src/sys/kern/kern_timeout.c#6 integrate .. //depot/projects/vimage/src/sys/kern/vfs_syscalls.c#8 integrate .. //depot/projects/vimage/src/sys/modules/ixgbe/Makefile#1 branch .. //depot/projects/vimage/src/sys/modules/zyd/Makefile#1 branch .. //depot/projects/vimage/src/sys/net/if_lagg.c#9 integrate .. //depot/projects/vimage/src/sys/net80211/_ieee80211.h#7 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211.h#4 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_freebsd.h#6 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ht.c#2 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_input.c#7 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ioctl.c#5 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ioctl.h#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_node.c#6 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_proto.c#6 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_proto.h#5 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_var.h#5 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#25 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_asconf.c#13 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_auth.c#10 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_bsd_addr.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_cc_functions.c#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_constants.h#15 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.c#17 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_input.c#18 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_lock_bsd.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_os_bsd.h#14 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.c#17 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.h#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.c#17 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_peeloff.c#11 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_timer.c#13 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_usrreq.c#18 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.c#18 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.h#12 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_subr.c#31 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_timer.c#12 edit .. //depot/projects/vimage/src/sys/netinet/tcp_timer.h#6 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_usrreq.c#12 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_var.h#15 integrate .. //depot/projects/vimage/src/sys/netinet6/sctp6_usrreq.c#18 integrate .. //depot/projects/vimage/src/sys/netinet6/udp6_usrreq.c#18 edit .. //depot/projects/vimage/src/sys/sparc64/fhc/fhc.c#4 integrate .. //depot/projects/vimage/src/sys/sparc64/include/bus_common.h#2 integrate .. //depot/projects/vimage/src/sys/sparc64/include/intr_machdep.h#4 integrate .. //depot/projects/vimage/src/sys/sparc64/pci/psycho.c#7 integrate .. //depot/projects/vimage/src/sys/sparc64/pci/psychoreg.h#4 integrate .. //depot/projects/vimage/src/sys/sparc64/sbus/sbus.c#6 integrate .. //depot/projects/vimage/src/sys/sparc64/sbus/sbusreg.h#3 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/exception.S#3 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/intr_machdep.c#4 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/tick.c#2 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/upa.c#4 integrate .. //depot/projects/vimage/src/sys/sys/mount.h#6 integrate Differences ... ==== //depot/projects/vimage/src/sys/amd64/linux32/linux32_proto.h#4 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.31 2007/03/30 00:08:21 jkim Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.28 2007/03/30 00:06:21 jkim Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.32 2007/08/28 12:36:23 kib Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp */ #ifndef _LINUX_SYSPROTO_H_ @@ -734,6 +734,11 @@ char uaddr2_l_[PADL_(void *)]; void * uaddr2; char uaddr2_r_[PADR_(void *)]; char val3_l_[PADL_(int)]; int val3; char val3_r_[PADR_(int)]; }; +struct linux_sched_getaffinity_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)]; + char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char user_mask_ptr_r_[PADR_(l_ulong *)]; +}; struct linux_set_thread_area_args { char desc_l_[PADL_(struct l_user_desc *)]; struct l_user_desc * desc; char desc_r_[PADR_(struct l_user_desc *)]; }; @@ -1099,6 +1104,7 @@ int linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *); int linux_tkill(struct thread *, struct linux_tkill_args *); int linux_sys_futex(struct thread *, struct linux_sys_futex_args *); +int linux_sched_getaffinity(struct thread *, struct linux_sched_getaffinity_args *); int linux_set_thread_area(struct thread *, struct linux_set_thread_area_args *); int linux_fadvise64(struct thread *, struct linux_fadvise64_args *); int linux_exit_group(struct thread *, struct linux_exit_group_args *); @@ -1172,6 +1178,13 @@ #endif /* COMPAT_FREEBSD4 */ + +#ifdef COMPAT_FREEBSD6 + +#define nosys linux_nosys + +#endif /* COMPAT_FREEBSD6 */ + #define LINUX_SYS_AUE_linux_fork AUE_FORK #define LINUX_SYS_AUE_linux_open AUE_OPEN_RWTC #define LINUX_SYS_AUE_linux_waitpid AUE_WAIT4 @@ -1346,6 +1359,7 @@ #define LINUX_SYS_AUE_linux_fremovexattr AUE_NULL #define LINUX_SYS_AUE_linux_tkill AUE_NULL #define LINUX_SYS_AUE_linux_sys_futex AUE_NULL +#define LINUX_SYS_AUE_linux_sched_getaffinity AUE_NULL #define LINUX_SYS_AUE_linux_set_thread_area AUE_NULL #define LINUX_SYS_AUE_linux_fadvise64 AUE_NULL #define LINUX_SYS_AUE_linux_exit_group AUE_EXIT ==== //depot/projects/vimage/src/sys/amd64/linux32/linux32_syscall.h#4 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.31 2007/03/30 00:08:21 jkim Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.28 2007/03/30 00:06:21 jkim Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.32 2007/08/28 12:36:23 kib Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp */ #define LINUX_SYS_exit 1 @@ -222,6 +222,7 @@ #define LINUX_SYS_linux_fremovexattr 237 #define LINUX_SYS_linux_tkill 238 #define LINUX_SYS_linux_sys_futex 240 +#define LINUX_SYS_linux_sched_getaffinity 242 #define LINUX_SYS_linux_set_thread_area 243 #define LINUX_SYS_linux_fadvise64 250 #define LINUX_SYS_linux_exit_group 252 ==== //depot/projects/vimage/src/sys/amd64/linux32/linux32_sysent.c#4 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.31 2007/03/30 00:08:21 jkim Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.28 2007/03/30 00:06:21 jkim Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.32 2007/08/28 12:36:23 kib Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp */ #include @@ -262,7 +262,7 @@ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 239 = linux_sendfile64 */ { AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0 }, /* 240 = linux_sys_futex */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 241 = linux_sched_setaffinity */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 242 = linux_sched_getaffinity */ + { AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0 }, /* 242 = linux_sched_getaffinity */ { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL, NULL, 0, 0 }, /* 243 = linux_set_thread_area */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 244 = linux_get_thread_area */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 245 = linux_io_setup */ ==== //depot/projects/vimage/src/sys/amd64/linux32/syscalls.master#4 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.28 2007/03/30 00:06:21 jkim Exp $ + $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; System call name/number master file (or rather, slave, from LINUX). @@ -408,7 +408,8 @@ 240 AUE_NULL STD { int linux_sys_futex(void *uaddr, int op, int val, \ struct l_timespec *timeout, void *uaddr2, int val3); } 241 AUE_NULL UNIMPL linux_sched_setaffinity -242 AUE_NULL UNIMPL linux_sched_getaffinity +242 AUE_NULL STD { int linux_sched_getaffinity(l_pid_t pid, l_uint len, \ + l_ulong *user_mask_ptr); } 243 AUE_NULL STD { int linux_set_thread_area(struct l_user_desc *desc); } 244 AUE_NULL UNIMPL linux_get_thread_area 245 AUE_NULL UNIMPL linux_io_setup ==== //depot/projects/vimage/src/sys/arm/xscale/i80321/i80321.c#2 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.6 2006/07/25 01:08:41 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.7 2007/09/04 18:45:27 cognet Exp $"); #include #include @@ -213,8 +213,6 @@ PCIM_CMD_SERRESPEN; bus_space_write_4(sc->sc_st, sc->sc_atu_sh, PCIR_COMMAND, preg); - preg = bus_space_read_4(sc->sc_st, sc->sc_atu_sh, - PCIR_COMMAND); } /* Initialize the bus space tags. */ i80321_io_bs_init(&sc->sc_pci_iot, sc); ==== //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_misc.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.66 2007/07/04 23:04:41 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.67 2007/08/28 20:28:11 jhb Exp $"); #include "opt_compat.h" @@ -135,28 +135,28 @@ static void copy_statfs(struct statfs *in, struct statfs32 *out) { - + + statfs_scale_blocks(in, INT32_MAX); bzero(out, sizeof(*out)); CP(*in, *out, f_bsize); - CP(*in, *out, f_iosize); + out->f_iosize = MIN(in->f_iosize, INT32_MAX); CP(*in, *out, f_blocks); CP(*in, *out, f_bfree); CP(*in, *out, f_bavail); - CP(*in, *out, f_files); - CP(*in, *out, f_ffree); + out->f_files = MIN(in->f_files, INT32_MAX); + out->f_ffree = MIN(in->f_ffree, INT32_MAX); CP(*in, *out, f_fsid); CP(*in, *out, f_owner); CP(*in, *out, f_type); CP(*in, *out, f_flags); - CP(*in, *out, f_flags); - CP(*in, *out, f_syncwrites); - CP(*in, *out, f_asyncwrites); + out->f_syncwrites = MIN(in->f_syncwrites, INT32_MAX); + out->f_asyncwrites = MIN(in->f_asyncwrites, INT32_MAX); strlcpy(out->f_fstypename, in->f_fstypename, MFSNAMELEN); strlcpy(out->f_mntonname, in->f_mntonname, min(MNAMELEN, FREEBSD4_MNAMELEN)); - CP(*in, *out, f_syncreads); - CP(*in, *out, f_asyncreads); + out->f_syncreads = MIN(in->f_syncreads, INT32_MAX); + out->f_asyncreads = MIN(in->f_asyncreads, INT32_MAX); strlcpy(out->f_mntfromname, in->f_mntfromname, min(MNAMELEN, FREEBSD4_MNAMELEN)); } ==== //depot/projects/vimage/src/sys/compat/linux/linux_misc.c#9 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.213 2007/06/12 00:11:57 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.214 2007/08/28 12:26:35 kib Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -1716,3 +1716,24 @@ return (error); } + +/* + * XXX: fake one.. waiting for real implementation of affinity mask. + */ +int +linux_sched_getaffinity(struct thread *td, + struct linux_sched_getaffinity_args *args) +{ + int error; + cpumask_t i = ~0; + + if (args->len < sizeof(cpumask_t)) + return (EINVAL); + + error = copyout(&i, args->user_mask_ptr, sizeof(cpumask_t)); + if (error) + return (EFAULT); + + td->td_retval[0] = sizeof(cpumask_t); + return (0); +} ==== //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#3 (text+ko) ==== @@ -155,9 +155,9 @@ TUNABLE_ULONG("vfs.zfs.arc_max", &zfs_arc_max); TUNABLE_ULONG("vfs.zfs.arc_min", &zfs_arc_min); SYSCTL_DECL(_vfs_zfs); -SYSCTL_ULONG(_vfs_zfs, OID_AUTO, arc_max, CTLFLAG_RD, &zfs_arc_max, 0, +SYSCTL_ULONG(_vfs_zfs, OID_AUTO, arc_max, CTLFLAG_RDTUN, &zfs_arc_max, 0, "Maximum ARC size"); -SYSCTL_ULONG(_vfs_zfs, OID_AUTO, arc_min, CTLFLAG_RD, &zfs_arc_min, 0, +SYSCTL_ULONG(_vfs_zfs, OID_AUTO, arc_min, CTLFLAG_RDTUN, &zfs_arc_min, 0, "Minimum ARC size"); /* ==== //depot/projects/vimage/src/sys/dev/acpica/acpi_cpu.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.66 2007/06/03 00:40:56 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.67 2007/08/30 21:18:42 njl Exp $"); #include "opt_acpi.h" #include @@ -257,7 +257,7 @@ acpi_cpu_attach(device_t dev) { ACPI_BUFFER buf; - ACPI_OBJECT arg, *obj; + ACPI_OBJECT arg[4], *obj; ACPI_OBJECT_LIST arglist; struct pcpu *pcpu_data; struct acpi_cpu_softc *sc; @@ -268,6 +268,11 @@ driver_t **drivers; uint32_t cap_set[3]; + /* UUID needed by _OSC evaluation */ + static uint8_t cpu_oscuuid[16] = { 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, + 0xBE, 0x47, 0x9E, 0xBD, 0xD8, 0x70, + 0x58, 0x71, 0x39, 0x53 }; + ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); @@ -334,19 +339,39 @@ /* * CPU capabilities are specified as a buffer of 32-bit integers: * revision, count, and one or more capabilities. The revision of - * "1" is not specified anywhere but seems to match Linux. We should - * also support _OSC here. + * "1" is not specified anywhere but seems to match Linux. */ if (sc->cpu_features) { - arglist.Pointer = &arg; + arglist.Pointer = arg; arglist.Count = 1; - arg.Type = ACPI_TYPE_BUFFER; - arg.Buffer.Length = sizeof(cap_set); - arg.Buffer.Pointer = (uint8_t *)cap_set; + arg[0].Type = ACPI_TYPE_BUFFER; + arg[0].Buffer.Length = sizeof(cap_set); + arg[0].Buffer.Pointer = (uint8_t *)cap_set; cap_set[0] = 1; /* revision */ cap_set[1] = 1; /* number of capabilities integers */ cap_set[2] = sc->cpu_features; AcpiEvaluateObject(sc->cpu_handle, "_PDC", &arglist, NULL); + + /* + * On some systems we need to evaluate _OSC so that the ASL + * loads the _PSS and/or _PDC methods at runtime. + * + * TODO: evaluate failure of _OSC. + */ + arglist.Pointer = arg; + arglist.Count = 4; + arg[0].Type = ACPI_TYPE_BUFFER; + arg[0].Buffer.Length = sizeof(cpu_oscuuid); + arg[0].Buffer.Pointer = cpu_oscuuid; /* UUID */ + arg[1].Type = ACPI_TYPE_INTEGER; + arg[1].Integer.Value = 1; /* revision */ + arg[2].Type = ACPI_TYPE_INTEGER; + arg[2].Integer.Value = 1; /* count */ + arg[3].Type = ACPI_TYPE_BUFFER; + arg[3].Buffer.Length = sizeof(cap_set); /* Capabilities buffer */ + arg[3].Buffer.Pointer = (uint8_t *)cap_set; + cap_set[0] = 0; + AcpiEvaluateObject(sc->cpu_handle, "_OSC", &arglist, NULL); } /* Probe for Cx state support. */ ==== //depot/projects/vimage/src/sys/dev/ath/if_ath.c#12 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.173 2007/08/06 14:25:59 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.174 2007/09/05 23:00:26 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -1579,6 +1579,12 @@ ATH_TXBUF_UNLOCK(sc); break; } + /* + * Cancel any background scan. + */ + if (ic->ic_flags & IEEE80211_F_SCAN) + ieee80211_cancel_scan(ic); + STAILQ_INIT(&frags); /* * Find the node for the destination so we can do @@ -1605,15 +1611,6 @@ * the frame back when the time is right. */ ieee80211_pwrsave(ni, m); - /* - * If we're in power save mode 'cuz of a bg - * scan cancel it so the traffic can flow. - * The packet we just queued will automatically - * get sent when we drop out of power save. - * XXX locking - */ - if (ic->ic_flags & IEEE80211_F_SCAN) - ieee80211_cancel_scan(ic); goto reclaim; } /* calculate priority so we can find the tx queue */ @@ -1752,6 +1749,7 @@ } ifp->if_timer = 5; + ic->ic_lastdata = ticks; #if 0 /* * Flush stale frames from the fast-frame staging queue. ==== //depot/projects/vimage/src/sys/dev/awi/awi.c#3 (text+ko) ==== @@ -89,7 +89,7 @@ __KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $"); #endif #ifdef __FreeBSD__ -__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.44 2007/06/11 03:36:51 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.45 2007/09/05 21:31:31 sam Exp $"); #endif #include "opt_inet.h" @@ -1919,6 +1919,8 @@ else awi_drvstate(sc, AWI_DRV_INFASSOC); break; + default: + break; } if (nstate == IEEE80211_S_INIT) { @@ -1954,6 +1956,8 @@ case IEEE80211_S_SCAN: /* scan next */ break; + default: + break; } if (ic->ic_flags & IEEE80211_F_ASCAN) newmode = AWI_SCAN_ACTIVE; ==== //depot/projects/vimage/src/sys/dev/ipw/if_ipw.c#6 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.29 2007/07/05 15:06:49 avatar Exp $ */ +/* $FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.30 2007/09/05 21:31:31 sam Exp $ */ /*- * Copyright (c) 2004-2006 @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.29 2007/07/05 15:06:49 avatar Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.30 2007/09/05 21:31:31 sam Exp $"); /*- * Intel(R) PRO/Wireless 2100 MiniPCI driver @@ -839,6 +839,7 @@ case IEEE80211_S_SCAN: case IEEE80211_S_AUTH: case IEEE80211_S_ASSOC: + default: break; } ==== //depot/projects/vimage/src/sys/dev/isp/isp_freebsd.h#7 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.106 2007/07/02 20:08:20 mjacob Exp $ */ +/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.107 2007/08/28 00:09:12 jkim Exp $ */ /*- * Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions * @@ -184,8 +184,8 @@ const struct firmware * fw; union { struct { - char wwnn[17]; - char wwpn[17]; + char wwnn[19]; + char wwpn[19]; } fc; } sysctl_info; #endif ==== //depot/projects/vimage/src/sys/dev/iwi/if_iwi.c#6 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.55 2007/06/25 20:56:33 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.57 2007/09/05 23:00:26 sam Exp $"); /*- * Intel(R) PRO/Wireless 2200BG/2225BG/2915ABG driver @@ -957,7 +957,6 @@ struct iwi_softc *sc = ifp->if_softc; int error = 0; - IWI_LOCK_ASSERT(sc); DPRINTF(("%s: %s -> %s flags 0x%x\n", __func__, ieee80211_state_name[ic->ic_state], ieee80211_state_name[nstate], sc->flags)); @@ -1918,6 +1917,11 @@ IFQ_DRV_DEQUEUE(&ifp->if_snd, m0); if (m0 == NULL) break; + /* + * Cancel any background scan. + */ + if (ic->ic_flags & IEEE80211_F_SCAN) + ieee80211_cancel_scan(ic); if (m0->m_len < sizeof (struct ether_header) && (m0 = m_pullup(m0, sizeof (struct ether_header))) == NULL) { @@ -1979,6 +1983,7 @@ } sc->sc_tx_timer = 5; + ic->ic_lastdata = ticks; } IWI_UNLOCK(sc); ==== //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ***************************************************************************/ -/* $FreeBSD: src/sys/dev/ixgbe/ixgbe.c,v 1.3 2007/07/12 19:04:11 jfv Exp $ */ +/* $FreeBSD: src/sys/dev/ixgbe/ixgbe.c,v 1.4 2007/09/04 02:31:34 jfv Exp $ */ #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" @@ -46,7 +46,7 @@ /********************************************************************* * Driver version *********************************************************************/ -char ixgbe_driver_version[] = "1.1.3"; +char ixgbe_driver_version[] = "1.2.6"; /********************************************************************* * PCI Device ID Table @@ -60,10 +60,9 @@ static ixgbe_vendor_info_t ixgbe_vendor_info_array[] = { - {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82598, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82598AF_DUAL_PORT, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82598AF_SINGLE_PORT, 0, 0, 0}, - {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82598AT_DUAL_PORT, 0, 0, 0}, + {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82598EB_CX4, 0, 0, 0}, /* required last entry */ {0, 0, 0, 0, 0} }; @@ -100,8 +99,9 @@ static void ixgbe_setup_interface(device_t, struct adapter *); static int ixgbe_allocate_queues(struct adapter *); static int ixgbe_allocate_msix_resources(struct adapter *); +#if __FreeBSD_version >= 700000 static int ixgbe_setup_msix(struct adapter *); - +#endif static int ixgbe_allocate_transmit_buffers(struct tx_ring *); static int ixgbe_setup_transmit_structures(struct adapter *); static void ixgbe_setup_transmit_ring(struct tx_ring *); @@ -119,7 +119,7 @@ static void ixgbe_enable_intr(struct adapter *); static void ixgbe_disable_intr(struct adapter *); static void ixgbe_update_stats_counters(struct adapter *); -static boolean_t ixgbe_txeof(struct tx_ring *); +static bool ixgbe_txeof(struct tx_ring *); static int ixgbe_rxeof(struct rx_ring *, int); static void ixgbe_rx_checksum(struct adapter *, uint32_t, struct mbuf *); static void ixgbe_set_promisc(struct adapter *); @@ -133,6 +133,7 @@ static int ixgbe_encap(struct adapter *, struct mbuf **); static int ixgbe_sysctl_stats(SYSCTL_HANDLER_ARGS); static int ixgbe_sysctl_debug(SYSCTL_HANDLER_ARGS); +static int ixgbe_set_flowcntl(SYSCTL_HANDLER_ARGS); static int ixgbe_dma_malloc(struct adapter *, bus_size_t, struct ixgbe_dma_alloc *, int); static void ixgbe_dma_free(struct adapter *, struct ixgbe_dma_alloc *); @@ -143,14 +144,23 @@ static void ixgbe_set_ivar(struct adapter *, u16, u8); static void ixgbe_configure_ivars(struct adapter *); -/* Legacy Interrupt handler */ -static void ixgbe_intr(void *); +/* Legacy Fast Interrupt routine and handlers */ +#if __FreeBSD_version >= 700000 +static int ixgbe_fast_irq(void *); +/* The MSI/X Interrupt handlers */ +static void ixgbe_msix_tx(void *); +static void ixgbe_msix_rx(void *); +static void ixgbe_msix_link(void *); +#else +static void ixgbe_fast_irq(void *); +#endif -/* The MSI/X Interrupt handlers */ -static void ixgbe_txint(void *); -static void ixgbe_rxint(void *); -static void ixgbe_linkint(void *); +static void ixgbe_rxtx(void *context, int pending); +static void ixgbe_link(void *context, int pending); +#ifndef NO_82598_A0_SUPPORT +static void desc_flip(void *); +#endif /********************************************************************* * FreeBSD Device Interface Entry Points @@ -175,26 +185,40 @@ MODULE_DEPEND(ixgbe, pci, 1, 1, 1); MODULE_DEPEND(ixgbe, ether, 1, 1, 1); +/* +** TUNEABLE PARAMETERS: +*/ + /* How many packets rxeof tries to clean at a time */ static int ixgbe_rx_process_limit = 100; TUNABLE_INT("hw.ixgbe.rx_process_limit", &ixgbe_rx_process_limit); -/* - * Should the driver do MSI/X and RSS/MQ? - * - default to MSI/X and RSS enabled - */ -static int ixgbe_disable_msix = 0; -TUNABLE_INT("hw.ixgbe.disable_msix", &ixgbe_disable_msix); +/* Flow control setting, default to full */ +static int ixgbe_flow_control = 3; +TUNABLE_INT("hw.ixgbe.flow_control", &ixgbe_flow_control); + +/* Number of TX Queues, note multi tx is not working */ +static int ixgbe_tx_queues = 1; +TUNABLE_INT("hw.ixgbe.tx_queues", &ixgbe_tx_queues); + +/* Number of RX Queues */ +static int ixgbe_rx_queues = 8; +TUNABLE_INT("hw.ixgbe.rx_queues", &ixgbe_rx_queues); + +/* Number of Other Queues, this is used for link interrupts */ +static int ixgbe_other_queues = 1; +TUNABLE_INT("hw.ixgbe.other_queues", &ixgbe_other_queues); + +/* Number of TX descriptors per ring */ +static int ixgbe_txd = DEFAULT_TXD; +TUNABLE_INT("hw.ixgbe.txd", &ixgbe_txd); + +/* Number of RX descriptors per ring */ +static int ixgbe_rxd = DEFAULT_RXD; +TUNABLE_INT("hw.ixgbe.rxd", &ixgbe_rxd); -/* -** Flow control tuneable: -** 0 - off -** 1 - rx pause -** 2 - tx pause -** 3 - full -*/ -static int ixgbe_flow_control = 0; -TUNABLE_INT("hw.ixgbe.flow_control", &ixgbe_flow_control); +/* Total number of Interfaces - need for config sanity check */ +static int ixgbe_total_ports; /********************************************************************* * Device identification routine @@ -239,6 +263,15 @@ sprintf(adapter_name, "%s, Version - %s", ixgbe_strings[ent->index], ixgbe_driver_version); + switch (pci_device_id) { + case IXGBE_DEV_ID_82598AF_DUAL_PORT : + ixgbe_total_ports += 2; + break; + case IXGBE_DEV_ID_82598AF_SINGLE_PORT : + ixgbe_total_ports += 1; + default: + break; + } device_set_desc_copy(dev, adapter_name); return (0); } @@ -264,13 +297,17 @@ struct adapter *adapter; int error = 0; uint32_t ctrl_ext; + char name_string[16]; INIT_DEBUGOUT("ixgbe_attach: begin"); /* Allocate, clear, and link in our adapter structure */ adapter = device_get_softc(dev); adapter->dev = adapter->osdep.dev = dev; - IXGBE_LOCK_INIT(adapter, device_get_nameunit(dev)); + /* General Lock Init*/ + snprintf(name_string, sizeof(name_string), "%s:core", + device_get_nameunit(dev)); + mtx_init(&adapter->core_mtx, name_string, NULL, MTX_DEF); /* SYSCTL APIs */ SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), @@ -283,25 +320,17 @@ OID_AUTO, "debug", CTLTYPE_INT | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_debug, "I", "Debug Info"); - SYSCTL_ADD_INT(device_get_sysctl_ctx(dev), + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "flow control", CTLFLAG_RW, - &ixgbe_flow_control, 0, "Flow Control"); + OID_AUTO, "flow_control", CTLTYPE_INT | CTLFLAG_RW, + adapter, 0, ixgbe_set_flowcntl, "I", "Flow Control"); /* Set up the timer callout */ - callout_init_mtx(&adapter->timer, &adapter->mtx, 0); + callout_init_mtx(&adapter->timer, &adapter->core_mtx, 0); /* Determine hardware revision */ ixgbe_identify_hardware(adapter); - /* - ** Descriptors: (configurable by user), note these are - ** constant for all rings, I saw no reason to vary - ** them, but perhaps someone later would. - */ - adapter->num_tx_desc = DEFAULT_TXD; - adapter->num_rx_desc = DEFAULT_RXD; - /* Indicate to RX setup to use Jumbo Clusters */ adapter->bigbufs = TRUE; @@ -312,17 +341,50 @@ goto err_out; } + /* Do descriptor calc and sanity checks */ + if (((ixgbe_txd * sizeof(union ixgbe_adv_tx_desc)) % DBA_ALIGN) != 0 || + ixgbe_txd < MIN_TXD || ixgbe_txd > MAX_TXD) { + device_printf(dev, "TXD config issue, using default!\n"); + adapter->num_tx_desc = DEFAULT_TXD; + } else + adapter->num_tx_desc = ixgbe_txd; + + /* + ** With many RX rings it is easy to exceed the + ** system mbuf allocation. Tuning nmbclusters + ** can alleviate this. + */ + if ((adapter->num_rx_queues > 1) && (nmbclusters > 0 )){ + int s; + /* Calculate the total RX mbuf needs */ + s = (ixgbe_rxd * adapter->num_rx_queues) * ixgbe_total_ports; + if (s > nmbclusters) { + device_printf(dev, "RX Descriptors exceed " + "system mbuf max, using default instead!\n"); + ixgbe_rxd = DEFAULT_RXD; + } + } + + if (((ixgbe_rxd * sizeof(union ixgbe_adv_rx_desc)) % DBA_ALIGN) != 0 || + ixgbe_rxd < MIN_TXD || ixgbe_rxd > MAX_TXD) { + device_printf(dev, "RXD config issue, using default!\n"); + adapter->num_rx_desc = DEFAULT_RXD; + } else + adapter->num_rx_desc = ixgbe_rxd; + /* Allocate our TX/RX Queues */ if (ixgbe_allocate_queues(adapter)) { error = ENOMEM; goto err_out; } +#if __FreeBSD_version >= 700000 if (adapter->msix) { error = ixgbe_setup_msix(adapter); if (error) goto err_out; } +#endif /* Initialize the shared code */ if (ixgbe_init_shared_code(&adapter->hw)) { @@ -382,14 +444,25 @@ INIT_DEBUGOUT("ixgbe_detach: begin"); /* Make sure VLANS are not using driver */ +#if __FreeBSD_version >= 700000 if (adapter->ifp->if_vlantrunk != NULL) { +#else + if (adapter->ifp->if_nvlans != 0) { +#endif device_printf(dev,"Vlan in use, detach first\n"); return (EBUSY); } - IXGBE_LOCK(adapter); + mtx_lock(&adapter->core_mtx); ixgbe_stop(adapter); - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->core_mtx); + + if (adapter->tq != NULL) { + taskqueue_drain(adapter->tq, &adapter->rxtx_task); + taskqueue_drain(taskqueue_fast, &adapter->link_task); + taskqueue_free(adapter->tq); + adapter->tq = NULL; + } /* let hardware know driver is unloading */ ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT); @@ -405,7 +478,7 @@ ixgbe_free_transmit_structures(adapter); ixgbe_free_receive_structures(adapter); - IXGBE_LOCK_DESTROY(adapter); + mtx_destroy(&adapter->core_mtx); return (0); } @@ -419,9 +492,9 @@ ixgbe_shutdown(device_t dev) { struct adapter *adapter = device_get_softc(dev); - IXGBE_LOCK(adapter); + mtx_lock(&adapter->core_mtx); ixgbe_stop(adapter); - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->core_mtx); return (0); } @@ -442,7 +515,7 @@ struct mbuf *m_head; struct adapter *adapter = ifp->if_softc; - IXGBE_LOCK_ASSERT(adapter); + mtx_assert(&adapter->tx_mtx, MA_OWNED); if ((ifp->if_drv_flags & (IFF_DRV_RUNNING|IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) @@ -464,7 +537,7 @@ break; } /* Send a copy of the frame to the BPF listener */ - BPF_MTAP(ifp, m_head); + ETHER_BPF_MTAP(ifp, m_head); /* Set timeout in case hardware has problems transmitting */ adapter->watchdog_timer = IXGBE_TX_TIMEOUT; @@ -478,10 +551,10 @@ { struct adapter *adapter = ifp->if_softc; - IXGBE_LOCK(adapter); + mtx_lock(&adapter->tx_mtx); if (ifp->if_drv_flags & IFF_DRV_RUNNING) ixgbe_start_locked(ifp); - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->tx_mtx); return; } @@ -508,9 +581,9 @@ if (ifa->ifa_addr->sa_family == AF_INET) { ifp->if_flags |= IFF_UP; if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - IXGBE_LOCK(adapter); + mtx_lock(&adapter->core_mtx); ixgbe_init_locked(adapter); - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->core_mtx); } arp_ifinit(ifp, ifa); } else @@ -521,17 +594,17 @@ if (ifr->ifr_mtu > IXGBE_MAX_FRAME_SIZE - ETHER_HDR_LEN) { error = EINVAL; } else { - IXGBE_LOCK(adapter); + mtx_lock(&adapter->core_mtx); ifp->if_mtu = ifr->ifr_mtu; adapter->max_frame_size = ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; ixgbe_init_locked(adapter); - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->core_mtx); } break; case SIOCSIFFLAGS: IOCTL_DEBUGOUT("ioctl: SIOCSIFFLAGS (Set Interface Flags)"); - IXGBE_LOCK(adapter); + mtx_lock(&adapter->core_mtx); if (ifp->if_flags & IFF_UP) { if ((ifp->if_drv_flags & IFF_DRV_RUNNING)) { if ((ifp->if_flags ^ adapter->if_flags) & @@ -545,17 +618,17 @@ if (ifp->if_drv_flags & IFF_DRV_RUNNING) ixgbe_stop(adapter); adapter->if_flags = ifp->if_flags; - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->core_mtx); break; case SIOCADDMULTI: case SIOCDELMULTI: IOCTL_DEBUGOUT("ioctl: SIOC(ADD|DEL)MULTI"); if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - IXGBE_LOCK(adapter); + mtx_lock(&adapter->core_mtx); ixgbe_disable_intr(adapter); ixgbe_set_multi(adapter); ixgbe_enable_intr(adapter); - IXGBE_UNLOCK(adapter); + mtx_unlock(&adapter->core_mtx); } break; case SIOCSIFMEDIA: @@ -575,7 +648,9 @@ ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (ifp->if_drv_flags & IFF_DRV_RUNNING) ixgbe_init(adapter); +#if __FreeBSD_version >= 700000 VLAN_CAPABILITIES(ifp); >>> TRUNCATED FOR MAIL (1000 lines) <<<