dev_queue_xmit()函数返回值问题
2014-10-22 11:43
267 查看
函数 dev_queue_xmit()用于直接使用sk_buf发包,此函数有返回值,但是并不能通过
此函数返回值为0来说明包已经发送出去且可以立刻释放sk_buff内存。因为网卡发包是一个异步的过程,
比如ixgbe网卡驱动发包过程可以查看此文。因此,解决办法是在skb_buff->uers
没有减少的情况下,将其存放于链表,稍后再释放内存。比如:
此函数返回值为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); }
相关文章推荐
- Linux发送函数dev_queue_xmit
- Linux 网络协议栈开发代码分析篇之数据收发(二) —— dev_queue_xmit()函数
- Linux发送函数dev_queue_xmit分析 --转
- Linux发送函数dev_queue_xmit分析
- tcp/ip 发包时,函数调用:从 tcp_connect() 到 __dev_queue_xmit()
- linux驱动问题讲解--dev_queue_xmit
- system函数返回值问题(system的实现) 2.4 和2.6内核的差异
- [转]浅谈C++中内存分配、函数调用和返回值问题
- 浅谈C++中内存分配、函数调用和返回值问题
- 函数返回值问题
- C语言中关于scanf()函数返回值问题
- 在JavaScript中使用Qt对象成员函数的参数及返回值问题
- (1)为什么构造函数的名字用类名?(2)构造函数返回值问题;(3)析构函数和构造函数定义为虚函数;
- dev_queue_xmi函数详解
- linux 系统信号忽略和system函数返回值问题(system的实现)
- 函数返回值作为左值问题
- sqlserver中编写自定义函数中的返回值问题
- strcpy实现及返回值问题(支持链式表达式,增加了函数的附加值)
- 浅谈C++中内存分配、函数调用和返回值问题
- 浅谈C++中内存分配、函数调用和返回值问题