marius [Sun, 15 May 2011 12:58:29 +0000 (12:58 +0000)]
- Add 10baseT as an alias for 10baseT/UTP.
- Add shorthand aliases for common media+option combinations as announced
by miibus(4) so that one can actually supply the media strings found in
the dmesg output to ifconfig(8).
Obtained from: NetBSD (in principle)
MFC after: 2 weeks
marius [Sun, 15 May 2011 12:51:00 +0000 (12:51 +0000)]
When setting media always and not just in case of switching to IFM_AUTO
clear the options of the current media, i.e. only inherit the instance,
which matches what NetBSD does. Without this it's really non-intuitive
that the following sequence:
ifconfig bge0 media 1000baseT mediaopt full-duplex
ifconfig bge0 media 100baseTX
results in 100baseTX full-duplex to be set or that:
ifconfig bge0 media autoselect mediaopt flowcontrol
ifconfig bge0 media 1000baseT mediaopt full-duplex
tries to set 1000baseT full-duplex with flowcontrol, which isn't suported
und thus fails while the following:
ifconfig re0 media 1000baseT mediaopt flowcontrol,full-duplex
ifconfig re0 media autoselect
just switches to autoselection without flowcontrol.
bschmidt [Sun, 15 May 2011 08:09:36 +0000 (08:09 +0000)]
Only update the scheduler's byte count table for aggregation queues.
The other queues, especially the command queue, uses the FIFO mode
which doesn't require the byte count table because queued entries are
processed in order.
Pointed out by: Lucius Windschuh <lwindschuh at googlemail dot com>
adrian [Sun, 15 May 2011 07:59:33 +0000 (07:59 +0000)]
Fix NF calibration breakage introduced by me in a past commit.
Since the returned NF will be -ve, checking for <= 0 is not good
enough. For now, check whether it equals 0 or -1; a future commit
will tidy this mess up and have it return HAL_BOOL instead.
marius [Sat, 14 May 2011 23:20:14 +0000 (23:20 +0000)]
Fix yet another inversion in the logic by applying the x86 version of this,
which avoids CPU_EMPTY() in the first place.
Do I get a beer or something for every inversion I find?
tuexen [Sat, 14 May 2011 18:22:14 +0000 (18:22 +0000)]
Fix the source address selection for boundall sockets
when sending INITs to a global IPv4 address having
only private IPv4 address.
Allow the usage of a private address and make sure
that no other private address will be used by the
association.
Initial work was done by rrs@.
pjd [Sat, 14 May 2011 17:02:03 +0000 (17:02 +0000)]
Currently we are unable to use capsicum for the primary worker process,
because we need to do ioctl(2)s, which are not permitted in the capability
mode. What we do now is to chroot(2) to /var/empty, which restricts access
to file system name space and we drop privileges to hast user and hast
group.
This still allows to access to other name spaces, like list of processes,
network and sysvipc.
To address that, use jail(2) instead of chroot(2). Using jail(2) will restrict
access to process table, network (we use ip-less jails) and sysvipc (if
security.jail.sysvipc_allowed is turned off). This provides much better
separation.
marcel [Sat, 14 May 2011 14:55:15 +0000 (14:55 +0000)]
Prefer switching the memory stack from user to kernel *before* switching
the register stack. While the ordering doesn't matter, it creates an
invariant not previously there: the memory stack pointer will always be
larger than the register stack pointer. With this invariant in place,
it's easier to add instrumentation code that detects a stack overflow
because in such a scenario the memory stack pointer and register stack
pointers have crossed each other.
Aside: basic kernel operation needs about half the stack size (~16K)
at most. We have plenty of head room on the kernel stack...
marcel [Sat, 14 May 2011 14:47:19 +0000 (14:47 +0000)]
Sharpening the saw:
o Clobber the register that holds the restart token immediately after
crossing the restart point. This prevents false positives (i.e. a
nested exception that we don't know can happen and that is being
treated as one we know by virtue of a lingering restart token).
o Now that the bootstrap kernel stack is free, switch onto it and call
trap() for nested traps that we don't know about. In trap we panic()
so that we can analyze the condition.
adrian [Sat, 14 May 2011 14:25:15 +0000 (14:25 +0000)]
Import initial EEPROM code for Kite (AR9287).
I've tested this locally and it does indeed read and attach to an AR9287
EEPROM. But a lot more code needs to be ported over to the HAL before
the AR9287 is functional.
I'm importing this separate from the rest of the codebase (and unlinked from
the build for now) in case someone wishes to begin fiddling with porting
the rest of the code over from Linux ath9k.
jilles [Sat, 14 May 2011 12:22:58 +0000 (12:22 +0000)]
network.subr: Use printf(1) builtin for hexprint function.
Now that printf(1) is a shell builtin, there is no need to emulate it
anymore. The external printf(1) is /usr/bin/printf and therefore may not be
available in early boot.
It may be faster to use printf directly but the function is useful for
compatibility.
brucec [Sat, 14 May 2011 11:26:00 +0000 (11:26 +0000)]
gcc and clang semantics imply certain -mno-* flags when other certain -mno-*
flags are also specified. This change makes use of this behaviour and removes
unneeded -mno-* flags.
Note that clang does not yet enable AVX support for any CPU. However at some
point in the future it will and since we definitely want to disable it for the
kernel, we might as well add the -mno-avx flag now.
adrian [Sat, 14 May 2011 04:17:16 +0000 (04:17 +0000)]
Major fix: when doing open-loop TX power calibration, adjust
the correct CCK rates rather than adjusting the first handful.
This may have affected some AR9280 based NICs.
sobomax [Sat, 14 May 2011 03:00:55 +0000 (03:00 +0000)]
Add new modifier - "R", when it is specified the path to pid file
will be considered as a path to a binary or a shell script to be executed
after rotation has been completed instead of sending signal to the process
id in that file.
Sponsored by: Sippy Software, Inc.
From the: FreeBSD hacking lounge at BSDCan
attilio [Fri, 13 May 2011 19:56:58 +0000 (19:56 +0000)]
Fix a brain-o in platform_cpu_mask() by just specifying a possible
cpuset_t to be copied, rather than return the array.
I can't rely anymore on this being a simple int/long object.
mdf [Fri, 13 May 2011 19:35:01 +0000 (19:35 +0000)]
Move the ZERO_REGION_SIZE to a machine-dependent file, as on many
architectures (i386, for example) the virtual memory space may be
constrained enough that 2MB is a large chunk. Use 64K for arches
other than amd64 and ia64, with special handling for sparc64 due to
differing hardware.
Also commit the comment changes to kmem_init_zero_region() that I
missed due to not saving the file. (Darn the unfamiliar development
environment).
Arch maintainers, please feel free to adjust ZERO_REGION_SIZE as you
see fit.
mdf [Fri, 13 May 2011 18:48:00 +0000 (18:48 +0000)]
Usa a globally visible region of zeros for both /dev/zero and the md
device. There are likely other kernel uses of "blob of zeros" than can
be converted.
cognet [Fri, 13 May 2011 15:54:12 +0000 (15:54 +0000)]
In pmap_change_wiring(), use the right argument for pmap_modify_pv().
It only worked because the only consumer calls pmap_change_wiring() to remove
the wiring.
mdf [Fri, 13 May 2011 15:49:23 +0000 (15:49 +0000)]
Note that the _SWAP operation is supported for all list/queue types.
Also place STAILQ_REMOVE_HEAD in alphabetical order. Lastly, document
the _SWAP macros.
marius [Fri, 13 May 2011 15:21:31 +0000 (15:21 +0000)]
When setting up pc_other_cpus for APs based on pc_allcpu clear pc_cpuid
in the former rather than the latter.
This gets this branch working on at least Jalapeno-class CPUs.
attilio [Fri, 13 May 2011 15:09:35 +0000 (15:09 +0000)]
After rewriting powerpc atomic we decided to commit at the constraint
that for _ptr operations, when not used directly with uintptr_t, we
needed to manually cast.
Use the cast on the _ptr version, where it actually wasn't (please note
that i386 doesn't get it right, while amd64 doesn't seem to compile
cfi neither in LINT, that is why it doesn't fail).
mav [Fri, 13 May 2011 12:39:37 +0000 (12:39 +0000)]
Refactor Xen PV code to use new event timers subsystem. That uses one-shot
Xen timer and time counter to provide one-shot and periodic time events.
On my tests this reduces idle interruts rate down to about 30Hz, and accor-
ding to Xen VM Manager reduces host CPU load by three times comparing to
the previous periodic 100Hz clock. Also now, when needed, it is possible to
increase HZ rate without useless CPU burning during idle periods.
Now only ia64 and some ARMs left not migrated to the new event timers.
adrian [Fri, 13 May 2011 09:57:12 +0000 (09:57 +0000)]
Some diversity changes relating to AR9285.
* grab the main, alt and selected LNA config
* add some optional / disabled logging code
* add a check to reject packets with an invalid main rssi too,
in case the alt is the active receive chain and main is -ve.
Note: The software-controlled combined diversity code is still disabled.
mdf [Fri, 13 May 2011 05:27:58 +0000 (05:27 +0000)]
Use a name instead of a magic number for kern_yield(9) when the priority
should not change. Fetch the td_user_pri under the thread lock. This
is probably not necessary but a magic number also seems preferable to
knowing the implementation details here.
Requested by: Jason Behmer < jason DOT behmer AT isilon DOT com >
davidch [Thu, 12 May 2011 23:26:53 +0000 (23:26 +0000)]
- Use bus_describe_intr() to describe interrupt usage.
- Use bus_bind_intr() to bind interrupt to a CPU when RSS/TSS is used.
- Use M_DONTWAIT for RSS/TSS buffer allocation.
- Add statistic to track max DRBR queue depth.
- Fix problem in bxe_change_mtu() which referenced the old MTU size
in a debug print statement.
nwhitehorn [Thu, 12 May 2011 22:31:13 +0000 (22:31 +0000)]
Fix pSeries/PAPR boot CD construction after actual testing. It seems that
IBM SLOF is (a) case-sensitive and (b) accepts only booting files in
certain subdirectories of the CD.
stas [Thu, 12 May 2011 22:21:39 +0000 (22:21 +0000)]
- Don't try to build NWFS support module if NCP/IPX is disabled in the build.
- Rename ZFS definition to LIBPROCSTAT_ZFS to be consistent with NWFS and to
prevent possible collisions.
yongari [Thu, 12 May 2011 17:15:57 +0000 (17:15 +0000)]
Add initial BCM5719 support. TSO and jumbo frame was intentionally
disabled for BCM5719 A0 revision due to known hardware errata.
Many thanks to Broadcom for continuing support of FreeBSD.
yongari [Thu, 12 May 2011 17:11:31 +0000 (17:11 +0000)]
Explicitly clear 1000baseT control register for F1 PHY used in
AR8132 FastEthernet controller. The PHY has no ability to
establish a gigabit link. Previously only link parters which
support down-shifting was able to establish link.
This change should fix a long standing link establishment issue of
AR8132.
nwhitehorn [Thu, 12 May 2011 15:03:17 +0000 (15:03 +0000)]
Add (somewhat speculative) bootable CD support for PAPR/pSeries-type
systems. In principle, FreeBSD should run on at least some of these
already, and support for the remainder will hopefully show up eventually,
so add this while I'm thinking about it.
stas [Thu, 12 May 2011 10:11:39 +0000 (10:11 +0000)]
- Commit work from libprocstat project. These patches add support for runtime
file and processes information retrieval from the running kernel via sysctl
in the form of new library, libprocstat. The library also supports KVM backend
for analyzing memory crash dumps. Both procstat(1) and fstat(1) utilities have
been modified to take advantage of the library (as the bonus point the fstat(1)
utility no longer need superuser privileges to operate), and the procstat(1)
utility is now able to display information from memory dumps as well.
The newly introduced fuser(1) utility also uses this library and able to operate
via sysctl and kvm backends.
The library is by no means complete (e.g. KVM backend is missing vnode name
resolution routines, and there're no manpages for the library itself) so I
plan to improve it further. I'm commiting it so it will get wider exposure
and review.
We won't be able to MFC this work as it relies on changes in HEAD, which
was introduced some time ago, that break kernel ABI. OTOH we may be able
to merge the library with KVM backend if we really need it there.