Jon Paul Maloy
6998cc6ec2
tipc: resolve connection flow control compatibility problem
...
In commit 10724cc7bb ("tipc: redesign connection-level flow control")
we replaced the previous message based flow control with one based on
1k blocks. In order to ensure backwards compatibility the mechanism
falls back to using message as base unit when it senses that the peer
doesn't support the new algorithm. The default flow control window,
i.e., how many units can be sent before the sender blocks and waits
for an acknowledge (aka advertisement) is 512. This was tested against
the previous version, which uses an acknowledge frequency of on ack per
256 received message, and found to work fine.
However, we missed the fact that versions older than Linux 3.15 use an
acknowledge frequency of 512, which is exactly the limit where a 4.6+
sender will stop and wait for acknowledge. This would also work fine if
it weren't for the fact that if the first sent message on a 4.6+ server
side is an empty SYNACK, this one is also is counted as a sent message,
while it is not counted as a received message on a legacy 3.15-receiver.
This leads to the sender always being one step ahead of the receiver, a
scenario causing the sender to block after 512 sent messages, while the
receiver only has registered 511 read messages. Hence, the legacy
receiver is not trigged to send an acknowledge, with a permanently
blocked sender as result.
We solve this deadlock by simply allowing the sender to send one more
message before it blocks, i.e., by a making minimal change to the
condition used for determining connection congestion.
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-11-25 21:38:16 -05:00
..
6lowpan
6lowpan: ndisc: no overreact if no short address is available
2016-09-19 20:19:34 +02:00
9p
IB/core: add support to create a unsafe global rkey to ib_create_pd
2016-09-23 13:47:44 -04:00
802
8021q
net: add recursion limit to GRO
2016-10-20 14:32:22 -04:00
appletalk
appletalk: use IS_ENABLED() instead of checking for built-in or module
2016-09-10 21:19:10 -07:00
atm
lec: use IS_ENABLED() instead of checking for built-in or module
2016-09-10 21:19:10 -07:00
ax25
AX.25: Close socket connection on session completion
2016-06-18 20:55:34 -07:00
batman-adv
batman-adv: Detect missing primaryif during tp_send as error
2016-11-04 12:27:39 +01:00
bluetooth
Bluetooth: Fix using the correct source address type
2016-11-22 22:50:46 +01:00
bridge
bridge: multicast: restore perm router ports on multicast enable
2016-10-18 13:52:13 -04:00
caif
caif: Remove unneeded header file
2016-06-28 05:26:14 -04:00
can
can: bcm: fix support for CAN FD frames
2016-11-23 15:22:18 +01:00
ceph
libceph: initialize last_linger_id with a large integer
2016-11-10 20:13:08 +01:00
core
net: ethtool: don't require CAP_NET_ADMIN for ETHTOOL_GLINKSETTINGS
2016-11-25 20:23:30 -05:00
dcb
dccp
ipv6: dccp: add missing bind_conflict to dccp_ipv6_mapped
2016-11-03 16:50:27 -04:00
decnet
net: fix decnet rtnexthop parsing
2016-07-05 14:08:47 -07:00
dns_resolver
dsa
net: dsa: add port fast ageing
2016-09-23 08:38:50 -04:00
ethernet
net: add recursion limit to GRO
2016-10-20 14:32:22 -04:00
hsr
net/hsr: Remove unused but set variable
2016-10-18 10:28:18 -04:00
ieee802154
ieee802154: 6lowpan: fix intra pan id check
2016-07-08 13:23:12 +02:00
ipv4
udplite: call proper backlog handlers
2016-11-24 15:32:14 -05:00
ipv6
udplite: call proper backlog handlers
2016-11-24 15:32:14 -05:00
ipx
irda
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2016-09-23 06:46:57 -04:00
iucv
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
2016-07-29 17:38:46 -07:00
kcm
Merge branch 'work.splice_read' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-07 15:36:58 -07:00
key
l2tp
net: revert "net: l2tp: Treat NET_XMIT_CN as success in l2tp_eth_dev_xmit"
2016-11-23 20:18:36 -05:00
l3mdev
net: ipv6: Remove l3mdev_get_saddr6
2016-09-10 23:12:53 -07:00
lapb
llc
llc: switch type to bool as the timeout is only tested versus 0
2016-09-17 10:05:05 -04:00
mac80211
mac80211: fix A-MSDU aggregation with fast-xmit + txq
2016-11-15 14:37:30 +01:00
mac802154
mac802154: use rate limited warnings for malformed frames
2016-09-19 20:19:34 +02:00
mpls
mpls: move mpls_hdr to a common location
2016-10-03 02:00:21 -04:00
ncsi
net/ncsi: Improve HNCDSC AEN handler
2016-10-20 11:23:08 -04:00
netfilter
netfilter: nf_tables: fix oops when inserting an element into a verdict map
2016-11-08 23:53:39 +01:00
netlabel
netlabel: Implement CALIPSO config functions for SMACK.
2016-06-27 15:06:18 -04:00
netlink
genetlink: fix a memory leak on error path
2016-11-03 16:52:29 -04:00
netrom
nfc
NFC: digital: Fix RTOX supervisor PDU handling
2016-07-11 02:02:03 +02:00
openvswitch
openvswitch: add NETIF_F_HW_VLAN_STAG_TX to internal dev
2016-10-13 10:03:23 -04:00
packet
packet: on direct_xmit, limit tso and csum to supported devices
2016-10-29 15:02:15 -04:00
phonet
qrtr
rds
rds: debug messages are enabled by default
2016-10-29 15:55:57 -04:00
rfkill
rose
rose: limit sk_filter trim to payload
2016-07-13 11:53:40 -07:00
rxrpc
rxrpc: Fix checking of error from ip6_route_output()
2016-10-13 08:43:17 +01:00
sched
net sched filters: fix filter handle ID in tfilter_notify_chain()
2016-11-24 16:05:58 -05:00
sctp
sctp: change sk state only when it has assocs in sctp_shutdown
2016-11-14 16:22:33 -05:00
strparser
strparser: Propagate correct error code in strp_recv()
2016-10-12 01:51:49 -04:00
sunrpc
One fix for an NFS/RDMA crash.
2016-11-18 16:32:21 -08:00
switchdev
switchdev: Execute bridge ndos only for bridge ports
2016-10-19 10:58:04 -04:00
tipc
tipc: resolve connection flow control compatibility problem
2016-11-25 21:38:16 -05:00
unix
af_unix: conditionally use freezable blocking calls in read
2016-11-18 13:58:39 -05:00
vmw_vsock
VSOCK: Don't dec ack backlog twice for rejected connections
2016-09-27 07:59:25 -04:00
wimax
wireless
cfg80211: limit scan results cache size
2016-11-18 08:44:44 +01:00
x25
net: x25: remove null checks on arrays calling_ae and called_ae
2016-09-09 18:13:30 -07:00
xfrm
proc: Reduce cache miss in xfrm_statistics_seq_show
2016-09-30 01:50:45 -04:00
compat.c
Kconfig
strparser: Stream parser for messages
2016-08-17 19:36:23 -04:00
Makefile
strparser: Stream parser for messages
2016-08-17 19:36:23 -04:00
socket.c
xattr: Fix setting security xattrs on sockfs
2016-11-17 00:00:23 -05:00
sysctl_net.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2016-10-06 09:52:23 -07:00