gpt4 book ai didi

network-programming - 增加 SKB 的引用计数

转载 作者:行者123 更新时间:2023-12-04 00:14:04 32 4
gpt4 key购买 nike

有什么简单的方法可以增加 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);
}
}

最佳答案

尝试通过skb_get获取一个skb方法:

758 /**
759 * skb_get - reference buffer
760 * @skb: buffer to reference
761 *
762 * Makes another reference to a socket buffer and returns a pointer
763 * to the buffer.
764 */
765 static inline struct sk_buff *skb_get(struct sk_buff *skb)
766 {
767 atomic_inc(&skb->users);
768 return skb;
769 }

关于network-programming - 增加 SKB 的引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005989/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com