Eric Dumazet
1b5c5493e3
net_sched: add the ability to defer skb freeing
...
qdisc are changed under RTNL protection and often
while blocking BH and root qdisc spinlock.
When lots of skbs need to be dropped, we free
them under these locks causing TX/RX freezes,
and more generally latency spikes.
This commit adds rtnl_kfree_skbs(), used to queue
skbs for deferred freeing.
Actual freeing happens right after RTNL is released,
with appropriate scheduling points.
rtnl_qdisc_drop() can also be used in place
of disc_drop() when RTNL is held.
qdisc_reset_queue() and __qdisc_reset_queue() get
the new behavior, so standard qdiscs like pfifo, pfifo_fast...
have their ->reset() method automatically handled.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-06-15 14:08:34 -07:00
..
9p
bluetooth
Bluetooth: Add defines for SPI and I2C
2016-04-22 15:02:21 +02:00
caif
irda
iucv
s390/iucv: do not use arrays as argument
2015-09-21 16:03:04 -07:00
netfilter
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
2016-06-01 17:54:19 -07:00
netns
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
2016-06-01 17:54:19 -07:00
nfc
nfc: nci: Add nci_nfcc_loopback to the nci core
2016-05-04 01:48:16 +02:00
phonet
sock: struct proto hash function may error
2016-02-11 03:54:14 -05:00
sctp
sctp: Add GSO support
2016-06-03 19:37:21 -04:00
tc_act
net sched: indentation and other OCD stylistic fixes
2016-06-07 15:53:54 -07:00
6lowpan.h
6lowpan: move mac802154 header
2016-04-13 10:41:10 +02:00
act_api.h
net_sched: make tcf_hash_check() boolean
2016-06-15 12:43:35 -07:00
addrconf.h
inet: refactor inet[6]_lookup functions to take skb
2016-02-11 03:54:14 -05:00
af_ieee802154.h
ieee802154: af_ieee802154: fix typo in comment.
2015-09-17 13:20:05 +02:00
af_rxrpc.h
rxrpc: Differentiate local and remote abort codes in structs
2016-04-11 15:34:40 -04:00
af_unix.h
unix: correctly track in-flight fds in sending process user_struct
2016-02-08 10:30:42 -05:00
af_vsock.h
Revert "Merge branch 'vsock-virtio'"
2015-12-08 21:55:49 -05:00
ah.h
arp.h
atmclip.h
ax25.h
ax88796.h
bond_3ad.h
bonding: 3ad: apply ad_actor settings changes immediately
2016-02-09 04:45:49 -05:00
bond_alb.h
bond_options.h
bonding: convert num_grat_arp to the new bonding option API
2015-07-27 01:05:24 -07:00
bonding.h
bonding: fix bond_get_stats()
2016-03-18 23:14:15 -04:00
busy_poll.h
net: un-inline sk_busy_loop()
2015-11-18 16:17:38 -05:00
cfg80211-wext.h
cfg80211.h
cfg80211: Advertise extended capabilities per interface type to userspace
2016-05-31 15:23:13 +02:00
cfg802154.h
nl802154: add support for security layer
2015-09-30 13:16:44 +02:00
checksum.h
csum: Update csum_block_add to use rotate instead of byteswap
2016-03-13 15:01:00 -04:00
cipso_ipv4.h
cls_cgroup.h
cls_cgroup: get sk_classid only from full sockets
2016-04-19 20:09:25 -04:00
codel.h
codel: split into multiple files
2016-04-25 16:44:27 -04:00
codel_impl.h
codel: split into multiple files
2016-04-25 16:44:27 -04:00
codel_qdisc.h
codel: split into multiple files
2016-04-25 16:44:27 -04:00
compat.h
packet: compat support for sock_fprog
2016-06-09 23:41:03 -07:00
datalink.h
dcbevent.h
dcbnl.h
devlink.h
devlink: fix sb register stub in case devlink is disabled
2016-04-15 12:57:29 -04:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
netfilter: Pass net into okfn
2015-09-17 17:18:37 -07:00
dn_nsp.h
dn_route.h
dsa.h
net: dsa: Initialize CPU port ethtool ops per tree
2016-06-08 11:23:42 -07:00
dsfield.h
dst.h
route: move lwtunnel state to a single place
2016-04-25 16:20:09 -04:00
dst_cache.h
net: add dst_cache support
2016-02-16 20:21:48 -05:00
dst_metadata.h
ip_tunnel: add support for setting flow label via collect metadata
2016-03-11 15:14:26 -05:00
dst_ops.h
ipv4, ipv6: Pass net into __ip_local_out and __ip6_local_out
2015-10-08 04:27:02 -07:00
esp.h
ethoc.h
net/ethoc: support big-endian register layout
2015-09-23 15:33:15 -07:00
fib_rules.h
net: Add l3mdev rule
2016-06-08 11:36:02 -07:00
firewire.h
flow.h
ipv6, trace: fix tos reporting on fib6_table_lookup
2016-03-20 13:44:34 -04:00
flow_dissector.h
net/flow_dissector: Make dissector_uses_key() and skb_flow_dissector_target() public
2016-03-10 16:24:02 -05:00
flowcache.h
fou.h
fou: Add encap ops for IPv6 tunnels
2016-05-20 18:03:16 -04:00
fq.h
fq: add fair queuing framework
2016-04-25 16:45:53 -04:00
fq_impl.h
fq: split out backlog update logic
2016-04-28 17:03:38 -04:00
garp.h
gen_stats.h
net: sched: do not acquire qdisc spinlock in qdisc/class stats dump
2016-06-07 16:37:14 -07:00
genetlink.h
Revert "genl: Add genlmsg_new_unicast() for unicast message allocation"
2016-02-18 11:42:19 -05:00
geneve.h
geneve: break dependency with netdev drivers
2016-04-21 15:35:44 -04:00
gre.h
gre: Fix wrong tpi->proto in WCCP
2016-05-12 16:53:58 -04:00
gro_cells.h
gro_cells: remove spinlock protecting receive queues
2015-08-31 15:17:17 -07:00
gtp.h
gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)
2016-05-10 12:25:04 -04:00
gue.h
hwbm.h
net: add a hardware buffer management helper API
2016-03-14 12:19:46 -04:00
icmp.h
net: snmp: kill STATS_BH macros
2016-04-27 22:48:25 -04:00
ieee80211_radiotap.h
ieee802154_netdev.h
mac802154: constify ieee802154_llsec_ops structure
2016-01-04 20:40:41 +01:00
if_inet6.h
ila.h
ila: Add generic ILA translation facility
2015-12-15 23:25:20 -05:00
inet6_connection_sock.h
ipv6: remove unused in6_addr struct
2016-03-22 15:45:44 -04:00
inet6_hashtables.h
tcp/dccp: do not touch listener sk_refcnt under synflood
2016-04-04 22:11:20 -04:00
inet_common.h
ip4ip6: Support for GSO/GRO
2016-05-20 18:03:17 -04:00
inet_connection_sock.h
tcp/dccp: fix another race at listener dismantle
2016-02-18 11:35:51 -05:00
inet_ecn.h
ipv6: update skb->csum when CE mark is propagated
2016-01-15 15:07:23 -05:00
inet_frag.h
ipv4: namespacify ip fragment max dist sysctl knob
2016-02-16 20:42:54 -05:00
inet_hashtables.h
tcp/dccp: do not touch listener sk_refcnt under synflood
2016-04-04 22:11:20 -04:00
inet_sock.h
net: Allow accepted sockets to be bound to l3mdev domain
2015-12-18 14:43:38 -05:00
inet_timewait_sock.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-10-20 06:08:27 -07:00
inetpeer.h
inet: tcp: fix inetpeer_set_addr_v4()
2015-12-16 00:14:12 -05:00
ip.h
net: original ingress device index in PKTINFO
2016-05-11 19:31:40 -04:00
ip6_checksum.h
ipv6: Pass proto to csum_ipv6_magic as __u8 instead of unsigned short
2016-03-13 23:55:13 -04:00
ip6_fib.h
ipv6: Check rt->dst.from for the DST_NOCACHE route
2015-11-15 17:12:37 -05:00
ip6_route.h
net: vrf: Handle ipv6 multicast and link-local addresses
2016-06-15 12:34:34 -07:00
ip6_tunnel.h
ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions
2016-05-29 22:24:21 -07:00
ip_fib.h
route: check and remove route cache when we get route
2016-02-18 11:31:36 -05:00
ip_tunnels.h
net: Cleanup encap items in ip_tunnels.h
2016-05-20 18:03:16 -04:00
ip_vs.h
ipvs: update real-server binding of outgoing connections in SIP-pe
2016-06-06 09:47:25 +09:00
ipcomp.h
ipconfig.h
ipv6.h
ipv6: add new struct ipcm6_cookie
2016-05-03 16:08:14 -04:00
ipx.h
iw_handler.h
cfg80211/wext: fix message ordering
2016-01-29 17:13:43 +01:00
kcm.h
kcm: mark helper functions inline
2016-03-10 14:42:03 -05:00
l3mdev.h
net: l3mdev: Remove const from flowi6 arg to get_rt6_dst
2016-06-15 12:34:34 -07:00
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
lwtunnel.h
lwtunnel: autoload of lwt modules
2016-02-21 22:00:28 -05:00
mac80211.h
mac80211: implement codel on fair queuing flows
2016-06-09 11:45:10 +02:00
mac802154.h
ieee802154: add short address helpers
2016-04-13 10:41:08 +02:00
mip6.h
mld.h
mpls.h
mpls_iptunnel.h
mpls: multipath route support
2015-10-23 06:26:42 -07:00
mrp.h
ndisc.h
Revert "ipv6: ndisc: inherit metadata dst when creating ndisc requests"
2015-12-01 15:07:59 -05:00
neighbour.h
net: add explicit logging and stat for neighbour table overflow
2015-08-10 13:46:21 -07:00
net_namespace.h
netfilter: cttimeout: add netns support
2015-12-14 12:48:58 +01:00
net_ratelimit.h
netevent.h
netlabel.h
netlink.h
netlink: kill nla_put_u64()
2016-05-16 13:46:23 -04:00
netprio_cgroup.h
net: wrap sock->sk_cgrp_prioidx and ->sk_classid inside a struct
2015-12-08 22:02:33 -05:00
netrom.h
nexthop.h
nl802154.h
libnl: nla_put_le64(): align on a 64-bit area
2016-04-23 20:13:24 -04:00
p8022.h
ping.h
net: ping: make ping_v6_sendmsg static
2016-03-23 22:09:58 -04:00
pkt_cls.h
net: sched: fix tc_should_offload for specific clsact classes
2016-06-07 16:59:53 -07:00
pkt_sched.h
net_sched: remove generic throttled management
2016-06-10 23:58:21 -07:00
protocol.h
udp: Remove udp_offloads
2016-04-07 16:53:30 -04:00
psnap.h
raw.h
sock: struct proto hash function may error
2016-02-11 03:54:14 -05:00
rawv6.h
red.h
regulatory.h
request_sock.h
inet: reqsk_alloc() needs to take care of dead listeners
2016-04-04 22:11:19 -04:00
rose.h
route.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2016-04-23 18:51:33 -04:00
rtnetlink.h
net: rtnetlink: add linkxstats callbacks and attribute
2016-05-02 22:27:06 -04:00
sch_generic.h
net_sched: add the ability to defer skb freeing
2016-06-15 14:08:34 -07:00
scm.h
unix: correctly track in-flight fds in sending process user_struct
2016-02-08 10:30:42 -05:00
secure_seq.h
slhc_vj.h
snmp.h
net: snmp: fix 64bit stats on 32bit arches
2016-04-28 11:49:45 -04:00
sock.h
net: sock: move ->sk_shutdown out of bitfields.
2016-05-20 18:05:32 -04:00
sock_reuseport.h
soreuseport: fix NULL ptr dereference SO_REUSEPORT after bind
2016-01-19 14:44:23 -05:00
Space.h
stp.h
switchdev.h
switchdev: pass pointer to fib_info instead of copy
2016-05-17 13:58:49 -04:00
tcp.h
tcp: add in_flight to tcp_skb_cb
2016-06-10 23:07:49 -07:00
tcp_states.h
timewait_sock.h
inet: remove BUG_ON() in twsk_destructor()
2015-07-09 15:12:20 -07:00
transp_v6.h
ipv6: add new struct ipcm6_cookie
2016-05-03 16:08:14 -04:00
tso.h
net: tso: add support for IPv6
2015-10-26 22:24:22 -07:00
udp.h
udp: avoid csum_partial() for validated skb
2016-06-01 17:41:36 -07:00
udp_tunnel.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2016-05-09 15:59:24 -04:00
udplite.h
vsock_addr.h
vxlan.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2016-05-04 00:52:29 -04:00
wext.h
wimax.h
x25.h
x25device.h
xfrm.h
net: xfrm: kill XFRM_INC_STATS_BH()
2016-04-27 22:48:23 -04:00