From: Xin Long <lucien.xin@gmail.com> To: network dev <netdev@vger.kernel.org>, linux-sctp@vger.kernel.org Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>, Neil Horman <nhorman@tuxdriver.com>, Michael Tuexen <tuexen@fh-muenster.de>, davem@davemloft.net, gnault@redhat.com, pabeni@redhat.com, willemdebruijn.kernel@gmail.com Subject: [PATCHv4 net-next 11/16] sctp: call sk_setup_caps in sctp_packet_transmit instead Date: Mon, 19 Oct 2020 12:25:28 +0000 [thread overview] Message-ID: <e8d627d45c604460c57959a124b21aaeddfb3808.1603110316.git.lucien.xin@gmail.com> (raw) In-Reply-To: <8547ef8c7056072bdeca8f5e9eb0d7fec5cdb210.1603110316.git.lucien.xin@gmail.com> sk_setup_caps() was originally called in Commit 90017accff61 ("sctp: Add GSO support"), as: "We have to refresh this in case we are xmiting to more than one transport at a time" This actually happens in the loop of sctp_outq_flush_transports(), and it shouldn't be tied to gso, so move it out of gso part and before sctp_packet_pack(). Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/output.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/sctp/output.c b/net/sctp/output.c index 1441eaf..fb16500 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -508,12 +508,6 @@ static int sctp_packet_pack(struct sctp_packet *packet, sizeof(struct inet6_skb_parm))); skb_shinfo(head)->gso_segs = pkt_count; skb_shinfo(head)->gso_size = GSO_BY_FRAGS; - rcu_read_lock(); - if (skb_dst(head) != tp->dst) { - dst_hold(tp->dst); - sk_setup_caps(sk, tp->dst); - } - rcu_read_unlock(); goto chksum; } @@ -593,6 +587,13 @@ int sctp_packet_transmit(struct sctp_packet *packet, gfp_t gfp) } skb_dst_set(head, dst); + rcu_read_lock(); + if (__sk_dst_get(sk) != tp->dst) { + dst_hold(tp->dst); + sk_setup_caps(sk, tp->dst); + } + rcu_read_unlock(); + /* pack up chunks */ pkt_count = sctp_packet_pack(packet, head, gso, gfp); if (!pkt_count) { -- 2.1.0
WARNING: multiple messages have this Message-ID (diff)
From: Xin Long <lucien.xin@gmail.com> To: network dev <netdev@vger.kernel.org>, linux-sctp@vger.kernel.org Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>, Neil Horman <nhorman@tuxdriver.com>, Michael Tuexen <tuexen@fh-muenster.de>, davem@davemloft.net, gnault@redhat.com, pabeni@redhat.com, willemdebruijn.kernel@gmail.com Subject: [PATCHv4 net-next 11/16] sctp: call sk_setup_caps in sctp_packet_transmit instead Date: Mon, 19 Oct 2020 20:25:28 +0800 [thread overview] Message-ID: <e8d627d45c604460c57959a124b21aaeddfb3808.1603110316.git.lucien.xin@gmail.com> (raw) Message-ID: <20201019122528.ghy-KmbElscNfETgT7e2ScdpfrOvg6X74Dw4NxXyU0I@z> (raw) In-Reply-To: <8547ef8c7056072bdeca8f5e9eb0d7fec5cdb210.1603110316.git.lucien.xin@gmail.com> In-Reply-To: <cover.1603110316.git.lucien.xin@gmail.com> sk_setup_caps() was originally called in Commit 90017accff61 ("sctp: Add GSO support"), as: "We have to refresh this in case we are xmiting to more than one transport at a time" This actually happens in the loop of sctp_outq_flush_transports(), and it shouldn't be tied to gso, so move it out of gso part and before sctp_packet_pack(). Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/output.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/sctp/output.c b/net/sctp/output.c index 1441eaf..fb16500 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -508,12 +508,6 @@ static int sctp_packet_pack(struct sctp_packet *packet, sizeof(struct inet6_skb_parm))); skb_shinfo(head)->gso_segs = pkt_count; skb_shinfo(head)->gso_size = GSO_BY_FRAGS; - rcu_read_lock(); - if (skb_dst(head) != tp->dst) { - dst_hold(tp->dst); - sk_setup_caps(sk, tp->dst); - } - rcu_read_unlock(); goto chksum; } @@ -593,6 +587,13 @@ int sctp_packet_transmit(struct sctp_packet *packet, gfp_t gfp) } skb_dst_set(head, dst); + rcu_read_lock(); + if (__sk_dst_get(sk) != tp->dst) { + dst_hold(tp->dst); + sk_setup_caps(sk, tp->dst); + } + rcu_read_unlock(); + /* pack up chunks */ pkt_count = sctp_packet_pack(packet, head, gso, gfp); if (!pkt_count) { -- 2.1.0
next prev parent reply other threads:[~2020-10-19 12:25 UTC|newest] Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-19 12:25 [PATCHv4 net-next 00/16] sctp: Implement RFC6951: UDP Encapsulation of SCTP Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 01/16] udp: check udp sock encap_type in __udp_lib_err Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 02/16] udp6: move the mss check after udp gso tunnel processing Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 03/16] udp: support sctp over udp in skb_udp_tunnel_segment Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 04/16] sctp: create udp4 sock and add its encap_rcv Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 05/16] sctp: create udp6 sock and set " Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 06/16] sctp: add encap_err_lookup for udp encap socks Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 07/16] sctp: add encap_port for netns sock asoc and transport Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 08/16] sctp: add SCTP_REMOTE_UDP_ENCAPS_PORT sockopt Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 09/16] sctp: allow changing transport encap_port by peer packets Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 10/16] sctp: add udphdr to overhead when udp_port is set Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` Xin Long [this message] 2020-10-19 12:25 ` [PATCHv4 net-next 11/16] sctp: call sk_setup_caps in sctp_packet_transmit instead Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 12/16] sctp: support for sending packet over udp4 sock Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 13/16] sctp: support for sending packet over udp6 sock Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 14/16] sctp: add the error cause for new encapsulation port restart Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 15/16] sctp: handle the init chunk matching an existing asoc Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 12:25 ` [PATCHv4 net-next 16/16] sctp: enable udp tunneling socks Xin Long 2020-10-19 12:25 ` Xin Long 2020-10-19 22:15 ` Marcelo Ricardo Leitner 2020-10-19 22:15 ` Marcelo Ricardo Leitner 2020-10-19 22:29 ` Marcelo Ricardo Leitner 2020-10-19 22:29 ` Marcelo Ricardo Leitner 2020-10-20 9:12 ` Xin Long 2020-10-20 9:12 ` Xin Long 2020-10-20 21:11 ` Marcelo Ricardo Leitner 2020-10-20 21:11 ` Marcelo Ricardo Leitner 2020-10-20 21:15 ` Michael Tuexen 2020-10-20 21:15 ` Michael Tuexen 2020-10-20 21:23 ` Marcelo Ricardo Leitner 2020-10-20 21:23 ` Marcelo Ricardo Leitner 2020-10-20 22:08 ` David Laight 2020-10-20 22:13 ` 'Marcelo Ricardo Leitner' 2020-10-20 22:13 ` 'Marcelo Ricardo Leitner' 2020-10-21 4:16 ` Xin Long 2020-10-21 9:13 ` Michael Tuexen 2020-10-22 3:12 ` Xin Long 2020-10-22 8:47 ` David Laight 2020-10-26 5:58 ` Xin Long 2020-10-22 11:38 ` Michael Tuexen 2020-10-19 22:14 ` [PATCHv4 net-next 07/16] sctp: add encap_port for netns sock asoc and transport Marcelo Ricardo Leitner 2020-10-19 22:14 ` Marcelo Ricardo Leitner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=e8d627d45c604460c57959a124b21aaeddfb3808.1603110316.git.lucien.xin@gmail.com \ --to=lucien.xin@gmail.com \ --cc=davem@davemloft.net \ --cc=gnault@redhat.com \ --cc=linux-sctp@vger.kernel.org \ --cc=marcelo.leitner@gmail.com \ --cc=netdev@vger.kernel.org \ --cc=nhorman@tuxdriver.com \ --cc=pabeni@redhat.com \ --cc=tuexen@fh-muenster.de \ --cc=willemdebruijn.kernel@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).