[<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