Subject: Re: [RFC net-next] netpoll: use static branch

From: Cong Wang <[email-masked]>
Date: Wed, 19 Sep 2012 12:50:10 +0800

On Tue, 2012-09-18 at 14:10 -0700, Stephen Hemminger wrote:
> This is an attempt to optimize netpoll when not used.
> 
> Since distro's enable everything and netpoll is only occasionally
> used, improve performance by getting netpoll condition check
> out of the Rx fastpath.
> 
> Compile tested only, I have no real use for netpoll.
> 
> Signed-off-by: Stephen Hemminger <[email-masked]>
> 
> 
> ---
>  include/linux/netpoll.h |   28 ++++++++++++++++++++--------
>  net/core/netpoll.c      |    8 +++++++-
>  2 files changed, 27 insertions(+), 9 deletions(-)
> 
> --- a/include/linux/netpoll.h	2012-09-18 13:25:15.575750004 -0700
> +++ b/include/linux/netpoll.h	2012-09-18 13:29:16.245323347 -0700
> @@ -66,10 +66,16 @@ static inline void netpoll_send_skb(stru
>  
> 
>  #ifdef CONFIG_NETPOLL
> +extern struct static_key netpoll_needed;
> +
>  static inline bool netpoll_rx_on(struct sk_buff *skb)
>  {
> -	struct netpoll_info *npinfo = rcu_dereference_bh(skb->dev->npinfo);
> +	struct netpoll_info *npinfo;
> +
> +	if (static_key_true(&netpoll_needed))
> +		return false;
>  

I think we should use static_key_false() here, as netpoll is an
"unlikely" code path.

Using static branch is a good idea though.

Thanks.