if(icsk->icsk_ca_ops->flags&TCP_CONG_RTT_STAMP) __net_timestamp(skb); /*根据传递进来的clone_it参数来确定是否需要克隆待发送的报文。*/ if(likely(clone_it)) { /*如果skb已经被clone,则只能复制该skb的数据到新分配的skb中*/ if(unlikely(skb_cloned(skb))) skb=pskb_copy(skb,gfp_mask);...
if (icsk->icsk_ca_ops->flags & TCP_CONG_RTT_STAMP) __net_timestamp(skb); /*根据传递进来的clone_it参数来确定是否需要克隆待发送的报文。*/ if (likely(clone_it)) { /*如果skb已经被clone,则只能复制该skb的数据到新分配的skb中*/ if (unlikely(skb_cloned(skb))) skb = pskb_copy(skb,...
36. if (local_rcv) 37. deliver_clone(prev, skb, local_orig); 38. else 39. __br_forward(prev, skb, local_orig); 40. return; 在想每个端口转发时,都会复制一份新的skb数据。 maybe_deliver是deliver_clone的包装,每次遍历端口后,会在下一个遍历周期,将数据从本次遍历端口发送,最后一个端口的数...
if (icsk->icsk_ca_ops->flags & TCP_CONG_RTT_STAMP) __net_timestamp(skb); /*根据传递进来的clone_it参数来确定是否需要克隆待发送的报文。*/ if (likely(clone_it)) { /*如果skb已经被clone,则只能复制该skb的数据到新分配的skb中*/ if (unlikely(skb_cloned(skb))) skb = pskb_copy(skb,...