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);
}
}