ciss(4): Sync with FreeBSD.

Tons of good stuff. MPSAFEness, MSI interrupts, better performance,
and a lot more (I'm too lazy to go through FreeBSD's logs :P).

Support for a number of adapters has been added, too:

* HP Smart Array P220i
* HP Smart Array P222
* HP Smart Array P420
* HP Smart Array P420i
* HP Smart Array P421
* HP Smart Array P700m
* HP Smart Array P712m
* HP Smart Array P721m
* HP Smart Array P822

I've tested it with a HP Smart Array P212.

Many thanks to FreeBSD.
ciss.4: Document some tunables.
tcp: Add TSO support for IPv4

It is implemented mainly according to NetBSD's TSO implementation.

Following stuffs are only in DragonFly
- Add comment about devices' expected behaviour upon PUSH and FIN flags
  Obtained-from: Microsoft's LSO online document
- Don't use TSO, if there are SACK or DSACK blocks to report
- Don't use TSO, if congestion window needs validation
- Don't use TSO, if URG flag is to be set
- Take IP and TCP header sizes into consideration when calculate the
  large TCP segment size
- Pseudo checksum for the large TCP segment is calculated using only
  source address, destination address and IPPROTO_TCP according to
  Microsoft's LSO online document.  This fashion of pseudo checksum
  calculation seems to be adopted by several NIC chips.

Several driver helper functions are added:
- tcp_tso_pullup(), which extracts IPv4 and TCP header's location and
  length.  And make sure that IPv4 and TCP headers are in contiguous
  memory.
- ether_tso_pullup(), in addition to what tcp_tso_pullup() does, it
  also extracts ethernet header's length and make sure that ethernet,
  IPv4 and TCP headers are in contiguous memory.

Sysctl node net.inet.tcp.tso could be used to globally disable TSO.
TSO is by default on.

tso/-tso are added to ifconfig(8), which could be used to enable or
disable TSO on the specific interface.
ixgbe: Unbreak compile
bnx: Add TSO support

Obtained-from: FreeBSD if_bge.c

For TSO header information, ether_tso_pullup() is used instead of
making our own wheel.

BNX_TSO_DEBUG is added to help testing various TCP parameters tuning
tools: Add toeplitz, which calculate toeplitz on given addresses/ports
tcp: Increase tcp_sosend_agglim from 2 to 3

This change makes better use of TSO.

When 2 is used, most of the large TCP segments' size are 2*MSS or 3*MSS.
When 3 is used, most of the large TCP segments' size are 4*MSS or 5*MSS.

The math is quite simple, given 1448B segment size:
2 == 4096B == 2 segments
3 == 6144B == 4 segments

Increasing it to a higher value improves single full speed stream's CPU
utilization, but does not have much effect on multiple streams'.
kernel: remove O_ROOTCRED

* This flag was DragonFly-specific and effectively unused

* Removing it frees up flag space for interacting with the rest of the world

* Partially fixes issue #2357
kernel: remove O_FRNONBLOCKING

* Like O_ROOTCRED it was effectively unused and removing it frees up
  a precious bit among the various O_xxx flags

* Partially fixes issue #2357
open - implement O_DIRECTORY
open.2 - document O_DIRECTORY
implement linkat
linkat(2) man page
opendir(3) - use O_DIRECTORY
<sys/fcntl.h>: Mark O_DIRECTORY as being new in POSIX.1-2008.

It is also visible in our default environment, just not if the code
explicitly requests an older POSIX version.
kdump(1)/truss(1): Fix occasional quickworld breakage.

Whenever we messed with our ioctls or certain definitions
(like fcntl(2)'s O_* flags), kdump and truss could break
quickworld because their generated ioctl.c and kdump_subr.c
files in /usr/obj would still have removed stuff.

Fix this by regenerating them every time, no matter what.
Merge branch 'master' into gsocdrm_github
kernel: Implement O_CLOEXEC

* Using fcntl(2) just after open(2) is not enough to avoid race conditions
  in programs doing fork+exec sequences. Child processes may be created
  before fcntl() is run and inherit the parent's file descriptors.

* In some circonstances this behavior may even create security issues.

* O_CLOEXEC can be used to atomically set the close-on-exec flag for new
  file descriptors, avoiding the whole mess in the first place.

* Fixes issue #2356

Inspired-from: NetBSD
opendir(3): use O_CLOEXEC
LINT/LINT64: Add BNX_TSO_DEBUG.