Skip to content
  • Tom Herbert's avatar
    net: fix problem in dequeuing from input_pkt_queue · 76cc8b13
    Tom Herbert authored
    
    
    Fix some issues introduced in batch skb dequeuing for input_pkt_queue.
    The primary issue it that the queue head must be incremented only
    after a packet has been processed, that is only after
    __netif_receive_skb has been called.  This is needed for the mechanism
    to prevent OOO packet in RFS.  Also when flushing the input_pkt_queue
    and process_queue, the process queue should be done first to prevent
    OOO packets.
    
    Because the input_pkt_queue has been effectively split into two queues,
    the calculation of the tail ptr is no longer correct.  The correct value
    would be head+input_pkt_queue->len+process_queue->len.  To avoid
    this calculation we added an explict input_queue_tail in softnet_data.
    The tail value is simply incremented when queuing to input_pkt_queue.
    
    Signed-off-by: default avatarTom Herbert <therbert@google.com>
    Acked-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    76cc8b13