TCP输入 之 tcp_prequeue 在未开启tcp_low_latency的情况下,软中断将skb送上来,加入到prequeue中,然后 在未启用tcp_low_latency且有用户进程在读取数据的情况下,skb入队到prequeue,入队之后,若达到队列长度上限或者内存上限,则将队列中的skb出队,调用tcp_v4_do_rcv处理,若入队skb为队列的第一个skb,则需要唤醒进程...
sock_owned_by_user(sk)) {/*未被用户锁定*//*不启用sysctl_tcp_low_latency 能够提高tcp ip 协议栈的吞吐量以及反应速度,就调用tcp_prequeue将数据包加入prequeue队列*/if(!tcp_prequeue(sk, skb))/*未能加入到prequeue
if(!sysctl_tcp_low_latency&&tp->ucopy.task) { __skb_queue_tail(&tp->ucopy.prequeue,skb); tp->ucopy.memory+=skb->truesize; if(tp->ucopy.memory>sk->sk_rcvbuf) { structsk_buff*skb1; BUG_ON(sock_owned_by_user(sk)); while((skb1=__skb_dequeue(&tp->ucopy.prequeue))!=NULL) {...