diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
| -rw-r--r-- | net/ipv6/ip6_output.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 8e49fd62eea9..edadee4a7e76 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -193,7 +193,7 @@ bool ip6_autoflowlabel(struct net *net, const struct ipv6_pinfo *np)   * which are using proper atomic operations or spinlocks.   */  int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6, -	     __u32 mark, struct ipv6_txoptions *opt, int tclass) +	     __u32 mark, struct ipv6_txoptions *opt, int tclass, u32 priority)  {  	struct net *net = sock_net(sk);  	const struct ipv6_pinfo *np = inet6_sk(sk); @@ -258,7 +258,7 @@ int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,  	hdr->daddr = *first_hop;  	skb->protocol = htons(ETH_P_IPV6); -	skb->priority = sk->sk_priority; +	skb->priority = priority;  	skb->mark = mark;  	mtu = dst_mtu(dst); @@ -1294,6 +1294,7 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,  	cork->base.fragsize = mtu;  	cork->base.gso_size = ipc6->gso_size;  	cork->base.tx_flags = 0; +	cork->base.mark = ipc6->sockc.mark;  	sock_tx_timestamp(sk, ipc6->sockc.tsflags, &cork->base.tx_flags);  	if (dst_allfrag(xfrm_dst_path(&rt->dst))) @@ -1764,7 +1765,7 @@ struct sk_buff *__ip6_make_skb(struct sock *sk,  	hdr->daddr = *final_dst;  	skb->priority = sk->sk_priority; -	skb->mark = sk->sk_mark; +	skb->mark = cork->base.mark;  	skb->tstamp = cork->base.transmit_time;  |