WANG Cong
143976ce99
net_sched: remove tc class reference counting
...
For TC classes, their ->get() and ->put() are always paired, and the
reference counting is completely useless, because:
1) For class modification and dumping paths, we already hold RTNL lock,
so all of these ->get(),->change(),->put() are atomic.
2) For filter bindiing/unbinding, we use other reference counter than
this one, and they should have RTNL lock too.
3) For ->qlen_notify(), it is special because it is called on ->enqueue()
path, but we already hold qdisc tree lock there, and we hold this
tree lock when graft or delete the class too, so it should not be gone
or changed until we release the tree lock.
Therefore, this patch removes ->get() and ->put(), but:
1) Adds a new ->find() to find the pointer to a class by classid, no
refcnt.
2) Move the original class destroy upon the last refcnt into ->delete(),
right after releasing tree lock. This is fine because the class is
already removed from hash when holding the lock.
For those who also use ->put() as ->unbind(), just rename them to reflect
this change.
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-08-25 17:19:10 -07:00
..
9p
9p: Implement show_options
2017-07-11 06:08:58 -04:00
bluetooth
Bluetooth: Set LE Default PHY preferences
2017-05-18 13:52:49 +02:00
caif
irda
scripts/spelling.txt: add "overide" pattern and fix typo instances
2017-03-09 17:01:09 -08:00
iucv
netfilter
net: convert nf_bridge_info.use from atomic_t to refcount_t
2017-07-01 07:39:07 -07:00
netns
ipv6: Add sysctl for per namespace flow label reflection
2017-08-24 18:05:43 -07:00
nfc
NFC: Add nfc_dbg() macro
2017-04-05 10:15:20 +02:00
phonet
sctp
sctp: fix some indents in sm_make_chunk.c
2017-08-11 10:02:44 -07:00
tc_act
net: sched: add couple of goto_chain helpers
2017-08-23 20:44:32 -07:00
6lowpan.h
6lowpan: Fix IID format for Bluetooth
2017-04-12 22:02:36 +02:00
act_api.h
net: sched: add termination action to allow goto chain
2017-05-17 15:22:13 -04:00
addrconf.h
ipv6: fix NULL dereference in ip6_route_dev_notify()
2017-08-15 17:06:34 -07:00
af_ieee802154.h
af_rxrpc.h
rxrpc: Provide a cmsg to specify the amount of Tx data for a call
2017-06-07 17:15:46 +01:00
af_unix.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-07-21 03:38:43 +01:00
af_vsock.h
VSOCK: Add vsockmon tap functions
2017-04-24 12:35:56 -04:00
ah.h
arp.h
net: convert neighbour.refcnt from atomic_t to refcount_t
2017-07-01 07:39:07 -07:00
atmclip.h
ax25.h
net, ax25: convert ax25_cb.refcount from atomic_t to refcount_t
2017-07-04 22:35:19 +01:00
ax88796.h
bond_3ad.h
bond_alb.h
bond_options.h
bonding: Prevent duplicate userspace notification
2017-05-27 18:51:41 -04:00
bonding.h
bonding: require speed/duplex only for 802.3ad, alb and tlb
2017-08-11 14:21:42 -07:00
busy_poll.h
net: fix compilation when busy poll is not enabled
2017-08-11 14:59:24 -07:00
calipso.h
net, calipso: convert calipso_doi.refcount from atomic_t to refcount_t
2017-07-04 22:35:16 +01:00
cfg80211-wext.h
cfg80211.h
nl80211: add authorized flag to ROAM event
2017-06-13 11:04:37 +02:00
cfg802154.h
checksum.h
csum: eliminate sparse warning in remcsum_unadjust()
2017-01-20 12:12:13 -05:00
cipso_ipv4.h
net, ipv4: convert cipso_v4_doi.refcount from atomic_t to refcount_t
2017-07-04 01:29:04 -07:00
cls_cgroup.h
codel.h
codel_impl.h
codel_qdisc.h
compat.h
datalink.h
dcbevent.h
dcbnl.h
devlink.h
devlink: Fix devlink_dpipe_table_register() stub signature.
2017-08-24 18:10:46 -07:00
dn.h
dn_dev.h
dn_fib.h
net, decnet: convert dn_fib_info.fib_clntref from atomic_t to refcount_t
2017-07-04 22:35:15 +01:00
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsa: remove unused net_device arg from handlers
2017-08-21 10:39:11 -07:00
dsfield.h
dst.h
ipv4: convert dst_metrics.refcnt from atomic_t to refcount_t
2017-08-18 15:14:07 -07:00
dst_cache.h
dst_metadata.h
net: store port/representator id in metadata_dst
2017-06-25 11:42:01 -04:00
dst_ops.h
net: add confirm_neigh method to dst_ops
2017-02-07 13:07:46 -05:00
erspan.h
gre: introduce native tunnel support for ERSPAN
2017-08-22 14:29:30 -07:00
esp.h
esp6: Reorganize esp_output
2017-04-14 10:06:42 +02:00
ethoc.h
fib_notifier.h
net: core: Make the FIB notification chain generic
2017-08-03 15:35:59 -07:00
fib_rules.h
net: fib_rules: Implement notification logic in core
2017-08-03 15:35:59 -07:00
firewire.h
flow.h
net: Extend struct flowi6 with multipath hash
2017-08-24 18:21:17 -07:00
flow_dissector.h
net/flow_dissector: add support for dissection of misc ip header fields
2017-06-04 18:12:23 -04:00
fou.h
fq.h
fq.h: Port memory limit mechanism from fq_codel
2016-09-30 13:29:21 +02:00
fq_impl.h
fq.h: Port memory limit mechanism from fq_codel
2016-09-30 13:29:21 +02:00
garp.h
gen_stats.h
net_sched: gen_estimator: complete rewrite of rate estimators
2016-12-05 15:21:59 -05:00
genetlink.h
genetlink: remove ops_list from genetlink header.
2017-06-05 10:54:55 -04:00
geneve.h
gre.h
gro_cells.h
gro_cells: move to net/core/gro_cells.c
2017-02-08 14:38:18 -05:00
gtp.h
gue.h
hwbm.h
icmp.h
ieee80211_radiotap.h
wireless: radiotap: rewrite the radiotap header file
2017-01-25 16:00:33 +01:00
ieee802154_netdev.h
if_inet6.h
net, ipv6: convert ifacaddr6.aca_refcnt from atomic_t to refcount_t
2017-07-04 01:29:04 -07:00
ife.h
net: Introduce ife encapsulation module
2017-02-03 15:16:45 -05:00
ila.h
inet6_connection_sock.h
inet: drop ->bind_conflict
2017-01-18 13:04:28 -05:00
inet6_hashtables.h
net: ipv6: add second dif to inet6 socket lookups
2017-08-07 11:39:22 -07:00
inet_common.h
net: Work around lockdep limitation in sockets that use sockets
2017-03-09 18:23:27 -08:00
inet_connection_sock.h
tcp: ULP infrastructure
2017-06-15 12:12:40 -04:00
inet_ecn.h
inet_frag.h
Merge branch 'for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2017-07-06 08:59:41 -07:00
inet_hashtables.h
net: ipv4: add second dif to inet socket lookups
2017-08-07 11:39:21 -07:00
inet_sock.h
net/tcp-fastopen: Add new API support
2017-01-25 14:04:38 -05:00
inet_timewait_sock.h
ipv4: Namespaceify tcp_tw_recycle and tcp_max_tw_buckets knob
2016-12-29 11:38:31 -05:00
inetpeer.h
inetpeer: remove AVL implementation in favor of RB tree
2017-07-17 08:59:01 -07:00
ip.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-08-21 17:06:42 -07:00
ip6_checksum.h
ip6_fib.h
ipv6: fib: Provide offload indication using nexthop flags
2017-08-15 17:05:03 -07:00
ip6_route.h
ipv6: Compute multipath hash for ICMP errors from offending packet
2017-08-24 18:21:17 -07:00
ip6_tunnel.h
ip6_tunnel: Allow policy-based routing through tunnels
2017-04-21 13:21:30 -04:00
ip_fib.h
net: fib_rules: Implement notification logic in core
2017-08-03 15:35:59 -07:00
ip_tunnels.h
gre: introduce native tunnel support for ERSPAN
2017-08-22 14:29:30 -07:00
ip_vs.h
ipvs: remove unused function ip_vs_set_state_timeout
2017-04-28 12:00:10 +02:00
ipcomp.h
ipconfig.h
ipv6.h
net, ipv6: convert ipv6_txoptions.refcnt from atomic_t to refcount_t
2017-07-04 01:29:03 -07:00
ipx.h
net, ipx: convert ipx_route.refcnt from atomic_t to refcount_t
2017-07-04 22:35:17 +01:00
iw_handler.h
wext: uninline stream addition functions
2017-01-13 09:38:42 +01:00
kcm.h
l3mdev.h
net: ipv4: Do not drop to make_route if oif is l3mdev
2016-10-13 12:05:26 -04:00
lapb.h
net, lapb: convert lapb_cb.refcnt from atomic_t to refcount_t
2017-07-04 22:35:16 +01:00
lib80211.h
llc.h
net, llc: convert llc_sap.refcnt from atomic_t to refcount_t
2017-07-04 22:35:15 +01:00
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
net: add extack arg to lwtunnel build state
2017-05-30 11:55:32 -04:00
mac80211.h
mac80211: add api to start ba session timer expired flow
2017-08-09 09:49:42 +03:00
mac802154.h
mip6.h
mld.h
mpls.h
openvswitch: use mpls_hdr
2016-10-03 02:00:22 -04:00
mpls_iptunnel.h
net: mpls: Increase max number of labels for lwt encap
2017-04-01 20:21:44 -07:00
mrp.h
ncsi.h
net/ncsi: Introduce ncsi_stop_dev()
2016-10-04 02:11:51 -04:00
ndisc.h
net: convert neighbour.refcnt from atomic_t to refcount_t
2017-07-01 07:39:07 -07:00
neighbour.h
Now that IPC and other changes have landed, enable manual markings for
2017-07-19 08:55:18 -07:00
net_namespace.h
net: core: Make the FIB notification chain generic
2017-08-03 15:35:59 -07:00
net_ratelimit.h
netevent.h
netlabel.h
net: convert netlbl_lsm_cache.refcount from atomic_t to refcount_t
2017-07-01 07:39:09 -07:00
netlink.h
net netlink: Add new type NLA_BITFIELD32
2017-07-30 19:28:08 -07:00
netprio_cgroup.h
netrom.h
net, netrom: convert nr_node.refcount from atomic_t to refcount_t
2017-07-04 22:35:17 +01:00
nexthop.h
nl802154.h
p8022.h
ping.h
pkt_cls.h
net: sched: remove cops->tcf_cl_offload
2017-08-11 13:47:01 -07:00
pkt_sched.h
net: sched: Add helpers to identify classids
2017-08-11 13:47:00 -07:00
pptp.h
protocol.h
net: Add sysctl to toggle early demux for tcp and udp
2017-03-24 13:17:07 -07:00
psample.h
net: Introduce psample, a new genetlink channel for packet sampling
2017-01-24 13:44:28 -05:00
psnap.h
raw.h
net: ipv4: add second dif to raw socket lookups
2017-08-07 11:39:21 -07:00
rawv6.h
net: ipv6: add second dif to raw socket lookups
2017-08-07 11:39:22 -07:00
red.h
ktime: Get rid of the union
2016-12-25 17:21:22 +01:00
regulatory.h
request_sock.h
net: convert sock.sk_refcnt from atomic_t to refcount_t
2017-07-01 07:39:08 -07:00
rose.h
route.h
ipv4: call dst_hold_safe() properly
2017-06-17 22:54:00 -04:00
rtnetlink.h
rtnetlink: add RTNL_FLAG_DOIT_UNLOCKED
2017-08-09 16:57:38 -07:00
sch_generic.h
net_sched: remove tc class reference counting
2017-08-25 17:19:10 -07:00
scm.h
sched/headers: Prepare to remove <linux/cred.h> inclusion from <linux/sched.h>
2017-03-02 08:42:31 +01:00
secure_seq.h
tcp: Namespaceify sysctl_tcp_timestamps
2017-06-08 10:53:29 -04:00
seg6.h
ipv6: sr: add support for ip4ip6 encapsulation
2017-08-25 17:10:23 -07:00
seg6_hmac.h
ipv6: sr: add core files for SR HMAC support
2016-11-09 20:40:06 -05:00
slhc_vj.h
smc.h
smc: netlink interface for SMC sockets
2017-01-09 16:07:41 -05:00
snmp.h
sock.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-08-21 17:06:42 -07:00
sock_reuseport.h
Space.h
stp.h
strparser.h
strparser: initialize all callbacks
2017-08-24 21:57:50 -07:00
switchdev.h
net: switchdev: Remove bridge bypass support from switchdev
2017-08-07 14:48:48 -07:00
tcp.h
tcp: Extend SOF_TIMESTAMPING_RX_SOFTWARE to TCP recvmsg
2017-08-23 20:30:47 -07:00
tcp_states.h
timewait_sock.h
tls.h
tls: kernel TLS support
2017-06-15 12:12:40 -04:00
transp_v6.h
tso.h
net: define the TSO header size in net/tso.h
2017-08-23 20:42:09 -07:00
udp.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-08-15 20:23:23 -07:00
udp_tunnel.h
net: add infrastructure to un-offload UDP tunnel port
2017-07-24 13:52:59 -07:00
udplite.h
udp: use a separate rx queue for packet reception
2017-05-16 15:41:29 -04:00
vsock_addr.h
vxlan.h
net, vxlan: convert vxlan_sock.refcnt from atomic_t to refcount_t
2017-07-04 22:35:15 +01:00
wext.h
dev_ioctl: copy only the smaller struct iwreq for wext
2017-06-14 13:52:44 +02:00
wimax.h
x25.h
net, x25: convert x25_neigh.refcnt from atomic_t to refcount_t
2017-07-04 22:35:18 +01:00
x25device.h
xfrm.h
net: xfrm: support setting an output mark.
2017-08-11 07:03:00 +02:00