Defer checksum calulations on UDP6 output and respect the mbuf
flags set by NICs having done checksum validation for us already,
thus saving the computing time in the input path as well.
Add support for delayed checksum calculations in the IPv6
output path. We currently cannot offload to the card if we
add extension headers (which incl. fragmentation).
Fix two SCTP offload support copy&paste bugs: calculate
checksums if fragmenting and no need to flag IPv4 header
checksums in the IPv6 forwarding path.
Correctly get the payload length in host byte order. While we
already plan to support >64k payload here, the IPv6 header payload
length obviously is only 16 bit and the calculations need to be right.
Hide the ip6aux functions. The only one referenced outside ip6_input.c
is not compiled in yet (__notyet__) in route6.c (r235954, r238231).
We do have accessor functions that should be used.
Significantly update tcp_lro for mostly two things:
1) introduce basic support for IPv6 without extension headers.
2) try hard to also get the incremental checksum updates right,
especially also in the IPv4 case for the IP and TCP header.
Move variables around for better locality, factor things out into
functions, allow checksum updates to be compiled out, ...
Leave a few comments on further things to look at in the future,
though that is not the full list.
Update drivers with appropriate #includes as needed for IPv6 data
type in LRO.
in_cksum.h required ip.h to be included for struct ip. To be
able to use some general checksum functions like in_addword()
in a non-IPv4 context, limit the (also exported to user space)
IPv4 specific functions to the times, when the ip.h header is
present and IPVERSION is defined (to 4).
Introduce a (for now copied stripped down) in6_cksum_pseudo()
function. We should be able to use this from in6_cksum() but
we should also ponder possible MD specific improvements.
It takes an extra csum argument to allow for easy checks as
will be done by the upper layer protocol input paths.
Optimize in6_cksum(), re-ordering work and limiting variable
initialization, removing a bzero() for mostly re-initialized
struct values, making use of the newly introduced in6_getscope(),
as well as converting an if/panic to a KASSERT().
Allow tso4 and tso6 be set individually given we have the bits.
This will help with drivers not working as expected during the
transition time and later.
Call set_terminal_mode() after video mode change, not before, because
video mode change always reset terminal mode to xterm.
It allows things like 'vidcontrol -T cons25 80x30' works as supposed,
and allows 'allscreens_flags="-T cons25 80x30"' in /etc/rc.conf too.
MFC r238022:
Remove 14 not very useful characters " HDA CODEC PCM" from HDA pcm
device names to shorten them. PulseAudio reported to have problems with
names longer then 63 chars and at least in XMMS long names are inconvinient.
MFC r238011:
Restore GPIO config quirks handling, lost during last big refactoring.
This fixes sound from speakers on some laptops, including MacBook Pro.
Unfortunately the change in r237958 resulted in s/install/instclean/ due to
the aggressive pattern matching of the :C modifier. I tested build and
install in 2 phases, however with different solutions, resulting in the
breakage. Mea culpa.
The solution is to break out the all: target. This causes a few lines of
code duplication, but now the all: target works as it should, and the
other targets continue to work as they did before.
While I'm here, add a ===> header line to the start of each port build
to make it easier to find/more clear in the logs.
MFC r238028:
Instruct the firmware not to provision resources for TCP offload if the
kernel is being built without TCP_OFFLOAD. But never override
toecaps_allowed if it has been set manually.
marius [Mon, 2 Jul 2012 19:13:38 +0000 (19:13 +0000)]
MFC: r237842
Switch back to the 4BSD scheduler for now. There is some more or less
recent regression with ULE, causing processes to get stuck in getblk
as well as interrupt handler execution delays to rise above the command
timeout of mpt(4).
Note that "HAVE_GETLINE" should be #undef'ed in config.h as were not using
the libc interface -- however that leads to redundant redeclaration compiler
warnings between the internal file.h and <stdio.h>.
MFC: r228193: tweak the r137233 fix to r136283 -- Code was making two send()
attempts vs. the comment documented "If we are working with a privileged
socket, then take only one attempt". Make the code match.
For the ports modules building code, clean WRKDIR before building. This is
important for those that use -DNO_CLEAN routinely, since it will prevent
installing stale stuff, and even more important when the port is upgraded
to a newer version. When the user doesn't use -DNO_CLEAN, this will create
an infinitesimal amount of extra work, but won't hurt anything.
This is necessary because the ports tree has flags that prevent the ususal
'update the build if newer source files exist' logic from doing what it
would do in the base.
MFC: r229809: Don't include <sys/timeb.h>.
The purpose of not including <sys/timeb.h> is to avoid the compiler
warning we put in <sys/timeb.h>. So this change will cause CVS to
provide its own definition of 'struct timeb'. This is only OK
because the code never calls the libc ftime(3) interface. CVS only
uses 'struct timeb' as a convenience structure -- thus it doesn't
matter how its supplied definition does or does not match the
ftime(3) ABI.
MFC r226843
Eliminate vestiges of page coloring in VM_ALLOC_NOOBJ calls to
vm_page_alloc(). While I'm here, for the sake of consistency, always
specify the allocation class, such as VM_ALLOC_NORMAL, as the first of
the flags.
Fix a LOR acquiring the if_afdata lock while holding an rtentry lock.
Possibly do some entra work in case we would not get into the
ifa0 != NULL paths later as we already do for the mltaddr before.
XXX We should possibly error in case in6_setscope fails.
r237436:
cxgbe(4): update to firmware interface 1.5.2.0; updates to shared code.
r237439:
Do not read registers with read side effects while performing a register
dump for cxgbetool.
r237463:
Do not allocate extra vectors when adapter is not TOE
capable (or toecaps have been disallowed by the user).
r237512:
Better way to determine the status page length and rx pad boundary.
r237587:
Allow cxgbe(4) running within a VM to attach to its devices that have been
exported via PCI passthrough.
r237799:
cxgbe(4): support for IPv6 hardware checksumming (rx and tx).
r237819:
cxgbe(4): support for IPv6 TSO and LRO.
r237831:
- Assign (don't OR) the CSUM_XXX bits to csum_flags in the rx checksum code.
- Fix TSO/TSO4 mixup.
- Add IFCAP_LINKSTATE to the available/enabled capabilities.
Backport just the sys/{dev,modules}/cxgb{,e}/ parts of r237263, and then
disable the TOE and iWARP modules in the Makefiles (they won't compile
without the rest of r237263).
This reduces diffs between the cxgb/cxgbe drivers in head and 9 and
makes it easy to MFC other fixes to 9.
MFC BA/DELBA fixes:
- r234321:
Use the M_AMPDU_MPDU flag to determine when to manually set the seqno and
use a BA queue.
- r235686:
Discard frames after a DELBA which where queued during an active BA
session.
- r235687:
remove unused vap variable
- r237647:
Fix a TX aggregation issue, if after the last compressed BA notification
the TX queue is empty, there won't be a TX done notification, effectly
resulting in an mbuf leak. The correct way to handle this is to free
up mbufs on both BA and TX done notifications up to the last sent seqno.
- r237649 (1):
We need to defer passing the DELBA request to the firmware until the aggr
queue is empty or the firmware will go nuts.
r231317
Add IPv6 TSO (including TSO+VLAN) support to cxgb(4).
r235963 (bz@)
Allow LRO to work on IPv6 as well.
Fix the module Makefile to at least properly inlcude opt_inet6.h
and allow builds without INET or INET6.
r234831
Make sure that the firmware version is available in
dev.t4nex.X.firmware_version even if the driver fails to attach
properly. At least it'll be easy to tell what we're dealing with.
r234833:
Change the default to not use packet counters to generate rx interrupts.
Rely solely on the timer based mechanism.
MFC r236959:
Add a IP_RECVTOS socket option to receive for received UDP/IPv4
packets a cmsg of type IP_RECVTOS which contains the TOS byte.
Much like IP_RECVTTL does for TTL. This allows to implement a
protocol on top of UDP and implementing ECN.
MFC r236958:
Deliver IPV6_TCLASS, IPV6_HOPLIMIT and IPV6_PKTINFO cmsgs (if
requested) on IPV6 sockets, which have been marked to be not IPV6_V6ONLY,
for each received IPV4 packet.