net: core: introduce mini_Qdisc and eliminate usage of tp->q for clsact fastpath
In sch_handle_egress and sch_handle_ingress tp->q is used only in order to update stats. So stats and filter list are the only things that are needed in clsact qdisc fastpath processing. Introduce new mini_Qdisc struct to hold those items. Also, introduce a helper to swap the mini_Qdisc structures in case filter list head changes. This removes need for tp->q usage without added overhead. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
c7eb7d7230
commit
46209401f8
@@ -1559,6 +1559,8 @@ enum netdev_priv_flags {
|
||||
*
|
||||
* @rx_handler: handler for received packets
|
||||
* @rx_handler_data: XXX: need comments on this one
|
||||
* @miniq_ingress: ingress/clsact qdisc specific data for
|
||||
* ingress processing
|
||||
* @ingress_queue: XXX: need comments on this one
|
||||
* @broadcast: hw bcast address
|
||||
*
|
||||
@@ -1576,7 +1578,8 @@ enum netdev_priv_flags {
|
||||
* @tx_global_lock: XXX: need comments on this one
|
||||
*
|
||||
* @xps_maps: XXX: need comments on this one
|
||||
*
|
||||
* @miniq_egress: clsact qdisc specific data for
|
||||
* egress processing
|
||||
* @watchdog_timeo: Represents the timeout that is used by
|
||||
* the watchdog (see dev_watchdog())
|
||||
* @watchdog_timer: List of timers
|
||||
@@ -1795,7 +1798,7 @@ struct net_device {
|
||||
void __rcu *rx_handler_data;
|
||||
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
struct tcf_proto __rcu *ingress_cl_list;
|
||||
struct mini_Qdisc __rcu *miniq_ingress;
|
||||
#endif
|
||||
struct netdev_queue __rcu *ingress_queue;
|
||||
#ifdef CONFIG_NETFILTER_INGRESS
|
||||
@@ -1826,7 +1829,7 @@ struct net_device {
|
||||
struct xps_dev_maps __rcu *xps_maps;
|
||||
#endif
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
struct tcf_proto __rcu *egress_cl_list;
|
||||
struct mini_Qdisc __rcu *miniq_egress;
|
||||
#endif
|
||||
|
||||
/* These may be needed for future network-power-down code. */
|
||||
|
Reference in New Issue
Block a user