loos [Tue, 12 Nov 2013 12:44:59 +0000 (12:44 +0000)]
Adds gpioiic.4 and gpioled.4 man pages. Moves some of the information that
was previously available on gpio.4 to their respectives pages. Add the
cross references on gpioctl.8.
adrian [Tue, 12 Nov 2013 05:49:01 +0000 (05:49 +0000)]
Fix up the link quality lookup and re-enable multi-rate retry.
This is a terrible solution that at least behaves mostly correctly.
It walks the currently active rate table looking for rates to match.
It assumes that the code matches the setup path in the link quality
setup code (much like the previous, much simpler but even more hackish
math did.)
It's O(n), but n<15, so we're okay for the time being.
nwhitehorn [Mon, 11 Nov 2013 23:37:16 +0000 (23:37 +0000)]
Use the same implementation of copyinout.c for both AIM and Book-E. This
fixes some bugs in both implementations related to validity checks on
mapping bounds.
dim [Mon, 11 Nov 2013 21:16:55 +0000 (21:16 +0000)]
Disable building the ctl module for the i386 XEN kernel configuration
for now, since it causes gcc warnings about casting 64 bit bus_addr_t's
to 32 bit pointers, and vice versa.
nwhitehorn [Mon, 11 Nov 2013 17:37:50 +0000 (17:37 +0000)]
Follow up r223485, which made AIM use the ABI thread pointer instead of
PCPU fields for curthread, by doing the same to Book-E. This closes
some potential races switching between CPUs. As a side effect, it turns out
the AIM and Book-E swtch.S implementations were the same to within a few
registers, so move that to powerpc/powerpc.
markj [Mon, 11 Nov 2013 16:57:57 +0000 (16:57 +0000)]
Consistently add the relocation offset only when the ELF type is not
ET_EXEC. This fixes several problems with the DTrace pid provider not
being able to match probes.
nwhitehorn [Mon, 11 Nov 2013 16:14:25 +0000 (16:14 +0000)]
Rename the "bare" platform "mpc85xx", which is what it actually is, and
add actual platform probing based on PVR. Still needs a little more work:
in particular, the CCRS setup should move here.
Also turn "bare" into a truly bare platform that doesn't pretend to know how
to do anything except get the memory map. This should also be enhanced to
process the FDT reserved memory list, but that is for another day.
nwhitehorn [Mon, 11 Nov 2013 15:43:21 +0000 (15:43 +0000)]
Make tsec work with the device tree present on the RB800. The previous code
assumed that the MDIO bus was a direct child of the Ethernet interface. It
may not be and indeed on many device trees is not. While here, add proper
locking for MII transactions, which may be on a bus shared by several MACs.
nwhitehorn [Mon, 11 Nov 2013 15:23:35 +0000 (15:23 +0000)]
Allow OF_decode_addr() to also be able to map resources on big-endian
devices. To this end, make PCI device detection rely on the device_type
field rather than name, as per the standard.
nwhitehorn [Mon, 11 Nov 2013 15:00:33 +0000 (15:00 +0000)]
Consolidate Apple firmware hacks and improve them by switching on the
presence of mac-io devices in the tree, which uniquely identifies Apple
hardware.
ae [Mon, 11 Nov 2013 12:49:00 +0000 (12:49 +0000)]
Fix panic with RADIX_MPATH, when RTFREE_LOCKED() called for already
unlocked route. Use in6_rtalloc() instead of in6_rtalloc1. This helps
simplify the code and remove several now unused variables.
adrian [Mon, 11 Nov 2013 09:08:22 +0000 (09:08 +0000)]
If A-MPDU transmission fails entirely, then no BA is received from the
NIC and pushed up to the driver. Unfortunately this means there's
no rate control notification done. Thus, if the rate control code
makes a decision that hits a crappy rate that can't succeed, the
rate code would never lower the rate and packet loss would continue.
So, fake some rate control notification in this case.
adrian [Mon, 11 Nov 2013 08:53:20 +0000 (08:53 +0000)]
Send EAPOL frames at the management rate, not the data rate.
Without this, a far away station with low signal strength would
associate using the management rate (by default the lowest rate)
and then the EAPOL frames would go out at the current AMRR best
guess. This would result in association failing authentication.
dteske [Mon, 11 Nov 2013 02:13:47 +0000 (02:13 +0000)]
Check the partition scheme before blowing away disks, instead of after.
The effects of this patch would only be noticeable if you were purposefully
setting a bad value and trying to see what happens; and leaving the disks
intact if a bad value has been set seems fair.
gjb [Mon, 11 Nov 2013 01:42:59 +0000 (01:42 +0000)]
Unbreak the installer on head/:
When bsdinstall(8) sources the bsdconfig(8) common.subr file,
PKG_ABI is set by calling 'pkg -vv' and searching for the ABI
pkg(8) will use.
When pkg(8) is run for the first time, the bootstrap process
is run, which prompts for 'y/N' input from stdin if running with
TERM set.
Since TERM is set and it is the first time pkg(8) is run, which
happens automatically, bsdinstall(8) hangs waiting for user input
which is never displayed since a specific line is expected by
awk(1), and stdin is expected by pkg(8).
Set ASSUME_ALWAYS_YES=1, which will cause pkg(8) to assume the
'-y' flag is also used for the bootstrap process, allowing
bsdinstall(8) to proceed to the keymap lookup, otherwise
bsdinstall(8) appears to hang after selecting 'Install' from the
menu on first boot from CDROM.
mav [Sun, 10 Nov 2013 23:48:16 +0000 (23:48 +0000)]
Use relaxed (write-only) memory barriers when writing some of queue index
registers (for now on ISP2400+). We never read those registers back and
AFAIK their semantics does not require any immediate reaction on write.
mav [Sun, 10 Nov 2013 23:34:32 +0000 (23:34 +0000)]
Some more registers access optimizations:
- Process ATIO queue only if interrupt status tells so;
- Do not update queue out pointers after each processed command, do it
only once at the end of the loop.
bms [Sun, 10 Nov 2013 19:41:04 +0000 (19:41 +0000)]
Document the RB_FOREACH_FROM() and RB_FOREACH_REVERSE_FROM() macros.
These are largely syntactic sugar. However, they improve code
readability where an RB_FOREACH() or RB_FOREACH_REVERSE()
traversal has been interrupted and must be resumed. Performance
is improved by avoiding unnecessary traversal from the head node.
mav [Sun, 10 Nov 2013 13:37:44 +0000 (13:37 +0000)]
Save one more register read per command by not reading rqstoutrp register
every time. The purpose of that register is unlikely output queue overflow
detection, so read it only when its last known (and probably stale now)
value signals overflow.
This reduces CPU load and lock congestion and rises bottleneck in CTL
while doing target mode via two 8Gbps ports from 100K to 120K IOPS.
mav [Sun, 10 Nov 2013 12:16:09 +0000 (12:16 +0000)]
Some CAM locks polishing:
- Fix LOR and possible lock recursion when handling high-power commands.
Introduce new lock to protect left power quota and list of frozen devices.
- Correct locking around xpt periph creation.
- Remove seems never used XPT_FLAG_OPEN xpt periph flag.
rmacklem [Sat, 9 Nov 2013 21:24:56 +0000 (21:24 +0000)]
Fix an NFSv4.1 client specific case where a forced dismount would hang.
The hang occurred in nfsv4_setsequence() when it couldn't find an
available session slot and is fixed by checking for a forced dismount
in progress and just returning for this case.
kib [Sat, 9 Nov 2013 20:36:29 +0000 (20:36 +0000)]
If filesystem declares that it supports shared locking for writes, use
shared vnode lock for VOP_PUTPAGES() as well. The only such
filesystem in the tree is ZFS, and it uses
vnode_pager_generic_putpages(), which performs the pageout with
VOP_WRITE().
Reviewed by: alc
Discussed with: avg
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
kib [Sat, 9 Nov 2013 20:30:13 +0000 (20:30 +0000)]
Both vn_close() and VFS_PROLOGUE() evaluate vp->v_mount twice, without
holding the vnode lock; vp->v_mount is checked first for NULL
equiality, and then dereferenced if not NULL. If vnode is reclaimed
meantime, second dereference would still give NULL. Change
VFS_PROLOGUE() to evaluate the mp once, convert MNTK_SHARED_WRITES and
MNTK_EXTENDED_SHARED tests into inline functions.
Reviewed by: alc
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
adrian [Sat, 9 Nov 2013 07:30:13 +0000 (07:30 +0000)]
Fix AMRR to correctly select the initial rate.
There were two bugs:
* If the initial lowest rate didn't go through the loop at least once,
the AMRR rate index would be the highest rate in the table
(eg the rix mapping to MCS15) but rate would stay at the default
value, namely 0.
This meant that the initial rate selection would be MCS15 _but_ the
node ni_txrate value would be MCS0.
* If the node is 11n, then break out of the loop correctly. Beforehand,
my initial 11n AMRR commit would immediately exit out as it would
fail the 11n check, then it would always fall through to the non-11n
rate which would then see if it was < 36mbit (ie, "72"), which would
always match. Hence, it'd always return MCS15.
Tested:
* Intel Centrino 2230 STA (local changes), STA mode
* Intel Wifi 5100, STA
cperciva [Sat, 9 Nov 2013 04:50:05 +0000 (04:50 +0000)]
Fix typo in r256646: We want to generate lists of directories in INDEX-OLD
and INDEX-NEW and compare them, not generate the same list of directories
from INDEX-OLD twice...
Pointy hats to: cperciva & everybody who didn't proofread EN-13:04 enough