Vlad Yasevich
619a60ee04
sctp: Remove outqueue empty state
...
The SCTP outqueue structure maintains a data chunks
that are pending transmission, the list of chunks that
are pending a retransmission and a length of data in
flight. It also tries to keep the emtpy state so that
it can performe shutdown sequence or notify user.
The problem is that the empy state is inconsistently
tracked. It is possible to completely drain the queue
without sending anything when using PR-SCTP. In this
case, the empty state will not be correctly state as
report by Jamal Hadi Salim <jhs@mojatatu.com>. This
can cause an association to be perminantly stuck in the
SHUTDOWN_PENDING state.
Additionally, SCTP is incredibly inefficient when setting
the empty state. Even though all the data is availaible
in the outqueue structure, we ignore it and walk a list
of trasnports.
In the end, we can completely remove the extra empty
state and figure out if the queue is empty by looking
at 3 things: length of pending data, length of in-flight
data, and exisiting of retransmit data. All of these
are already in the strucutre.
Reported-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Vlad Yasevich <vyasevich@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-01-02 17:22:48 -05:00
..
9p
for-linus-3.12-merge minor 9p fixes and tweaks for 3.12 merge window
2013-09-11 12:34:13 -07:00
bluetooth
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-11-15 16:47:22 -08:00
caif
caif_hsi.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
irda
irda: update comment mentioning IRQF_DISABLED
2013-10-17 15:13:20 -04:00
iucv
af_iucv: fix recvmsg by replacing skb_pull() function
2013-04-08 17:16:57 -04:00
netfilter
netfilter: push reasm skb through instead of original frag skbs
2013-11-11 00:19:35 -05:00
netns
tcp_memcontrol: Remove the per netns control.
2013-10-21 18:43:02 -04:00
nfc
NFC: NCI: Modify NCI SPI to implement CS/INT handshake per the spec
2013-09-25 14:59:56 +02:00
phonet
sctp
sctp: Remove outqueue empty state
2014-01-02 17:22:48 -05:00
tc_act
act_api.h
net: Remove extern from include/net/ scheduling prototypes
2013-07-31 17:24:22 -07:00
addrconf.h
IPv6 NAT: Do not drop DNATed 6to4/6rd packets
2013-09-28 15:56:15 -04:00
af_ieee802154.h
af_rxrpc.h
af_rxrpc.h: Remove extern from function prototypes
2013-07-31 17:50:01 -07:00
af_unix.h
af_unix: improve STREAM behavior with fragmented memory
2013-08-10 01:16:44 -07:00
af_vsock.h
VSOCK: Move af_vsock.h and vsock_addr.h to include/net
2013-07-27 22:14:06 -07:00
ah.h
arp.h
arp/neighbour.h: Remove extern from function prototypes
2013-07-31 17:50:02 -07:00
atmclip.h
ax25.h
ax25.h: Remove extern from function prototypes
2013-07-31 17:50:02 -07:00
ax88796.h
busy_poll.h
net: add cpu_relax to busy poll loop
2013-08-28 17:45:48 -04:00
cfg80211-wext.h
cfg80211.h
cfg80211: export reg_initiator_name()
2013-10-28 15:05:27 +01:00
checksum.h
net: checksum: fix warning in skb_checksum
2013-11-04 15:27:08 -05:00
cipso_ipv4.h
net: fix cipso packet validation when !NETLABEL
2013-10-19 18:55:42 -04:00
cls_cgroup.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2013-09-05 14:54:29 -07:00
codel.h
net: codel: Avoid undefined behavior from signed overflow
2013-11-04 20:01:29 -05:00
compat.h
compat.h: Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
datalink.h
dcbevent.h
dcbevent.h: Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dcbnl.h
dn.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_dev.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_fib.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_neigh.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_nsp.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_route.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dsa.h
dsfield.h
ipv6: Optimize ipv6_change_dsfield().
2013-01-09 23:59:53 -08:00
dst.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-10-23 16:49:34 -04:00
dst_ops.h
esp.h
net: move pskb_put() to core code
2013-11-07 19:28:58 -05:00
ethoc.h
fib_rules.h
fib_rules.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
firewire.h
firewire net, ipv4 arp: Extend hardware address and remove driver-level packet inspection.
2013-03-26 12:32:13 -04:00
flow.h
flow.h/flow_keys.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
flow_keys.h
flow_dissector: factor out the ports extraction in skb_flow_get_ports
2013-10-03 15:36:37 -04:00
garp.h
garp.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
gen_stats.h
gen_stats.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
genetlink.h
genetlink: fix genl_set_err() group ID
2013-11-21 13:09:43 -05:00
gre.h
ipv4: generalize gre_handle_offloads
2013-10-19 19:36:18 -04:00
gro_cells.h
gro: Fix kcalloc argument order
2013-01-27 22:46:33 -05:00
icmp.h
icmp.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
ieee80211_radiotap.h
mac80211: add radiotap flag and handling for 5/10 MHz
2013-07-16 09:58:05 +03:00
ieee802154.h
ieee802154_netdev.h
ieee802154/nl-mac.c: make some MLME operations optional
2013-04-08 12:00:16 -04:00
if_inet6.h
ipv6: Remove privacy config option.
2013-10-28 20:07:50 -04:00
inet6_connection_sock.h
inet*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
inet6_hashtables.h
ipv6: split inet6_ehashfn to hash functions per compilation unit
2013-10-19 19:45:34 -04:00
inet_common.h
inet*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
inet_connection_sock.h
inet*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
inet_ecn.h
net: Correct comparisons and calculations using skb->tail and skb-transport_header
2013-05-28 23:49:07 -07:00
inet_frag.h
inet: remove old fragmentation hash initializing
2013-10-23 17:01:41 -04:00
inet_hashtables.h
tcp/dccp: remove twchain
2013-10-08 23:19:24 -04:00
inet_sock.h
inet: convert inet_ehash_secret and ipv6_hash_secret to net_get_random_once
2013-10-19 19:45:35 -04:00
inet_timewait_sock.h
netdev: inet_timewait_sock.h missing semi-colon when KMEMCHECK is enabled
2013-10-17 15:56:53 -04:00
inetpeer.h
inet*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
ip.h
inet: fix addr_len/msg->msg_namelen assignment in recv_error and rxpmtu functions
2013-11-23 14:46:23 -08:00
ip6_checksum.h
net: fix build errors if ipv6 is disabled
2013-10-09 13:04:03 -04:00
ip6_fib.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-11-04 13:48:30 -05:00
ip6_route.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-10-23 16:49:34 -04:00
ip6_tunnel.h
tunnels: harmonize cleanup done on skb on xmit path
2013-09-04 00:27:25 -04:00
ip_fib.h
ip*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
ip_tunnels.h
ipv4: generalize gre_handle_offloads
2013-10-19 19:36:18 -04:00
ip_vs.h
netfilter: push reasm skb through instead of original frag skbs
2013-11-11 00:19:35 -05:00
ipcomp.h
ipconfig.h
ipv6.h
xen-netback: fix fragment detection in checksum setup
2013-12-05 20:31:40 -05:00
ipx.h
ipx.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
iw_handler.h
iw_handler.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
lapb.h
lapb.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
lib80211.h
hostap: Don't use create_proc_read_entry()
2013-04-29 15:41:56 -04:00
llc.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_ac.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_ev.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_st.h
llc_conn.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_if.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_pdu.h
net: llc: fix order of evaluation in llc_conn_ac_inc_vr_by_1
2014-01-01 22:22:43 -05:00
llc_s_ac.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_s_ev.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_s_st.h
llc_sap.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
mac80211.h
mac80211: add ieee80211_tx_prepare_skb() helper function
2013-10-28 15:05:27 +01:00
mac802154.h
mac802154: correct a typo in ieee802154_alloc_device() prototype
2013-10-21 18:56:23 -04:00
mip6.h
mld.h
net: ipv6: mld: get rid of MLDV2_MRC and simplify calculation
2013-09-04 14:53:20 -04:00
mrp.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-10-01 17:06:14 -04:00
ndisc.h
ndisc.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
neighbour.h
arp/neighbour.h: Remove extern from function prototypes
2013-07-31 17:50:02 -07:00
net_namespace.h
netfilter: nf_tables: complete net namespace support
2013-10-14 18:00:59 +02:00
net_ratelimit.h
netdma.h
netevent.h
netevent/netlink.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
netlabel.h
netlink.h
netevent/netlink.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
netprio_cgroup.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2013-09-05 14:54:29 -07:00
netrom.h
netrom.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
nexthop.h
nl802154.h
p8022.h
p8022.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
ping.h
inet: fix addr_len/msg->msg_namelen assignment in recv_error and rxpmtu functions
2013-11-23 14:46:23 -08:00
pkt_cls.h
net: Remove extern from include/net/ scheduling prototypes
2013-07-31 17:24:22 -07:00
pkt_sched.h
qdisc: allow setting default queuing discipline
2013-08-31 00:32:32 -04:00
protocol.h
protocol.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
psnap.h
psnap.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
raw.h
raw/rawv6.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
rawv6.h
raw/rawv6.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
red.h
regulatory.h
regulatory: use RCU to protect last_request
2013-01-03 13:01:30 +01:00
request_sock.h
inet: includes a sock_common in request_sock
2013-10-10 00:08:07 -04:00
rose.h
rose.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
route.h
ipv4: introduce new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE
2013-11-05 21:52:27 -05:00
rtnetlink.h
rtnetlink.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
sch_generic.h
net_sched: add u64 rate to psched_ratecfg_precompute()
2013-09-20 14:41:02 -04:00
scm.h
scm.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
secure_seq.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-10-01 17:06:14 -04:00
slhc_vj.h
snmp.h
sock.h
tcp_memcontrol: Cleanup/fix cg_proto->memory_pressure handling.
2013-12-05 21:01:01 -05:00
stp.h
stp.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
tcp.h
tcp: properly handle stretch acks in slow start
2013-11-04 19:57:59 -05:00
tcp_memcontrol.h
tcp_memcontrol: Kill struct tcp_memcontrol
2013-10-21 18:43:02 -04:00
tcp_states.h
timewait_sock.h
transp_v6.h
transp_v6.h: style neatening
2013-06-04 16:43:42 -07:00
udp.h
udp: Remove unnecessary semicolon from do{}while (0) macro
2013-11-07 02:14:33 -05:00
udplite.h
udplite.h: Remove extern from function prototypes
2013-09-23 16:29:40 -04:00
vsock_addr.h
VSOCK: Move af_vsock.h and vsock_addr.h to include/net
2013-07-27 22:14:06 -07:00
vxlan.h
vxlan: Have the NIC drivers do less work for offloads
2013-10-29 02:39:13 -07:00
wext.h
wext.h: Remove extern from function prototypes
2013-09-23 16:29:40 -04:00
wimax.h
wimax.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
wpan-phy.h
x25.h
x25.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
x25device.h
xfrm.h
ipv6: Add a receive path hook for vti6 in xfrm6_mode_tunnel.
2013-10-09 13:16:36 +02:00