sctp: call sk_setup_caps in sctp_packet_transmit instead
sk_setup_caps() was originally called in Commit 90017accff
("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>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
f1bfe8b541
commit
bcd623d8e9
|
@ -508,12 +508,6 @@ merge:
|
|||
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) {
|
||||
|
|
Loading…
Reference in New Issue