[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20181120.100130.224222181336676011.davem@davemloft.net>
Date:   Tue, 20 Nov 2018 10:01:30 -0800 (PST)
From:   David Miller <davem@...emloft.net>
To:     edumazet@...gle.com
Cc:     netdev@...r.kernel.org, eric.dumazet@...il.com
Subject: Re: [PATCH net-next] tcp: drop dst in tcp_add_backlog()
From: Eric Dumazet <edumazet@...gle.com>
Date: Mon, 19 Nov 2018 17:45:55 -0800
> Under stress, softirq rx handler often hits a socket owned by the user,
> and has to queue the packet into socket backlog.
> 
> When this happens, skb dst refcount is taken before we escape rcu
> protected region. This is done from __sk_add_backlog() calling
> skb_dst_force().
> 
> Consumer will have to perform the opposite costly operation.
> 
> AFAIK nothing in tcp stack requests the dst after skb was stored
> in the backlog. If this was the case, we would have had failures
> already since skb_dst_force() can end up clearing skb dst anyway.
> 
> Signed-off-by: Eric Dumazet <edumazet@...gle.com>
Hmmm, it seems to be used by connection completion code to setup the
socket cached rx dst, right?
For example tcp_finish_connect() --> icsk->icsk_af_ops->sk_rx_dst_set(sk, skb)
Powered by blists - more mailing lists
 
