if (WARN_ON_ONCE(skb_shinfo(skb)->gso_type & SKB_GSO_FRAGLIST)) return NULL; @@ -2483,6 +2489,9 @@ struct sk_buff *skb_copy_expand(const struct sk_buff *skb, struct sk_buff *n; int oldheadroom; if (!skb_frags_readable(skb)) return NULL; if (WARN_ON_ONCE(skb_shinfo(skb...
skb_frag_unref(skb, i); eat -= size; } else { skb_frag_t *frag = &skb_shinfo(skb)->frags[k]; // 这里把不需要拷贝到线性区的frags[k]拷贝到frags[i] *frag = skb_shinfo(skb)->frags[i]; if (eat) { // 为第i个frag修改偏移 // frag->bv_offset += eat; skb_frag_off_add(...
skb_fail: return skb; } EXPORT_SYMBOL(__napi_alloc_skb); EXPORT_SYMBOL(napi_alloc_skb); void skb_add_rx_frag_netmem(struct sk_buff *skb, int i, netmem_ref netmem, int off, int size, unsigned int truesize) 0 comments on commit 6e9b019 Please sign in to comment. Footer...
}else{skb_frag_t*frag = &skb_shinfo(skb)->frags[k];// 这里把不需要拷贝到线性区的frags[k]拷贝到frags[i]*frag =skb_shinfo(skb)->frags[i];if(eat) {// 为第i个frag修改偏移// frag->bv_offset += eat;skb_frag_off_add(frag, eat);skb_frag_size_sub(frag, eat);if(!i)gotoend;...
在下文中一共展示了skb_frag_size函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。 示例1: iwl_pcie_gen2_tx_add_frags ▲点赞 6▼ staticintiwl_pcie_gen2_tx_add_frags(struct iwl_trans *trans, ...
skb_frag_off_add(frag, eat); skb_frag_size_sub(frag, eat); if(!i) gotoend; eat=0; } k++; } } // nr_frags设置为k skb_shinfo(skb)->nr_frags = k; end: // tail增加data skb->tail += delta; // 非线性数据减去delta
add_frag_mem_limit(&fq->q, skb->truesize);if(fq->q.flags == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) && fq->q.meat == fq->q.len) {intres;unsignedlongorefdst = skb->_skb_refdst; skb->_skb_refdst =0UL; res = lowpan_frag_reasm(fq, prev, dev); ...
第二就是什么时候会使用no-linear,frag_list在处理IP分片时被使用,可以查看内核中的ip_fragment->ip_do_fragment函数,[1][2][3]中对这个部分的描述并不够详细,或者说对frags对描述还不够详细。
*/ data = skb_put(skb, fraglen + exthdrlen...0; exthdrlen = 0; csummode = CHECKSUM_NONE; /* * Put...->len; if (getfrag(from, skb_put(skb, copy), offset, copy, off, skb) 2.3K20 《Linux Device Drivers》 第十七章 网络驱动程序——note 基本介绍 第三类是标准的网络接口Linux...
bp->rx_buffer_size, DMA_FROM_DEVICE); skb->protocol = eth_type_trans(skb, bp->dev); skb_put(skb, len); /** * skb_put - add data to a buffer * @skb: buffer to use * @len: amount of data to add * * This function extends the used data area of the buffer. If this woul...