[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1483740486.9712.41.camel@edumazet-glaptop3.roam.corp.google.com>
Date: Fri, 06 Jan 2017 14:08:06 -0800
From: Eric Dumazet <eric.dumazet@...il.com>
To: Jesper Dangaard Brouer <brouer@...hat.com>
Cc: netdev@...r.kernel.org
Subject: Re: [net-next PATCH] net: reduce cycles spend on ICMP replies that
gets rate limited
On Fri, 2017-01-06 at 11:40 -0800, Eric Dumazet wrote:
> On Fri, 2017-01-06 at 18:39 +0100, Jesper Dangaard Brouer wrote:
>
>
> > @@ -648,13 +668,17 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
> > }
> > }
> >
> > - icmp_param = kmalloc(sizeof(*icmp_param), GFP_ATOMIC);
> > - if (!icmp_param)
> > - return;
> > -
> > sk = icmp_xmit_lock(net);
> > if (!sk)
> > - goto out_free;
> > + goto out;
> > +
> > + /* Check global sysctl_icmp_msgs_per_sec ratelimit */
> > + if (!icmpv4_global_allow(net, type, code))
> > + goto out_unlock;
> > +
> > + icmp_param = kmalloc(sizeof(*icmp_param), GFP_ATOMIC);
> > + if (!icmp_param)
> > + goto out_unlock;
>
You could call icmp_xmit_lock() _after_ checking global limit perhaps.
That would remove one atomic op.
if (!icmpv4_global_allow(net, type, code))
goto out;
sk = icmp_xmit_lock(net);
if (!sk)
goto out;
Powered by blists - more mailing lists