freebsd-dev/sys
Rick Macklem 4302e8b671 Modify the way the client side krpc does soreceive() for TCP.
Without this patch, clnt_vc_soupcall() first does a soreceive() for
4 bytes (the Sun RPC over TCP record mark) and then soreceive(s) for
the RPC message.
This first soreceive() almost always results in an mbuf allocation,
since having the 4byte record mark in a separate mbuf in the socket
rcv queue is unlikely.
This is somewhat inefficient and rather odd. It also will not work
for the ktls rx, since the latter returns a TLS record for each
soreceive().

This patch replaces the above with code similar to what the server side
of the krpc does for TCP, where it does a soreceive() for as much data
as possible and then parses RPC messages out of the received data.
A new field of the TCP socket structure called ct_raw is the list of
received mbufs that the RPC message(s) are parsed from.
I think this results in cleaner code and is needed for support of
nfs-over-tls.
It also fixes the code for the case where a server sends an RPC message
in multiple RPC message fragments. Although this is allowed by RFC5531,
no extant NFS server does this. However, it is probably good to fix this
in case some future NFS server does do this.
2020-06-21 00:06:04 +00:00
..
amd64 Regen after r362440. 2020-06-20 18:31:02 +00:00
arm raspberry pi 4: cpufreq support 2020-06-20 04:07:58 +00:00
arm64 Regen after r362440. 2020-06-20 18:31:02 +00:00
bsm bsm: add AUE_CLOSERANGE 2020-04-24 01:27:25 +00:00
cam Use the more descriptive src_ccb and dst_ccb for the two ccbs being merged. 2020-06-20 04:07:23 +00:00
cddl loader: create single zfs nextboot implementation 2020-06-20 06:23:31 +00:00
compat Add linux_madvise(2) instead of having Linux apps call the native 2020-06-20 18:29:22 +00:00
conf Add specialized gpio driver for ARMADA 8k SoC. 2020-06-19 15:21:33 +00:00
contrib Document upgrade procedure in FREEBSD-upgrade 2020-06-04 20:48:57 +00:00
crypto Fix AES-CCM requests with an AAD size smaller than a single block. 2020-06-12 21:33:02 +00:00
ddb kernel: provide panicky version of __unreachable 2020-05-13 18:07:37 +00:00
dev oce(4): Account and trace mbufs before handing to hw 2020-06-20 17:22:46 +00:00
dts Remove licenses 2020-06-04 17:20:58 +00:00
fs Remove vfs_statfs and vnode_mount macros from NFS 2020-06-17 16:20:19 +00:00
gdb Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
geom Move the pointers stored in the superblock into a separate 2020-06-19 01:02:53 +00:00
gnu dts: patch the am33xx dts for upcoming clock support 2020-06-05 20:14:54 +00:00
i386 Regen after r362440. 2020-06-20 18:31:02 +00:00
isa sc(4) md bits: stop setting sc->kbd entirely 2019-12-30 02:07:55 +00:00
kern hw.bus.info: rework handler 2020-06-18 21:42:54 +00:00
kgssapi Add support for optional separate output buffers to in-kernel crypto. 2020-05-25 22:12:04 +00:00
libkern libkern: Add arc4random_uniform 2020-05-23 17:51:06 +00:00
mips Various fixes to TLS for MIPS. 2020-06-12 21:21:18 +00:00
modules Add DTB files for ARMADA 8040 based boards. 2020-06-19 14:28:56 +00:00
net iflib: netmap: enter/exit netmap mode after device stops 2020-06-14 21:07:12 +00:00
net80211 [net80211] Add missing commit to previous-1 uapsd commit. 2020-06-16 00:28:45 +00:00
netgraph Update event masks constant to Bluetooth core spec V5.2 2020-06-15 14:58:40 +00:00
netinet Set a variable also in the case of an INET6 only kernel 2020-06-20 23:48:57 +00:00
netinet6 Add the SCTP_SUPPORT kernel option. 2020-06-18 19:32:34 +00:00
netipsec Add the SCTP_SUPPORT kernel option. 2020-06-18 19:32:34 +00:00
netpfil Add the SCTP_SUPPORT kernel option. 2020-06-18 19:32:34 +00:00
netsmb Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
nfs Use epoch(9) for rtentries to simplify control plane operations. 2020-05-23 10:21:02 +00:00
nfsclient
nfsserver
nlm Fix export_args ex_flags field so that is 64bits, the same as mnt_flags. 2020-06-14 00:10:18 +00:00
ofed Convert OFED rtable interactions to the new routing KPI. 2020-04-15 13:06:55 +00:00
opencrypto Various optimizations to software AES-CCM and AES-GCM. 2020-06-12 23:10:30 +00:00
powerpc [PowerPC] Add virtio to GENERIC 2020-06-19 18:43:13 +00:00
riscv riscv: Use SBI shutdown call to implement RB_POWEROFF 2020-06-08 17:57:21 +00:00
rpc Modify the way the client side krpc does soreceive() for TCP. 2020-06-21 00:06:04 +00:00
security mac_veriexec_fingerprint_check_vnode: v_writecount > 0 means active writers 2020-06-12 21:51:20 +00:00
sys Bump __FreeBSD_version after making liblzma to use libmd implementation 2020-06-20 21:32:14 +00:00
teken
tests Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
tools vfs: stop null checking routines in vop wrappers 2020-01-26 00:41:38 +00:00
ufs The binary representation of the superblock (the fs structure) is written 2020-06-19 01:04:25 +00:00
vm Clarify some language. Favor primary where both master and primary were 2020-06-20 20:21:04 +00:00
x86 Control for Special Register Buffer Data Sampling mitigation. 2020-06-12 22:14:45 +00:00
xdr Split XDR into separate kernel module. Make krpc depend on xdr. 2020-04-17 06:04:20 +00:00
xen Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (16 of many) 2020-02-25 19:04:39 +00:00
Makefile Remove sparc64 kernel support 2020-02-03 17:35:11 +00:00