The skb_queue_head function adds newsk to the head of list.
Specifically, it sets the list, next, and prev pointers in newsk, and
increments the qlen element of list. It also rearranges the next
and prev pointers in the existing head of list before returning.
It is important to note the difference between not only __skb_queue_head
and skb_queue_head, but all the __skb_ functions and their
skb_ counterparts. Essentially, the __skb_ functions are
non-atomic, and should only be used with interrupts disabled. As a convenience,
the skb_ functions are provided, which perform interrupt disable /
enable wrapper functionality in addition to performing their specific tasks.