Date: Sun, 1 Jul 2012 12:48:56 +0000 (UTC) From: Davide Italiano <davide@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r237923 - in projects/calloutng: cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize etc share/man/man4 sys/amd64/amd64 sys/amd64/conf sys/amd64/include sys/arm/at91 sys/arm/... Message-ID: <201207011248.q61CmuAg002711@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: davide Date: Sun Jul 1 12:48:56 2012 New Revision: 237923 URL: http://svn.freebsd.org/changeset/base/237923 Log: MFC as per r237921 Added: projects/calloutng/sys/arm/at91/std.atmel - copied unchanged from r237922, head/sys/arm/at91/std.atmel projects/calloutng/sys/arm/conf/ATMEL - copied unchanged from r237922, head/sys/arm/conf/ATMEL Replaced: projects/calloutng/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ - copied from r237922, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ Modified: projects/calloutng/etc/syslog.conf projects/calloutng/share/man/man4/mps.4 projects/calloutng/sys/amd64/amd64/pmap.c projects/calloutng/sys/amd64/conf/GENERIC projects/calloutng/sys/amd64/include/cpufunc.h projects/calloutng/sys/arm/at91/std.at91 projects/calloutng/sys/arm/at91/std.at91sam9 projects/calloutng/sys/arm/at91/std.ethernut5 projects/calloutng/sys/arm/at91/std.hl201 projects/calloutng/sys/arm/at91/std.qila9g20 projects/calloutng/sys/arm/at91/std.sam9g20ek projects/calloutng/sys/arm/at91/std.sam9x25ek projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/calloutng/sys/dev/ath/ah_osdep.c projects/calloutng/sys/dev/ath/ah_osdep.h projects/calloutng/sys/dev/ath/ath_hal/ah.h projects/calloutng/sys/dev/ath/ath_hal/ah_debug.h projects/calloutng/sys/dev/ath/ath_hal/ah_internal.h projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/calloutng/sys/dev/cxgb/cxgb_adapter.h projects/calloutng/sys/dev/cxgb/cxgb_main.c projects/calloutng/sys/dev/cxgb/cxgb_sge.c projects/calloutng/sys/dev/cxgbe/adapter.h projects/calloutng/sys/dev/cxgbe/t4_l2t.c projects/calloutng/sys/dev/cxgbe/t4_main.c projects/calloutng/sys/dev/cxgbe/t4_sge.c projects/calloutng/sys/geom/geom_map.c projects/calloutng/sys/modules/cxgbe/if_cxgbe/Makefile projects/calloutng/sys/net/if_lagg.c projects/calloutng/sys/net80211/_ieee80211.h projects/calloutng/sys/powerpc/conf/GENERIC projects/calloutng/sys/powerpc/conf/GENERIC64 projects/calloutng/sys/sparc64/conf/GENERIC projects/calloutng/sys/sys/proc.h projects/calloutng/tools/tools/ath/common/dumpregs_5416.c projects/calloutng/usr.bin/killall/killall.c Directory Properties: projects/calloutng/ (props changed) projects/calloutng/cddl/contrib/opensolaris/ (props changed) projects/calloutng/share/man/man4/ (props changed) projects/calloutng/sys/ (props changed) projects/calloutng/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/calloutng/etc/syslog.conf ============================================================================== --- projects/calloutng/etc/syslog.conf Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/etc/syslog.conf Sun Jul 1 12:48:56 2012 (r237923) @@ -16,6 +16,7 @@ cron.* /var/log/cron *.=debug /var/log/debug.log *.emerg * # uncomment this to log all writes to /dev/console to /var/log/console.log +# touch /var/log/console.log and chmod it to mode 600 before it will work #console.info /var/log/console.log # uncomment this to enable logging of all log messages to /var/log/all.log # touch /var/log/all.log and chmod it to mode 600 before it will work Modified: projects/calloutng/share/man/man4/mps.4 ============================================================================== --- projects/calloutng/share/man/man4/mps.4 Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/share/man/man4/mps.4 Sun Jul 1 12:48:56 2012 (r237923) @@ -34,7 +34,7 @@ .\" $Id: //depot/SpectraBSD/head/share/man/man4/mps.4#6 $ .\" $FreeBSD$ .\" -.Dd February 7, 2012 +.Dd June 30, 2012 .Dt MPS 4 .Os .Sh NAME @@ -205,9 +205,6 @@ This man page was written by This driver has a couple of known shortcomings: .Bl -bullet -compact .It -Not endian safe. -It only works on little endian machines (e.g. amd64 and i386). -.It No userland utility available (e.g. .Xr mptutil 8 ) . .It Modified: projects/calloutng/sys/amd64/amd64/pmap.c ============================================================================== --- projects/calloutng/sys/amd64/amd64/pmap.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/amd64/amd64/pmap.c Sun Jul 1 12:48:56 2012 (r237923) @@ -264,7 +264,7 @@ static caddr_t crashdumpmap; static void free_pv_chunk(struct pv_chunk *pc); static void free_pv_entry(pmap_t pmap, pv_entry_t pv); -static pv_entry_t get_pv_entry(pmap_t pmap, boolean_t try); +static pv_entry_t get_pv_entry(pmap_t pmap, struct rwlock **lockp); static int popcnt_pc_map_elem(uint64_t elem); static vm_page_t reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **lockp); static void reserve_pv_entries(pmap_t pmap, int needed, @@ -2102,6 +2102,8 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_ * drastic measures to free some pages so we can allocate * another pv entry chunk. * + * Returns NULL if PV entries were reclaimed from the specified pmap. + * * We do not, however, unmap 2mpages because subsequent accesses will * allocate per-page pv entries until repromotion occurs, thereby * exacerbating the shortage of free pv entries. @@ -2123,6 +2125,7 @@ reclaim_pv_chunk(pmap_t locked_pmap, str rw_assert(&pvh_global_lock, RA_LOCKED); PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED); + KASSERT(lockp != NULL, ("reclaim_pv_chunk: lockp is NULL")); pmap = NULL; free = m_pc = NULL; TAILQ_INIT(&new_tail); @@ -2287,16 +2290,19 @@ free_pv_chunk(struct pv_chunk *pc) } /* - * get a new pv_entry, allocating a block from the system - * when needed. + * Returns a new PV entry, allocating a new PV chunk from the system when + * needed. If this PV chunk allocation fails and a PV list lock pointer was + * given, a PV chunk is reclaimed from an arbitrary pmap. Otherwise, NULL is + * returned. + * + * The given PV list lock may be released. */ static pv_entry_t -get_pv_entry(pmap_t pmap, boolean_t try) +get_pv_entry(pmap_t pmap, struct rwlock **lockp) { int bit, field; pv_entry_t pv; struct pv_chunk *pc; - struct rwlock *lock; vm_page_t m; rw_assert(&pvh_global_lock, RA_LOCKED); @@ -2330,14 +2336,11 @@ retry: m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED); if (m == NULL) { - if (try) { + if (lockp == NULL) { PV_STAT(pc_chunk_tryfail++); return (NULL); } - lock = NULL; - m = reclaim_pv_chunk(pmap, &lock); - if (lock != NULL) - rw_wunlock(lock); + m = reclaim_pv_chunk(pmap, lockp); if (m == NULL) goto retry; } @@ -2380,6 +2383,8 @@ popcnt_pc_map_elem(uint64_t elem) /* * Ensure that the number of spare PV entries in the specified pmap meets or * exceeds the given count, "needed". + * + * The given PV list lock may be released. */ static void reserve_pv_entries(pmap_t pmap, int needed, struct rwlock **lockp) @@ -2391,6 +2396,7 @@ reserve_pv_entries(pmap_t pmap, int need rw_assert(&pvh_global_lock, RA_LOCKED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); + KASSERT(lockp != NULL, ("reserve_pv_entries: lockp is NULL")); /* * Newly allocated PV chunks must be stored in a private list until @@ -2402,9 +2408,15 @@ reserve_pv_entries(pmap_t pmap, int need retry: avail = 0; TAILQ_FOREACH(pc, &pmap->pm_pvchunk, pc_list) { - free = popcnt_pc_map_elem(pc->pc_map[0]); - free += popcnt_pc_map_elem(pc->pc_map[1]); - free += popcnt_pc_map_elem(pc->pc_map[2]); + if ((cpu_feature2 & CPUID2_POPCNT) == 0) { + free = popcnt_pc_map_elem(pc->pc_map[0]); + free += popcnt_pc_map_elem(pc->pc_map[1]); + free += popcnt_pc_map_elem(pc->pc_map[2]); + } else { + free = popcntq(pc->pc_map[0]); + free += popcntq(pc->pc_map[1]); + free += popcntq(pc->pc_map[2]); + } if (free == 0) break; avail += free; @@ -2584,7 +2596,8 @@ pmap_pvh_free(struct md_page *pvh, pmap_ } /* - * Conditionally create a pv entry. + * Conditionally create the PV entry for a 4KB page mapping if the required + * memory can be allocated without resorting to reclamation. */ static boolean_t pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va, vm_page_t m, @@ -2594,7 +2607,8 @@ pmap_try_insert_pv_entry(pmap_t pmap, vm rw_assert(&pvh_global_lock, RA_LOCKED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); - if ((pv = get_pv_entry(pmap, TRUE)) != NULL) { + /* Pass NULL instead of the lock pointer to disable reclamation. */ + if ((pv = get_pv_entry(pmap, NULL)) != NULL) { pv->pv_va = va; CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m); TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); @@ -2604,7 +2618,8 @@ pmap_try_insert_pv_entry(pmap_t pmap, vm } /* - * Create the pv entry for a 2MB page mapping. + * Conditionally create the PV entry for a 2MB page mapping if the required + * memory can be allocated without resorting to reclamation. */ static boolean_t pmap_pv_insert_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa, @@ -2614,7 +2629,9 @@ pmap_pv_insert_pde(pmap_t pmap, vm_offse pv_entry_t pv; rw_assert(&pvh_global_lock, RA_LOCKED); - if ((pv = get_pv_entry(pmap, TRUE)) != NULL) { + PMAP_LOCK_ASSERT(pmap, MA_OWNED); + /* Pass NULL instead of the lock pointer to disable reclamation. */ + if ((pv = get_pv_entry(pmap, NULL)) != NULL) { pv->pv_va = va; CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa); pvh = pa_to_pvh(pa); @@ -3513,7 +3530,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva, ("pmap_enter: managed mapping within the clean submap")); if (pv == NULL) - pv = get_pv_entry(pmap, FALSE); + pv = get_pv_entry(pmap, &lock); CHANGE_PV_LIST_LOCK_TO_VM_PAGE(&lock, m); pv->pv_va = va; TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); @@ -3785,6 +3802,10 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ mpte = PHYS_TO_VM_PAGE(*ptepa & PG_FRAME); mpte->wire_count++; } else { + /* + * Pass NULL instead of the PV list lock + * pointer, because we don't intend to sleep. + */ mpte = _pmap_allocpte(pmap, ptepindex, NULL); if (mpte == NULL) return (mpte); Modified: projects/calloutng/sys/amd64/conf/GENERIC ============================================================================== --- projects/calloutng/sys/amd64/conf/GENERIC Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/amd64/conf/GENERIC Sun Jul 1 12:48:56 2012 (r237923) @@ -152,6 +152,7 @@ device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID +device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller # RAID controllers device aac # Adaptec FSA RAID @@ -162,7 +163,6 @@ device mlx # Mylex DAC960 family #XXX pointer/int warnings #device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID -device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller Modified: projects/calloutng/sys/amd64/include/cpufunc.h ============================================================================== --- projects/calloutng/sys/amd64/include/cpufunc.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/amd64/include/cpufunc.h Sun Jul 1 12:48:56 2012 (r237923) @@ -273,6 +273,15 @@ outw(u_int port, u_short data) __asm __volatile("outw %0, %w1" : : "a" (data), "Nd" (port)); } +static __inline u_long +popcntq(u_long mask) +{ + u_long result; + + __asm __volatile("popcntq %1,%0" : "=r" (result) : "rm" (mask)); + return (result); +} + static __inline void mfence(void) { Modified: projects/calloutng/sys/arm/at91/std.at91 ============================================================================== --- projects/calloutng/sys/arm/at91/std.at91 Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.at91 Sun Jul 1 12:48:56 2012 (r237923) @@ -1,6 +1,6 @@ # $FreeBSD$ -files "../at91/files.at91" +files "../at91/files.at91" cpu CPU_ARM9 makeoptions CONF_CFLAGS=-mcpu=arm9 options PHYSADDR=0x20000000 Modified: projects/calloutng/sys/arm/at91/std.at91sam9 ============================================================================== --- projects/calloutng/sys/arm/at91/std.at91sam9 Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.at91sam9 Sun Jul 1 12:48:56 2012 (r237923) @@ -1,13 +1,9 @@ # $FreeBSD$ -files "../at91/files.at91" +files "../at91/files.at91" cpu CPU_ARM9 makeoptions CONF_CFLAGS=-mcpu=arm9 options PHYSADDR=0x20000000 # bring in the sam specific timers and such device at91sam9 - -device at91sam9260 -device at91sam9g20 -device at91sam9x25 Copied: projects/calloutng/sys/arm/at91/std.atmel (from r237922, head/sys/arm/at91/std.atmel) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/calloutng/sys/arm/at91/std.atmel Sun Jul 1 12:48:56 2012 (r237923, copy of r237922, head/sys/arm/at91/std.atmel) @@ -0,0 +1,15 @@ +# $FreeBSD$ + +files "../at91/files.at91" +cpu CPU_ARM9 +makeoptions CONF_CFLAGS=-mcpu=arm9 +options PHYSADDR=0x20000000 + +# Supported SoCs for the at91 platform +device at91rm9200 +device at91sam9260 +device at91sam9g20 +device at91sam9x25 + +# bring in the sam specific timers and such +device at91sam9 Modified: projects/calloutng/sys/arm/at91/std.ethernut5 ============================================================================== --- projects/calloutng/sys/arm/at91/std.ethernut5 Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.ethernut5 Sun Jul 1 12:48:56 2012 (r237923) @@ -8,4 +8,4 @@ options KERNPHYSADDR=0x20000000 options KERNVIRTADDR=0xc0000000 device at91_board_ethernut5 -nodevice at91sam9g20 +device at91sam9260 Modified: projects/calloutng/sys/arm/at91/std.hl201 ============================================================================== --- projects/calloutng/sys/arm/at91/std.hl201 Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.hl201 Sun Jul 1 12:48:56 2012 (r237923) @@ -8,3 +8,4 @@ options KERNPHYSADDR=0x20000000 options KERNVIRTADDR=0xc0000000 device at91_board_hl201 +device at91sam9g20 Modified: projects/calloutng/sys/arm/at91/std.qila9g20 ============================================================================== --- projects/calloutng/sys/arm/at91/std.qila9g20 Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.qila9g20 Sun Jul 1 12:48:56 2012 (r237923) @@ -8,3 +8,4 @@ options KERNPHYSADDR=0x20000000 options KERNVIRTADDR=0xc0000000 device at91_board_qila9g20 +device at91sam9g20 Modified: projects/calloutng/sys/arm/at91/std.sam9g20ek ============================================================================== --- projects/calloutng/sys/arm/at91/std.sam9g20ek Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.sam9g20ek Sun Jul 1 12:48:56 2012 (r237923) @@ -8,3 +8,4 @@ options KERNPHYSADDR=0x20000000 options KERNVIRTADDR=0xc0000000 device at91_board_sam9g20ek +device at91sam9g20 Modified: projects/calloutng/sys/arm/at91/std.sam9x25ek ============================================================================== --- projects/calloutng/sys/arm/at91/std.sam9x25ek Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/arm/at91/std.sam9x25ek Sun Jul 1 12:48:56 2012 (r237923) @@ -8,5 +8,4 @@ options KERNPHYSADDR=0x20000000 options KERNVIRTADDR=0xc0000000 device at91_board_sam9x25ek -nodevice at91sam9g20 -nodevice at91sam9260 +device at91sam9x25 Copied: projects/calloutng/sys/arm/conf/ATMEL (from r237922, head/sys/arm/conf/ATMEL) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/calloutng/sys/arm/conf/ATMEL Sun Jul 1 12:48:56 2012 (r237923, copy of r237922, head/sys/arm/conf/ATMEL) @@ -0,0 +1,166 @@ +# Kernel configuration to test compile all the atmel bits with one +# configuration. This kernel will not (presently) boot. Do not copy +# it to create your own custom config file. +# +# $FreeBSD$ + +ident ATMEL + +include "../at91/std.atmel" + +# Arbitrary values for testing purposes. +options STARTUP_PAGETABLE_ADDR=0x20800000 +makeoptions KERNPHYSADDR=0x20000000 +makeoptions KERNVIRTADDR=0xc0000000 +options KERNPHYSADDR=0x20000000 +options KERNVIRTADDR=0xc0000000 + +makeoptions MODULES_OVERRIDE="" + +# list all boards here, but not just yet (no multiboard in mainline). +#device at91_board_bwct +#device at91_board_ethernut5 +#device at91_board_hl200 +#device at91_board_hl201 +#device at91_board_kb920x +#device at91_board_qila9g20 +device at91_board_sam9g20ek +#device at91_board_sam9x25ek +#device at91_board_tsc4370 + +#makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols + +options SCHED_4BSD # 4BSD scheduler +#options PREEMPTION # Enable kernel thread preemption +options INET # InterNETworking +options INET6 # IPv6 communications protocols +options SCTP # Stream Control Transmission Protocol +options FFS # Berkeley Fast Filesystem +options SOFTUPDATES # Enable FFS soft updates support +options UFS_ACL # Support for access control lists +options UFS_DIRHASH # Improve performance on big directories +options UFS_GJOURNAL # Enable gjournal-based UFS journaling +options MD_ROOT # MD is a potential root device +options NFSCL # New Network Filesystem Client +options NFSD # New Network Filesystem Server +options NFSLOCKD # Network Lock Manager +options NFS_ROOT # NFS usable as /, requires NFSCL +options MSDOSFS # MSDOS Filesystem +options CD9660 # ISO 9660 Filesystem +options PROCFS # Process filesystem (requires PSEUDOFS) +options PSEUDOFS # Pseudo-filesystem framework +options GEOM_PART_GPT # GUID Partition Tables. +options GEOM_LABEL # Provides labelization +options COMPAT_FREEBSD5 # Compatible with FreeBSD5 +options COMPAT_FREEBSD6 # Compatible with FreeBSD6 +options COMPAT_FREEBSD7 # Compatible with FreeBSD7 +options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI +options KTRACE # ktrace(1) support +options STACK # stack(9) support +options SYSVSHM # SYSV-style shared memory +options SYSVMSG # SYSV-style message queues +options SYSVSEM # SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions +options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. +#options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +#options AUDIT # Security event auditing +#options CAPABILITY_MODE # Capsicum capability mode +#options CAPABILITIES # Capsicum capabilities +#options MAC # TrustedBSD MAC Framework +#options INCLUDE_CONFIG_FILE # Include this file in kernel + +# required for netbooting +options BOOTP +options BOOTP_COMPAT +options BOOTP_NFSROOT +options BOOTP_NFSV3 +options BOOTP_WIRED_TO=ate0 + +# alternatively, boot from a MMC/SD memory card +#options ROOTDEVNAME=\"ufs:/dev/mmcsd0a\" + +# kernel/memory size reduction +options MUTEX_NOINLINE +options NO_FFS_SNAPSHOT +options NO_SWAPPING +options NO_SYSCTL_DESCR +options RWLOCK_NOINLINE + +# Debugging support. Always need this: +options KDB # Enable kernel debugger support. +# For minimum debugger support (stable branch) use: +options KDB_TRACE # Print a stack trace for a panic. +# For full debugger support use this instead: +options DDB # Support DDB. +options GDB # Support remote GDB. +#options DEADLKRES # Enable the deadlock resolver +#options INVARIANTS # Enable calls of extra sanity checking +#options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS +#options WITNESS # Enable checks to detect deadlocks and cycles +#options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed +#options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf # Berkeley packet filter + +# Ethernet +device mii # Minimal MII support +device ate # Atmel AT91 Ethernet friver + +# I2C +device at91_twi # Atmel AT91 Two-wire Interface +device iic # I2C generic I/O device driver +device iicbus # I2C bus system +device pcf8563 # NXP PCF8563 clock/calendar + +# MMC/SD +device at91_mci # Atmel AT91 Multimedia Card Interface +options AT91_MCI_HAS_4WIRE +device mmc # MMC/SD bus +device mmcsd # MMC/SD memory card + +# DataFlash +device at91_spi # Atmel AT91 Serial Peripheral Interface +device spibus # SPI bus +device at45d # Atmel AT45D +device geom_map # GEOM partition mapping + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +device ether # Ethernet support +device vlan # 802.1Q VLAN support +device tun # Packet tunnel. +device md # Memory "disks" +device gif # IPv6 and IPv4 tunneling +device faith # IPv6-to-IPv4 relaying (translation) +#device firmware # firmware assist module + +# SCSI peripherals +device scbus # SCSI bus (required for ATA/SCSI) +device ch # SCSI media changers +device da # Direct Access (disks) +device sa # Sequential Access (tape etc) +device cd # CD +device pass # Passthrough device (direct ATA/SCSI access) +device ses # Enclosure Services (SES and SAF-TE) +device ctl # CAM Target Layer + +# Serial (COM) ports +device uart # Multi-uart driver +options ALT_BREAK_TO_DEBUGGER + +# USB support +options USB_DEBUG # enable debug msgs +device ohci # OHCI PCI->USB interface +device usb # USB Bus (required) +device umass # Disks/Mass storage - Requires scbus and da + +# watchdog +device at91_wdt # Atmel AT91 Watchdog Timer + +device at91_rtc +device at91_ssc +#device at91_tc # missing? Modified: projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun Jul 1 12:48:56 2012 (r237923) @@ -157,7 +157,7 @@ dtrace_optval_t dtrace_dof_maxsize = (25 size_t dtrace_global_maxsize = (16 * 1024); size_t dtrace_actions_max = (16 * 1024); size_t dtrace_retain_max = 1024; -dtrace_optval_t dtrace_helper_actions_max = 32; +dtrace_optval_t dtrace_helper_actions_max = 128; dtrace_optval_t dtrace_helper_providers_max = 32; dtrace_optval_t dtrace_dstate_defsize = (1 * 1024 * 1024); size_t dtrace_strsize_default = 256; Modified: projects/calloutng/sys/dev/ath/ah_osdep.c ============================================================================== --- projects/calloutng/sys/dev/ath/ah_osdep.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/ath/ah_osdep.c Sun Jul 1 12:48:56 2012 (r237923) @@ -47,6 +47,7 @@ #include <net/ethernet.h> /* XXX for ether_sprintf */ #include <dev/ath/ath_hal/ah.h> +#include <dev/ath/ath_hal/ah_debug.h> /* * WiSoC boards overload the bus tag with information about the @@ -137,8 +138,6 @@ ath_hal_ether_sprintf(const u_int8_t *ma #ifdef AH_DEBUG -/* This must match the definition in ath_hal/ah_debug.h */ -#define HAL_DEBUG_UNMASKABLE 0xf0000000 void DO_HALDEBUG(struct ath_hal *ah, u_int mask, const char* fmt, ...) { Modified: projects/calloutng/sys/dev/ath/ah_osdep.h ============================================================================== --- projects/calloutng/sys/dev/ath/ah_osdep.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/ath/ah_osdep.h Sun Jul 1 12:48:56 2012 (r237923) @@ -63,6 +63,7 @@ typedef bus_space_handle_t HAL_BUS_HANDL #define OS_INLINE __inline #define OS_MEMZERO(_a, _n) bzero((_a), (_n)) #define OS_MEMCPY(_d, _s, _n) memcpy(_d,_s,_n) +#define OS_MEMCMP(_a, _b, _l) memcmp((_a), (_b), (_l)) #define abs(_a) __builtin_abs(_a) Modified: projects/calloutng/sys/dev/ath/ath_hal/ah.h ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ah.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/ath/ath_hal/ah.h Sun Jul 1 12:48:56 2012 (r237923) @@ -73,6 +73,7 @@ typedef enum { HAL_EINPROGRESS = 15, /* Operation incomplete */ HAL_EEBADREG = 16, /* EEPROM invalid regulatory contents */ HAL_EEBADCC = 17, /* EEPROM invalid country code */ + HAL_INV_PMODE = 18, /* Couldn't bring out of sleep state */ } HAL_STATUS; typedef enum { @@ -180,10 +181,19 @@ typedef enum { HAL_TX_QUEUE_CAB = 3, /* "crap after beacon" xmit q */ HAL_TX_QUEUE_UAPSD = 4, /* u-apsd power save xmit q */ HAL_TX_QUEUE_PSPOLL = 5, /* power save poll xmit q */ + HAL_TX_QUEUE_CFEND = 6, + HAL_TX_QUEUE_PAPRD = 7, } HAL_TX_QUEUE; #define HAL_NUM_TX_QUEUES 10 /* max possible # of queues */ +typedef enum { + HAL_RX_QUEUE_HP = 0, /* high priority recv queue */ + HAL_RX_QUEUE_LP = 0, /* low priority recv queue */ +} HAL_RX_QUEUE; + +#define HAL_NUM_RX_QUEUES 2 /* max possible # of queues */ + /* * Transmit queue subtype. These map directly to * WME Access Categories (except for UPSD). Refer @@ -592,7 +602,7 @@ typedef enum { typedef struct { uint8_t kv_type; /* one of HAL_CIPHER */ - uint8_t kv_pad; + uint8_t kv_apsd; /* Mask for APSD enabled ACs */ uint16_t kv_len; /* length in bits */ uint8_t kv_val[16]; /* enough for 128-bit keys */ uint8_t kv_mic[8]; /* TKIP MIC key */ @@ -721,6 +731,7 @@ typedef enum { HAL_ANI_SPUR_IMMUNITY_LEVEL = 5, /* set level */ HAL_ANI_MODE = 6, /* 0 => manual, 1 => auto (XXX do not change) */ HAL_ANI_PHYERR_RESET = 7, /* reset phy error stats */ + HAL_ANI_MRC_CCK = 8, } HAL_ANI_CMD; /* @@ -738,6 +749,7 @@ typedef enum { HAL_CAP_INTMIT_SPUR_IMMUNITY_LEVEL = 6 } HAL_CAP_INTMIT_CMD; +/* DFS defines */ typedef struct { int32_t pe_firpwr; /* FIR pwr out threshold */ int32_t pe_rrssi; /* Radar rssi thresh */ Modified: projects/calloutng/sys/dev/ath/ath_hal/ah_debug.h ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ah_debug.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/ath/ath_hal/ah_debug.h Sun Jul 1 12:48:56 2012 (r237923) @@ -48,7 +48,7 @@ enum { HAL_DEBUG_DFS = 0x00200000, /* DFS debugging */ HAL_DEBUG_HANG = 0x00400000, /* BB/MAC hang debugging */ - HAL_DEBUG_UNMASKABLE = 0xf0000000, /* always printed */ + HAL_DEBUG_UNMASKABLE = 0x80000000, /* always printed */ HAL_DEBUG_ANY = 0xffffffff }; #endif /* _ATH_AH_DEBUG_H_ */ Modified: projects/calloutng/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ah_internal.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/ath/ath_hal/ah_internal.h Sun Jul 1 12:48:56 2012 (r237923) @@ -212,10 +212,24 @@ typedef struct { halBssidMatchSupport : 1, hal4kbSplitTransSupport : 1, halHasRxSelfLinkedTail : 1, - halSupportsFastClock5GHz : 1, /* Hardware supports 5ghz fast clock; check eeprom/channel before using */ + halSupportsFastClock5GHz : 1, halHasLongRxDescTsf : 1, halHasBBReadWar : 1, - halSerialiseRegWar : 1; + halSerialiseRegWar : 1, + halMciSupport : 1, + halRxTxAbortSupport : 1, + halPaprdEnabled : 1, + halHasUapsdSupport : 1, + halWpsPushButtonSupport : 1, + halBtCoexApsmWar : 1, + halGenTimerSupport : 1, + halLDPCSupport : 1, + halHwBeaconProcSupport : 1, + halEnhancedDmaSupport : 1; + uint32_t halIsrRacSupport : 1, + halApmEnable : 1, + halIntrMitigation : 1; + uint32_t halWirelessModes; uint16_t halTotalQueues; uint16_t halKeyCacheSize; @@ -231,6 +245,13 @@ typedef struct { uint32_t halIntrMask; uint8_t halTxStreams; uint8_t halRxStreams; + + int halNumTxMaps; + int halTxDescLen; + int halTxStatusLen; + int halRxStatusLen; + int halRxHpFifoDepth; + int halRxLpFifoDepth; } HAL_CAPABILITIES; struct regDomain; @@ -628,6 +649,46 @@ extern HAL_BOOL ath_hal_setcapability(st /* The diagnostic codes used to be internally defined here -adrian */ #include "ah_diagcodes.h" +/* + * The AR5416 and later HALs have MAC and baseband hang checking. + */ +typedef struct { + uint32_t hang_reg_offset; + uint32_t hang_val; + uint32_t hang_mask; + uint32_t hang_offset; +} hal_hw_hang_check_t; + +typedef struct { + uint32_t dma_dbg_3; + uint32_t dma_dbg_4; + uint32_t dma_dbg_5; + uint32_t dma_dbg_6; +} mac_dbg_regs_t; + +typedef enum { + dcu_chain_state = 0x1, + dcu_complete_state = 0x2, + qcu_state = 0x4, + qcu_fsp_ok = 0x8, + qcu_fsp_state = 0x10, + qcu_stitch_state = 0x20, + qcu_fetch_state = 0x40, + qcu_complete_state = 0x80 +} hal_mac_hangs_t; + +typedef struct { + int states; + uint8_t dcu_chain_state; + uint8_t dcu_complete_state; + uint8_t qcu_state; + uint8_t qcu_fsp_ok; + uint8_t qcu_fsp_state; + uint8_t qcu_stitch_state; + uint8_t qcu_fetch_state; + uint8_t qcu_complete_state; +} hal_mac_hang_check_t; + enum { HAL_BB_HANG_DFS = 0x0001, HAL_BB_HANG_RIFS = 0x0002, Modified: projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Sun Jul 1 12:48:56 2012 (r237923) @@ -493,36 +493,6 @@ ar5416GetDiagState(struct ath_hal *ah, i args, argsize, result, resultsize); } -typedef struct { - uint32_t dma_dbg_3; - uint32_t dma_dbg_4; - uint32_t dma_dbg_5; - uint32_t dma_dbg_6; -} mac_dbg_regs_t; - -typedef enum { - dcu_chain_state = 0x1, - dcu_complete_state = 0x2, - qcu_state = 0x4, - qcu_fsp_ok = 0x8, - qcu_fsp_state = 0x10, - qcu_stitch_state = 0x20, - qcu_fetch_state = 0x40, - qcu_complete_state = 0x80 -} hal_mac_hangs_t; - -typedef struct { - int states; - uint8_t dcu_chain_state; - uint8_t dcu_complete_state; - uint8_t qcu_state; - uint8_t qcu_fsp_ok; - uint8_t qcu_fsp_state; - uint8_t qcu_stitch_state; - uint8_t qcu_fetch_state; - uint8_t qcu_complete_state; -} hal_mac_hang_check_t; - HAL_BOOL ar5416SetRifsDelay(struct ath_hal *ah, const struct ieee80211_channel *chan, HAL_BOOL enable) Modified: projects/calloutng/sys/dev/cxgb/cxgb_adapter.h ============================================================================== --- projects/calloutng/sys/dev/cxgb/cxgb_adapter.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/cxgb/cxgb_adapter.h Sun Jul 1 12:48:56 2012 (r237923) @@ -265,15 +265,6 @@ struct sge_txq { struct sg_ent txq_sgl[TX_MAX_SEGS / 2 + 1]; }; - -enum { - SGE_PSTAT_TSO, /* # of TSO requests */ - SGE_PSTAT_RX_CSUM_GOOD, /* # of successful RX csum offloads */ - SGE_PSTAT_TX_CSUM, /* # of TX checksum offloads */ - SGE_PSTAT_VLANEX, /* # of VLAN tag extractions */ - SGE_PSTAT_VLANINS, /* # of VLAN tag insertions */ -}; - #define SGE_PSTAT_MAX (SGE_PSTAT_VLANINS+1) #define QS_EXITING 0x1 @@ -288,7 +279,6 @@ struct sge_qset { struct lro_state lro; struct sge_txq txq[SGE_TXQ_PER_SET]; uint32_t txq_stopped; /* which Tx queues are stopped */ - uint64_t port_stats[SGE_PSTAT_MAX]; struct port_info *port; struct adapter *adap; int idx; /* qset # */ @@ -538,7 +528,7 @@ int t3_sge_reset_adapter(adapter_t *); int t3_sge_init_port(struct port_info *); void t3_free_tx_desc(struct sge_qset *qs, int n, int qid); -void t3_rx_eth(struct adapter *adap, struct sge_rspq *rq, struct mbuf *m, int ethpad); +void t3_rx_eth(struct adapter *adap, struct mbuf *m, int ethpad); void t3_add_attach_sysctls(adapter_t *sc); void t3_add_configured_sysctls(adapter_t *sc); Modified: projects/calloutng/sys/dev/cxgb/cxgb_main.c ============================================================================== --- projects/calloutng/sys/dev/cxgb/cxgb_main.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/cxgb/cxgb_main.c Sun Jul 1 12:48:56 2012 (r237923) @@ -986,7 +986,7 @@ cxgb_makedev(struct port_info *pi) #define CXGB_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \ IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \ - IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE) + IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWCSUM_IPV6) #define CXGB_CAP_ENABLE CXGB_CAP static int @@ -1027,7 +1027,8 @@ cxgb_port_attach(device_t dev) ifp->if_capabilities |= IFCAP_TOE4; #endif ifp->if_capenable = CXGB_CAP_ENABLE; - ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO; + ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO | + CSUM_UDP_IPV6 | CSUM_TCP_IPV6; /* * Disable TSO on 4-port - it isn't supported by the firmware. @@ -1950,31 +1951,52 @@ fail: ifp->if_capenable ^= IFCAP_TXCSUM; ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); - if (IFCAP_TSO & ifp->if_capenable && + if (IFCAP_TSO4 & ifp->if_capenable && !(IFCAP_TXCSUM & ifp->if_capenable)) { - ifp->if_capenable &= ~IFCAP_TSO; - ifp->if_hwassist &= ~CSUM_TSO; + ifp->if_capenable &= ~IFCAP_TSO4; if_printf(ifp, - "tso disabled due to -txcsum.\n"); + "tso4 disabled due to -txcsum.\n"); + } + } + if (mask & IFCAP_TXCSUM_IPV6) { + ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; + ifp->if_hwassist ^= (CSUM_UDP_IPV6 | CSUM_TCP_IPV6); + + if (IFCAP_TSO6 & ifp->if_capenable && + !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { + ifp->if_capenable &= ~IFCAP_TSO6; + if_printf(ifp, + "tso6 disabled due to -txcsum6.\n"); } } if (mask & IFCAP_RXCSUM) ifp->if_capenable ^= IFCAP_RXCSUM; - if (mask & IFCAP_TSO) { - ifp->if_capenable ^= IFCAP_TSO; + if (mask & IFCAP_RXCSUM_IPV6) + ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; - if (IFCAP_TSO & ifp->if_capenable) { - if (IFCAP_TXCSUM & ifp->if_capenable) - ifp->if_hwassist |= CSUM_TSO; - else { - ifp->if_capenable &= ~IFCAP_TSO; - ifp->if_hwassist &= ~CSUM_TSO; - if_printf(ifp, - "enable txcsum first.\n"); - error = EAGAIN; - } - } else - ifp->if_hwassist &= ~CSUM_TSO; + /* + * Note that we leave CSUM_TSO alone (it is always set). The + * kernel takes both IFCAP_TSOx and CSUM_TSO into account before + * sending a TSO request our way, so it's sufficient to toggle + * IFCAP_TSOx only. + */ + if (mask & IFCAP_TSO4) { + if (!(IFCAP_TSO4 & ifp->if_capenable) && + !(IFCAP_TXCSUM & ifp->if_capenable)) { + if_printf(ifp, "enable txcsum first.\n"); + error = EAGAIN; + goto fail; + } + ifp->if_capenable ^= IFCAP_TSO4; + } + if (mask & IFCAP_TSO6) { + if (!(IFCAP_TSO6 & ifp->if_capenable) && + !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { + if_printf(ifp, "enable txcsum6 first.\n"); + error = EAGAIN; + goto fail; + } + ifp->if_capenable ^= IFCAP_TSO6; } if (mask & IFCAP_LRO) { ifp->if_capenable ^= IFCAP_LRO; Modified: projects/calloutng/sys/dev/cxgb/cxgb_sge.c ============================================================================== --- projects/calloutng/sys/dev/cxgb/cxgb_sge.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/cxgb/cxgb_sge.c Sun Jul 1 12:48:56 2012 (r237923) @@ -1432,7 +1432,8 @@ t3_encap(struct sge_qset *qs, struct mbu cntrl |= V_TXPKT_OPCODE(CPL_TX_PKT); if (__predict_false(!(cflags & CSUM_IP))) cntrl |= F_TXPKT_IPCSUM_DIS; - if (__predict_false(!(cflags & (CSUM_TCP | CSUM_UDP)))) + if (__predict_false(!(cflags & (CSUM_TCP | CSUM_UDP | + CSUM_UDP_IPV6 | CSUM_TCP_IPV6)))) cntrl |= F_TXPKT_L4CSUM_DIS; hflit[0] = htonl(cntrl); @@ -1547,7 +1548,8 @@ t3_encap(struct sge_qset *qs, struct mbu cntrl |= V_TXPKT_OPCODE(CPL_TX_PKT); if (__predict_false(!(m0->m_pkthdr.csum_flags & CSUM_IP))) cntrl |= F_TXPKT_IPCSUM_DIS; - if (__predict_false(!(m0->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)))) + if (__predict_false(!(m0->m_pkthdr.csum_flags & (CSUM_TCP | + CSUM_UDP | CSUM_UDP_IPV6 | CSUM_TCP_IPV6)))) cntrl |= F_TXPKT_L4CSUM_DIS; cpl->cntrl = htonl(cntrl); cpl->len = htonl(mlen | 0x80000000); @@ -2620,20 +2622,12 @@ err: * will also be taken into account here. */ void -t3_rx_eth(struct adapter *adap, struct sge_rspq *rq, struct mbuf *m, int ethpad) +t3_rx_eth(struct adapter *adap, struct mbuf *m, int ethpad) { struct cpl_rx_pkt *cpl = (struct cpl_rx_pkt *)(mtod(m, uint8_t *) + ethpad); struct port_info *pi = &adap->port[adap->rxpkt_map[cpl->iff]]; struct ifnet *ifp = pi->ifp; - if ((ifp->if_capenable & IFCAP_RXCSUM) && !cpl->fragment && - cpl->csum_valid && cpl->csum == 0xffff) { - m->m_pkthdr.csum_flags = (CSUM_IP_CHECKED|CSUM_IP_VALID); - rspq_to_qset(rq)->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++; - m->m_pkthdr.csum_flags = (CSUM_IP_CHECKED|CSUM_IP_VALID|CSUM_DATA_VALID|CSUM_PSEUDO_HDR); - m->m_pkthdr.csum_data = 0xffff; - } - if (cpl->vlan_valid) { m->m_pkthdr.ether_vtag = ntohs(cpl->vlan); m->m_flags |= M_VLANTAG; @@ -2647,6 +2641,30 @@ t3_rx_eth(struct adapter *adap, struct s m->m_pkthdr.len -= (sizeof(*cpl) + ethpad); m->m_len -= (sizeof(*cpl) + ethpad); m->m_data += (sizeof(*cpl) + ethpad); + + if (!cpl->fragment && cpl->csum_valid && cpl->csum == 0xffff) { + struct ether_header *eh = mtod(m, void *); + uint16_t eh_type; + + if (eh->ether_type == htons(ETHERTYPE_VLAN)) { + struct ether_vlan_header *evh = mtod(m, void *); + + eh_type = evh->evl_proto; + } else + eh_type = eh->ether_type; + + if (ifp->if_capenable & IFCAP_RXCSUM && + eh_type == htons(ETHERTYPE_IP)) { + m->m_pkthdr.csum_flags = (CSUM_IP_CHECKED | + CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR); + m->m_pkthdr.csum_data = 0xffff; + } else if (ifp->if_capenable & IFCAP_RXCSUM_IPV6 && + eh_type == htons(ETHERTYPE_IPV6)) { + m->m_pkthdr.csum_flags = (CSUM_DATA_VALID_IPV6 | + CSUM_PSEUDO_HDR); + m->m_pkthdr.csum_data = 0xffff; + } + } } /** @@ -2913,7 +2931,7 @@ process_responses(adapter_t *adap, struc } else if (eth && eop) { struct mbuf *m = mh->mh_head; - t3_rx_eth(adap, rspq, m, ethpad); + t3_rx_eth(adap, m, ethpad); /* * The T304 sends incoming packets on any qset. If LRO Modified: projects/calloutng/sys/dev/cxgbe/adapter.h ============================================================================== --- projects/calloutng/sys/dev/cxgbe/adapter.h Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/cxgbe/adapter.h Sun Jul 1 12:48:56 2012 (r237923) @@ -392,7 +392,7 @@ struct sge_txq { /* stats for common events first */ uint64_t txcsum; /* # of times hardware assisted with checksum */ - uint64_t tso_wrs; /* # of IPv4 TSO work requests */ + uint64_t tso_wrs; /* # of TSO work requests */ uint64_t vlan_insertion;/* # of times VLAN tag was inserted */ uint64_t imm_wrs; /* # of work requests with immediate data */ uint64_t sgl_wrs; /* # of work requests with direct SGL */ @@ -412,7 +412,7 @@ struct sge_rxq { struct sge_fl fl; /* MUST follow iq */ struct ifnet *ifp; /* the interface this rxq belongs to */ -#ifdef INET +#if defined(INET) || defined(INET6) struct lro_ctrl lro; /* LRO state */ #endif Modified: projects/calloutng/sys/dev/cxgbe/t4_l2t.c ============================================================================== --- projects/calloutng/sys/dev/cxgbe/t4_l2t.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/cxgbe/t4_l2t.c Sun Jul 1 12:48:56 2012 (r237923) @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" +#include "opt_inet6.h" #include <sys/param.h> #include <sys/systm.h> Modified: projects/calloutng/sys/dev/cxgbe/t4_main.c ============================================================================== --- projects/calloutng/sys/dev/cxgbe/t4_main.c Sun Jul 1 12:44:29 2012 (r237922) +++ projects/calloutng/sys/dev/cxgbe/t4_main.c Sun Jul 1 12:48:56 2012 (r237923) @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" +#include "opt_inet6.h" #include <sys/param.h> #include <sys/conf.h> @@ -822,8 +823,8 @@ cxgbe_probe(device_t dev) #define T4_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \ IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \ - IFCAP_VLAN_HWTSO | IFCAP_HWCSUM_IPV6) -#define T4_CAP_ENABLE (T4_CAP & ~IFCAP_TSO6) + IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWCSUM_IPV6) +#define T4_CAP_ENABLE (T4_CAP) static int cxgbe_attach(device_t dev) @@ -1027,11 +1028,11 @@ fail: ifp->if_capenable ^= IFCAP_TXCSUM; ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); - if (IFCAP_TSO & ifp->if_capenable && + if (IFCAP_TSO4 & ifp->if_capenable && !(IFCAP_TXCSUM & ifp->if_capenable)) { ifp->if_capenable &= ~IFCAP_TSO4; if_printf(ifp, - "tso disabled due to -txcsum.\n"); + "tso4 disabled due to -txcsum.\n"); } } if (mask & IFCAP_TXCSUM_IPV6) { @@ -1075,7 +1076,7 @@ fail: ifp->if_capenable ^= IFCAP_TSO6; } if (mask & IFCAP_LRO) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207011248.q61CmuAg002711>