aboutsummaryrefslogtreecommitdiff
path: root/sys
Commit message (Collapse)AuthorAgeFilesLines
* linuxkpi: Implement <linux/seq_buf.h>Jean-Sébastien Pédron10 hours4-0/+140
| | | | | | | | | | | | It is a wrapper above a `char *` to track the overall available space in the buffer as well as the used space. This wrapper does not manage memory allocation. The DRM generic code started to use this in Linux 6.10. Reviewed by: bz Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D54488
* fusefs: styleAlan Somers13 hours1-2/+2
| | | | Reorder macro definitions.
* fusefs: Implement support for the auto_unmount option kernel-sideGleb Popov19 hours3-2/+8
| | | | | | | | | libfuse clients may pass the "-o auto_unmount" flag to ensure that the mountpoint will get unmounted even if the server terminate abnormally. Without this flag sending KILL to a FUSE daemon leaves its mountpoint mounted. Approved by: asomers Differential Revision: https://reviews.freebsd.org/D53086
* netlink: use caller's credentials in rtnl_handle_newlinkPouria Mousavizadeh Tehrani19 hours1-2/+10
| | | | | | | | | Make sure rtnl_handle_newlink sets the caller's credential during calls to ifc_create_ifp_nl and ifc_modify_ifp_nl Reviewed by: glebius, melifaro Approved by: glebius (mentor) Differential Revision: https://reviews.freebsd.org/D54109
* amd64: Fix sys/pcpu.h usage in vmm_host.h and md_var.hHans Rosenfeld28 hours2-0/+3
| | | | | | | | | | Include sys/pcpu in vmm_host.h as its structs and functions are used there, and add a forward declaration of struct pcpu to md_var.h as it is used in some function prototypes. Reviewed by: corvink, markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D51550
* netinet6: free in6_ifextra with epoch_call(9)Gleb Smirnoff31 hours2-5/+22
| | | | | | | | | | | | | | | | | | | This is expected to fix the old in6_selecthlim() panics. The nature of the panic is that a packet sending thread will obtain the struct ifnet pointer locklessly and then pick the if_inet6 pointer from it and dereference it. While the struct ifnet is freed via epoch_call(9), the struct in6_ifextra until this change was not. For the forwarded packets, or locally originated non-TCP packets we were probably safe due to the old if_dead trick. But locally originated TCP packets may dereference in6_ifextra via direct call into in6_selecthlim() from the tcp_output(), before ip6_output(). NB: hypothetically a similar problem also applies to IPv4's if_inet pointer, but there are no known panics, yet. PR: 279653 Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54728
* netinet6: embed struct mld_ifsoftc into struct in6_ifextraGleb Smirnoff31 hours5-65/+31
| | | | | | | In mld_domifdetach() don't search the global list. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54727
* netinet6: embed struct scope6_id into struct in6_ifextraGleb Smirnoff31 hours5-28/+17
| | | | | Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54726
* netinet6: store ND context directly in struct in6_ifextraGleb Smirnoff31 hours14-173/+177
| | | | | | | | | | | | | | | | | | | | | Stop using struct nd_ifinfo for that, because it is an API struct for SIOCGIFINFO_IN6. The functional changes are isolated to the protocol attach and detach: in6_ifarrival(), nd6_ifattach(), in6_ifdeparture(), nd6_ifdetach(), as well as to the nd6_ioctl(), nd6_ra_input(), nd6_slowtimo() and in6_ifmtu(). The dad_failures member was just renamed to match the rest. The M_IP6NDP malloc(9) type declaration moved to files that actually use it. The rest of the changes are mechanical substitution of double pointer dereference via ND_IFINFO() to a single pointer dereference. This was achieved with a sed(1) script: s/ND_IFINFO\(([a-z0-9>_.-]+)\)->(flags|linkmtu|basereachable|reachable|retrans|chlim)/\1->if_inet6->nd_\2/g s/nd_chlim/nd_curhoplimit/g Reviewed by: tuexen, madpilot Differential Revision: https://reviews.freebsd.org/D54725
* netinet6: use in6_ifmtu() instead of IN6_LINKMTU() macroGleb Smirnoff31 hours9-20/+18
| | | | | | | | | There should be no functional change. If there are any performance concerns with a function call, with the future changes, that would move ND6 bits into in6_ifextra, this function would be easily inline-able. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54724
* netinet6: embed the counter(9) arrays in struct in6_ifextraGleb Smirnoff31 hours4-29/+18
| | | | | Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54723
* netinet6: embed struct nd_ifinfo into struct in6_ndireqGleb Smirnoff31 hours1-18/+22
| | | | | | | | | | | | There is no functional change here, but we'd like to emphasize that the nd_ifinfo structure is not a actually a kernel ND6 software context, despite being actively used like this way, but an API/ABI structure for ioctl(2). This should prevent from a ABI breakages like in 31ec8b6407fd. This also is a step towards stopping using it as a kernel software context. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54722
* arm/gic: Detect broken configurationsAndrew Turner36 hours1-1/+14
| | | | | | | | | | | | | Some virtualization platforms provide broken configurations. There is a GIC interrupt controller, however accessing the CPU interface registers leads to an external data abort. As these are needed to handle interrupts we are unable to boot further. Detect this misconfiguration and panic to tell the user the issue. Reviewed by: emaste Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D54832
* mt76: update Mediatek's mt76 driverBjoern A. Zeeb39 hours217-1624/+4191
| | | | | | | | | | | | | | | This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 ( tag: v6.19-rc6 ). Notable change: license got switched from ISC to BSD-3-Clause-Clear. util.h is now imported from upstream given it is no longer GPL-only. See the upstream repository 909675fd4344f73aad5f75f123bd271ada2ab9fb and a96fed2825d8dfb068bf640419c619b5f2df4218. For us the new version should also help with page pools and DMA32. Sponsored by: The FreeBSD Foundation
* buf_ring: Rename some variablesDag-Erling Smørgrav42 hours1-7/+5
| | | | | | | | | | | | | The elements we store in buffer rings are buffers, so refer to them as `buf` throughout instead of a mixture of `buf`, `ret`, and `new`, especially since the latter breaks C++ code that directly or indirectly includes this header. MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: NetApp, Inc. Reviewed by: siderop1_netapp.com, markj Differential Revision: https://reviews.freebsd.org/D54827
* xdr_string: don't leak strings with xdr_freeBrooks Davis43 hours1-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | Historically (and in a small amount of older software such as OpenAFS), developers would attempt to free XDR strings with xdr_free((xdrproc_t)xdr_string, &string) This resulted in xdr_free calling xdr_string with only two intentional arguments and whatever was left in the third argument register. If the register held a sufficently small number, xdr_string would return FALSE and not free the string (no one checks the return values). Software should instead free strings with: xdr_free((xdrproc_t)xdr_wrapstring, &string) Because buggy software exists in the wild, act as though xdr_wrapstring was used in the XDR_FREE case and plug these leaks. Reviewed by: kib MFC after: 3 days Effort: CHERI upstreaming Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D54825
* rpc/xdr.h: make xdrproc_t always take two argumentsBrooks Davis43 hours3-10/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The type of xdrproc_t is clearly defined in the comments as a function with two arguments, an XDR * and a void * (sometimes spelled caddr_t). It was initialy defined as: typedef bool_t (*xdrproc_t)(); At some point people started giving it a non-empty argument list. Unfortunatly, there has been widespread disagreement about how arguments are passed. There seems to have been a widespread view that it should be allowed to pass three argument function pointer to xdrproc_t. Most notable is xdr_string which takes a maximum length parameter. This lead to all sorts of prototypes (all of which have been present in the FreeBSD source tree): FreeBSD userspace (nominally from tirpc, but seemingly local): typedef bool_t (*xdrproc_t)(XDR *, ...); FreeBSD kernel, glibc: typedef bool_t (*xdrproc_t)(XDR *, void *, ...); rcp/xdr.h with _KERNEL defined (not used?): typedef bool_t (*xdrproc_t)(XDR *, void *, u_int); gssrpc (in krb5) and Linux kernel: typedef bool_t (*xdrproc_t)(XDR *, void *); For two argument functions on current ABIs, these all equivalent as these arguments are passed in registers regardless of decleration and definition, but we end up with two problems: - xdr_free((xdrproc_t)xdr_string, ...) calls xdr_string with no third argument and (at least on FreeBSD) may fail to free memory if the string is shorter than the value lying around in the third argument register. There are no instance of this in tree, but I found some with Debian code search, in particular in OpenAFS. - Under CheriABI, variadic arguments are passed in a separate, bounded array so theses prototypes aren't equilvalent to the non-variadic calling convention of the functions. The reality is that that xdr_string should not be cast to xdrproc_t and xdr_wrapstring should be used instead so we do not need to support this case. Instances of the former behavior are now extremely rare. With this change we bring FreeBSD in line with gssrpc and the Linux Kernel. Warnings about casts should now be correct and should be fixed. Bump __FreeBSD_version as some software required adaptation if it is declaring functions to cast to xdrproc_t. Update OpenZFS's workaround of this historic mess accordingly. Effort: CHERI upstreaming Sponsored by: Innovate UK Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D54824
* dpnaa2: announce transmit checksum supportMichael Tuexen45 hours1-2/+8
| | | | | | | | | | | | Let the network stack know that the NIC supports checksum offloading for the IPv4 header checksum and the TCP and UDP transport checksum. This avoids the computation in software and therefore provides the expected performance gain. PR: 292006 Reviewed by: dsl, Timo Völker MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54809
* tests/ktest_netlink_message_writer: remove INVARIANTS requirementSiva Mahadevan2 days2-6/+1
| | | | | | | | | | | | | | | | | | INVARIANTS is meant to be used to enable extra sanity checking for internal structures, not enable/disable tests in the freebsd kyua test suite. STABLE branches include a GENERIC kernconf without INVARIANTS, so ktest_netlink_message_writer is broken on such branches: https://ci.freebsd.org/job/FreeBSD-stable-15-amd64-test/253/testReport/sys.netlink.test_netlink_message_writer/py/__test_cases_list__/ Reviewed by: lwhsu, imp Approved by: lwhsu (mentor) Pull Request: https://github.com/freebsd/freebsd-src/pull/1889 MFC after: 3 days Signed-off-by: Siva Mahadevan <siva@FreeBSD.org> Sponsored by: The FreeBSD Foundation
* x86 lapic: Dump LVTs from the ddb show lapic commandKonstantin Belousov2 days1-6/+34
| | | | | | | Add description for each LVT element, use it in show lapic dump. Sponsored by: The FreeBSD Foundation MFC after: 1 week
* x86: add machine/ifunc.hKonstantin Belousov2 days2-0/+10
| | | | | Sponsored by: The FreeBSD Foundation MFC after: 1 week
* hwpstate: Add CPPC enable tunableCy Schubert3 days1-1/+7
| | | | | | | | | | | | | | | | | | The Framework 13 runs very hot the maximum frequency is possible. By disabling CPPC (reverting to Cool`n'Quiet 2.0) we can use powerd to limit the CPU frequency to 2200, thereby reducing the CPU temperature. Some systems may run slower with CPPC enabled. See PR/292615 for that bug. Those experiencing either of these issues may add the following to their loader.conf or device.hints to disable CPPC: machdep.hwpstate_amd_cppc_enable="0" PR: 292615 Reviewed by: lwhsu, olce Differential revision: https://reviews.freebsd.org/D54803
* ath10k: update Atheros/QCA's ath10k driverBjoern A. Zeeb3 days8-51/+275
| | | | | | | | This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 ( tag: v6.19-rc6 ). Sponsored by: The FreeBSD Foundation
* rtw88: update Realtek's rtw88 driverBjoern A. Zeeb3 days6-3/+22
| | | | | | | | This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 ( tag: v6.19-rc6 ). Sponsored by: The FreeBSD Foundation
* LinuxKPI: netdevice: add structs net_device_path, net_device_path_ctxBjoern A. Zeeb3 days1-0/+24
| | | | | | | | mt76(4) is using this along with a mac80211.h functiontion pointer to resolve a path in an offload case. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* LinuxKPi: 802.11: add more definesBjoern A. Zeeb3 days3-0/+4
| | | | | | | | Add more defines and a mac80211 op function pointer used by mt76(4) at Linux v6.19-rc6. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* LinuxKPI: skbuff: implement skb_queue_splice()Bjoern A. Zeeb3 days1-1/+8
| | | | | | | | | Add skb_queue_splice() and use it in skb_queue_splice_init() which already had that functionality (plus the init bit). The new function is used by rtw89(4). Sponosred by: The FreeBSD Foundation MFC after: 3 days
* LinuxKPI: 802.11: rename enum ieee80211_tx_rate_flags and move fileBjoern A. Zeeb3 days2-14/+13
| | | | | | | | | | What we used to call enum ieee80211_tx_rate_flags is now used as enum mac80211_rate_control_flags for the ieee80211_tx_rate.flags in rtw89(4). Rename the enum and move it to mac80211 as it seems to belong there. Sponsonred by: The FreeBSD Foundation MFC after: 3 days
* LinuxKPI: 802.11: add new field to struct cfg80211_bitrate_maskBjoern A. Zeeb3 days1-0/+3
| | | | | | | | rtw89(4) accesses eht_mcs[]. Add the field to struct cfg80211_bitrate_mask. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* radiotap: add more EHT definitionsBjoern A. Zeeb3 days1-0/+21
| | | | | | | Add more EHT definitions used by at least iwlwifi. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* LinuxKPI: 802.11: Management MIC element can have 8 or 16 octets MICBjoern A. Zeeb3 days1-3/+11
| | | | | | | | | Management MIC element (MME) can have 8 or 16 octets MIC. Add a second structure used by at least iwlwifi and update reference to latest standard version. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* rpctls_impl.c: Use a direct cast to uintptr_t instead of __DECONSTJohn Baldwin4 days1-1/+1
| | | | | | | | | | | | | | | This fixes the build on CHERI architectures where the compiler warns about a direct cast between uint64_t and const void * inside of __DECONST. However, GCC would also complain about this on 32-bit kernels due to uint64_t not being the same size as a pointer. Also, a direct cast to uintptr_t to right-size the cookie value is more direct than using __DECONST given that there is no "const" pointer involved in the expression. Reviewed by: brooks, glebius Obtained from: CheriBSD Sponsored by: AFRL, DARPA Differential Revision: https://reviews.freebsd.org/D54797
* dpaa2: cleanupMichael Tuexen4 days1-20/+4
| | | | | | | | No functional change intended. Reviewed by: bz, dsl MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54805
* powerpc/mpc85xx: Fix PCI attach error cleanupJustin Hibbits4 days1-2/+17
| | | | | | | | | If an error occurs during attach after ofw_pcib_init() runs, the device is torn down, leaving the rmans embedded in the softc attached to the rman list, thus corrupting the rman list. Fix this by undoing everything that was done by this point. MFC after: 1 week
* powerpc/mpc85xx: Set pc_hwref to the primary thread IDJustin Hibbits4 days1-2/+14
| | | | | | On multithreaded cores (e6500) the CPU ID in the device tree (reg[0]) is the primary core, which may not match the cpuid, until Book-E threading is added.
* dpaa: Simplify CPU binding for bman and qmanJustin Hibbits4 days2-61/+18
| | | | | | | If cpu-handle property doesn't exist simply iterate and assign the CPUs in sequence rather than following the convoluted search which may not bear fruit in some cases. If cpu-handle doesn't exist for one portal it probably doesn't exist for any of them.
* nfscl: Fix the buildRick Macklem4 days1-1/+2
| | | | Fixes: f2155a6fb568 ("nfscl: Fix handling of case insensitive file systems")
* nfscl: Fix handling of case insensitive file systemsRick Macklem4 days3-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Name caching must be handled somewhat differently for case insensitive file systems. Negative name caching does not work and, for rename, all names associated with the rename'd vnode must be disabled. For a case insensitive ZFS file system that is exported, the unpatched code did work, since the change in mtime or ctime of the directory when other case names were created or rename'd would disable the false name cache hit. However, an export of an msdosfs file system breaks the NFS client, because it only works if ctime/mtime is changed whenever a name is added/removed. Depending on what the server file system is, this may not happen, due to clock resolution or lack of support for these attributes. This patch checks to see if the server file system is case insensitive and modifies the name caching to handle this. There is still a problem if a case insensitive file system is a subtree of a non-case insensitive is exported by the NFSv4 server. This can be fixed someday, when the NFSv4 client gets support for submounts within the mount. Suggested by: kib MFC after: 2 weeks
* ktrace: do not enqueue request if the process' ktrioparams are freedKonstantin Belousov4 days1-2/+8
| | | | | | | | | | | | | The p_ktrioparms are freed on termination of tracing. Any ktr requests added to the queue after that would hang there and leak on the struct proc recycling, or trigger an assert in the process destructor for debug builds. Reported and tested by: pho Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54804
* LinuxKPI: 802.11: fix build for non-debug kernelsBjoern A. Zeeb4 days1-0/+2
| | | | | | | | | | | | | lkpi_nl80211_band_name() is only available under LINUXKPI_DEBUG_80211. IMPROVE in theory should be as well or defined to nothing but we cannot do that in cfg80211.h mac80211.h where we possibly (re-)define this. Put an #ifdef around the IMPROVE call for now (untested). Sponsored by: The FreeBSD Foundation MFC after: 3 days Fixes: 768332d61948 Reported by: CI
* sctp: support bridge interfacesMichael Tuexen5 days1-0/+1
| | | | | | Reported by: Timo Völker Tested by: Timo Völker MFC after: 3 days
* net80211: correct return code for ieee80211_ampdu_request()Bjoern A. Zeeb5 days1-5/+13
| | | | | | | | | | | | We used to return the result of (*ic_send_action) directly but ieee80211_ampdu_request() returns 1 on success and 0 on error, which is contrary to the result of (*ic_send_action). Deal with that accordingly and update the documentation of the function. Sponsored by: The FreeBSD Foundation MFC after: 3 days Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D54794
* LinuxKPI: 802.11: factor out rate logic for mandatory channelsBjoern A. Zeeb5 days3-27/+100
| | | | | | | | | | | | | | | I was looking at rate work for another problem and found more flags in ath9k (which we will likely never need). The documentation then revealed the "mandatory" flags as well and with discussions about cfg80211 going on I decided to use the momentum and split our "supp_rates" setup between lkpi_lsta_alloc() and wiphy_register(). There should be no functional change. While there also initialize max_rc_amsdu_len. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* sys/abi_compat.h: fix UB for bintime32 handlingKonstantin Belousov5 days2-2/+2
| | | | | | | | | | | Do not cast and then access potentially unaligned uint64_t in the BT_CP() macro. Use freebsd32_uint64_t type and FU64_CP() for the frac member. Noted by: des Reviewed by: des, emaste Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54663
* compat32: provide a type and a macro for (u)int64_t handling on non-x86 archesKonstantin Belousov5 days2-1/+18
| | | | | | | | | | | | uint64_t is 4-byte aligned on i386, but is 8-bytes aligned on all other 32bit arches FreeBSD supports. Provide the freebsd32_uint64_t type and the FU64_CP() macro, which are intended to be used where 32bit ABI uses (u)int64_t type, and do proper layout and copying for the aggregate type. Reviewed by: des, emaste Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54663
* ip: improve deferred computation of checksumsTimo Völker5 days2-9/+29
| | | | | | | | | | | | | | | | | | | | This patch adds the same functionality for the IPv4 header checksum as was done erlier for the SCTP/TCP/UDP transport checksum. When the IP implementation sends a packet, it does not compute the corresponding checksum but defers that. It will determine whether the network interface selected for the packet has the requested capability and computes the checksum in software, if the selected network interface does not have the requested capability. Do this not only for packets being sent by the local IP stack, but also when forwarding packets. Furthermore, when such packets are delivered to a local IP stack, do not compute or validate the checksum, since such packets have never been on the wire. This allows to support checksum offloading also in the case of local virtual machines or jails. Support for epair interfaces will be added in a separate commit. Reviewed by: pouria, tuexen MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54455
* dwc: cleanupMichael Tuexen5 days1-10/+6
| | | | | | | | No functional change intended. Reviewed by: Timo Völker MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54788
* jail(3): fix common usage after mac.label supportKyle Evans5 days1-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Nobody else's mac.conf(5) has any entries for jails, so they get a trivial ENOENT and we fail before we can fetch any jail parameters. Most notably, this breaks `jls -s` / `jls -n` if you do not have any loaded policy that applies jail labels. Add an entry that works for everyone, and hardcode that as an ENOENT fallback in libjail to provide a smoother transition. This is probably not harmful to leave in long-term, since mac.conf(5) will override it. This unearthed one additional issue, in that mac_get_prison() in the MAC framework handled the no-label-policies bit wrong. We don't want to break jail utilities enumerating jail parameters automatically, so we must ingest the label in all cases -- we can still use it as a small optimization to avoid trying to copy out any label. We will break things if a non-optional element is specified in the copied in label, but that's expected. The APIs dedicated to jaildescs remain unphased, since they won't be used in the same way. Fixes: db3b39f063d9f05 ("libjail: extend struct handlers [...]") Fixes: bd55cbb50c58876 ("kern: add a mac.label jail parameter") Reported by: jlduran (on behalf of Jenkins) Reviewed by: jlduran Differential Revision: https://reviews.freebsd.org/D54786
* pfctl(8): change default limiter action from no-match to blockKristof Provost5 days1-0/+2
| | | | | | | | | | | | | | | | | pf(4) users who use limiters in current should update the rules accordingly to reflect the change in default behavior. The existing rule which reads as follows: pass in from any to any state limiter test needs to be changed to: pass in from any to any state limiter test (no-match) OK dlg@ Obtained from: OpenBSD, sashan <sashan@openbsd.org>, c600931321 Sponsored by: Rubicon Communications, LLC ("Netgate")
* sctp: improve compilation as moduleMichael Tuexen5 days1-1/+0
| | | | | | | | | | | When compiling SCTP as a module, don't compile sctp_crc32.c into the module. This avoids code and variable duplication since sctp_crc32.c is compiled into the kernel. In particular, the variable system_base_info is not duplicated. This fixes the handling of the statistic counters sctps_sendhwcrc and sctps_sendswcrc when using sctp_delayed_cksum. MFC after: 3 days