有什么简单的方法可以增加 linux 内核中 SKB 缓冲区的引用计数,这样硬件就不会释放它。
我知道使用 skb_clone 引用计数会自动增加,但我想知道在不创建克隆的情况下如何增加 SKB 引用计数。
我的目的是多次发送同一个数据包,我不想每次都为这个操作做一个 skb_clone,因为我想重用相同的内存。
我用于相同 SKB 的示例代码如下所示
for (i=0;i<=100;i++)
{
tmp_skb = skb_get(skb);
if (tmp_skb == NULL)
{
printk ("Clone Failed");
continue;
}
if ( (err = dev_queue_xmit(tmp_skb)) != NETDEV_TX_OK) {
if(unlikely(enable_error))
printk("ERROR - DEV QUEUE FAILED %d\n", err);
err = -ENETDOWN; /* Probably we need a better error here */
continue;
}
if (i==100)
{
printk("Loop is done\n");
kfree_skb(skb);
return(len);
}
}