Network driver enqueues the incoming data to "input_pkt_queue" in enqueue_to_backlog() API.
process_backlog()(which is called in softirq context), is where these packets are processed. In process_backlog() API, first packets from "input_pkt_queue" are moved to "process_queue". And from "process_queue" packets are sent to TCP/IP stack.
Is there any reason why "process_queue" is used in between?