]> Pileus Git - ~andy/linux/blobdiff - net/ipv4/tcp_output.c
tcp: Remove another indentation level in tcp_rcv_state_process
[~andy/linux] / net / ipv4 / tcp_output.c
index 536d40929ba6f809d5c79968c48053202dd3748f..ec335fabd5cc12daba8addf5de86adc90abbd561 100644 (file)
@@ -874,11 +874,13 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
                                                           &md5);
        tcp_header_size = tcp_options_size + sizeof(struct tcphdr);
 
-       if (tcp_packets_in_flight(tp) == 0) {
+       if (tcp_packets_in_flight(tp) == 0)
                tcp_ca_event(sk, CA_EVENT_TX_START);
-               skb->ooo_okay = 1;
-       } else
-               skb->ooo_okay = 0;
+
+       /* if no packet is in qdisc/device queue, then allow XPS to select
+        * another queue.
+        */
+       skb->ooo_okay = sk_wmem_alloc_get(sk) == 0;
 
        skb_push(skb, tcp_header_size);
        skb_reset_transport_header(skb);