首页 > 代码库 > dev_queue_xmit()函数返回值问题
dev_queue_xmit()函数返回值问题
函数 dev_queue_xmit()用于直接使用sk_buf发包,此函数有返回值,但是并不能通过
此函数返回值为0来说明包已经发送出去且可以立刻释放sk_buff内存。因为网卡发包是一个异步的过程,
比如ixgbe网卡驱动发包过程可以查看此文。因此,解决办法是在skb_buff->uers
没有减少的情况下,将其存放于链表,稍后再释放内存。比如:
dev_queue_xmit(send_skb); if (atomic_read(&(send_skb->users)) == 1){ kmem_cache_free(skbuff_head_cache, send_skb); } else { struct free_slab *ptr = kmem_cache_alloc(skbuff_free_cache, GFP_ATOMIC & ~__GFP_DMA); ptr->free_mem = send_skb; spin_lock(&lock); list_add(&ptr->list, &head_free_slab); spin_unlock(&lock); }
dev_queue_xmit()函数返回值问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。