inpcb/in6pcb: Split port token

The original single local port space is devided into ncpus2 local port
space groups.  We denote local port space group as PG(N), N=[0, ncpus2).

Property of PG(N):
- PG(N) only contains local ports matching following condition:
  (host_order(port) & ncpus2_mask) == N
- PG(N) is protected by its own token.

On explicit local port bind(2) path and accept(2) path, PG(N) is selected
by using the local port already available (accept(2)) or supplied
(bind(2)):
    N = host_order(port) & ncpus2_mask

On implicit local port selection path (bind(2) and connect(2)), PG(N) is
selected and used in the following way:
    N = mycpuid;
    N1 = N;
again:
    if (find free port in PG(N)) {
        DONE;
    } else {
        N = (N + 1) & ncpus2_mask;
        if (N != N1)
            goto again;
        FAILED;
    }

PG(N) is now recorded in inpcb struct, so when inpcb is destroyed, we
know which port space group it should use.

On i7-3770 w/ Intel 82599ES, using tools/kq_connect_client:
Port token contention rate on each hyperthread is reduced from 120K/s to
40K/s.  Admittedly the contention rate is still high but it is much
better than before.

Now the major source of port token contention is the contention between
implicit local port select path and inpcb destroy path.  There may be a
way to choose local port which could hash the inpcb to the current CPU;
this needs more investigation.
kernel/drm: use devfs_*_cdevpriv functions

drm relied on a custom hack to implement those functions, this hack
has now been removed, and the devfs based functions are used.
bwn: Import from FreeBSD

* bwn depends on siba_bwn, importing that code as well

* Including the bwn.4 manpage, but not siba.4

* In FreeBSD the siba driver lives in a separate directory. Since we only
  need the siba_bwn part we just put it below sys/dev/netif/bwn.
bwn: Porting from FreeBSD

* Adding bwn and siba_bwn to sys/conf/files and to the X86_64_GENERIC kernel
  configuration.

* Replacing BWN_LOCK, BWN_UNLOCK, BWN_ASSERT_SERIALIZED with
  wlan_global_serializer.

* Increasing some alignments from 4K to 8K and some from 1 byte to 4 bytes.

* Changing slot counts for RX and TX from 64 to 256, which is the same size
  as used by b43 in Linux.

* Allow overriding the BWN_TXRING_SLOTS and BWN_RXRING_SLOTS values in the
  kernel configuration.

* Some style fixes. Removing unneeded NULL checks.

* Replace a DELAY(50000) with tsleep.

* Can't use kmalloc to allocate memory for dma like in FreeBSD and Linux.

* A few typo and grammar fixes in the bwn.4 manpage.
bwn: fixing performance problems and an RX buffer overflow problem

* Commenting a bwn_shm_write_2 call that destroys performance especially
  when sending.  This call is also commented in Linux's b43 driver.

* Handling Overflows of the RX buffer in bwn by just dropping all entries.
  With 256 slots in the RX buffer this overflow will almost never happen in
  practice.
run.4: D1 is an mdoc macro, so we have to escape it :)
bmake - Always pass the jobs pipe descriptor

* bmake currently requires a .MAKE target dependency to induce the passing
  of the jobs pipe descriptor to sub-jobs (aka sub-makes).  This requirement
  was lost due to a bug in bmake where it's F_SETFD fcntl was being run on
  the wrong descriptor.  This was recently fixed in bmake and exposed this
  new problem.

* bmake might be run with the MAKEFLAGS environment intact but not be passed
  the jobs descriptor.  While bmake creates a new fresh jobs descriptor in
  this case, it would remain an issue if some other parent program happened
  to use a pipe descriptor with the same fd number.

* bmake or intermediate build programs might not be run with a .MAKE target
  dependency, causing sub-bmakes to run an excessive number of concurrent
  jobs.

* The question is whether we can really safely require this new behavior
  or whether we should revert to the prior behavior.

  FreeBSD modified the default to be the prior behavior of always passing
  the jobs pipe descriptor and added a new .MAKE* directive to override it,
  but I don't see how this helps matters when the default really needs to be
  the always-pass behavior anyway.

  The only other solution is to use a filesystem-visible pipe (filesystem fifo
  in /tmp), which the old make used.  But this often results in a lot of cruft
  building up in /tmp from ^C's and/or system crashes.  This solution is the
  most compatible with expectations, frankly.

* For now revert to the prior behavior of always passing the jobs pipe
  descriptor.  This does a better job of guarenteeing that the descriptor
  number remains intact through multiple fork/execs.
kernel/run: Add missing unlock.
kernel/drm: Add a missing include

Include sys/devfs.h in drm_vm.h and correct the use of
devfs_get_cdevpriv.

Reported-By: Sascha Wildner <saw@online.de>
bwn.4: Comment out another bwi(4) reference.
hammer - Fix missing reltoken

* Fix a missing token release on hmp->fs_token.

Reported-by: joris
network/gif - Correctly clear route cache on destroy.

RTFREE() requires that the route is freed in the CPU it belongs to.
Migrating to the target CPU *before* calling it and returning to the
original CPU afterwards seems to do the trick.

Ok: @sephe
network/pf - Avoid a possible bad pointer access.

- Make sure new pfi_kif structures are zeroed on allocation.
- A panic was hit when pfi_instance_add() tried to access a bad ifp
  pointer (i.e. when using non-existing iface names in pf.conf)
Import OpenSSL-1.0.1g.

o Fix for CVE-2014-0160
o Add TLS padding extension workaround for broken servers.
o Fix for CVE-2014-0076
o Don't include gmt_unix_time in TLS server and client random values
o Fix for TLS record tampering bug CVE-2013-4353
o Fix for TLS version checking bug CVE-2013-6449
o Fix for DTLS retransmission bug CVE-2013-6450
Merge branch 'vendor/OPENSSL'
Update files for OpenSSL-1.0.1g import.
libu4bhid: Add missing MLINKS.
make upgrade: Add more files for cleaner switching between USB stacks.
inpcb: Add macros to get/release/assert port token
inpcb: Add comment about saved inpcbport