博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dev_queue_xmit()函数返回值问题
阅读量:5926 次
发布时间:2019-06-19

本文共 683 字,大约阅读时间需要 2 分钟。

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

 

转载于:https://www.cnblogs.com/lxgeek/p/4042706.html

你可能感兴趣的文章
Spring+SpringMVC+Mybatis整合,你可能遇到的问题
查看>>
微信收费的真相
查看>>
Spring的IOC原理
查看>>
JavaScript 正则表达式对象RegExp test方法慎用/g
查看>>
达观数据:文本大数据的机器学习自动分类方法
查看>>
帮助你生成分享和显示社交媒体网络按钮的jQuery插件 - #50C1AL
查看>>
华为:浮动静态路由
查看>>
Cisco ASA 5505配置详解
查看>>
【大数据干货】轻松处理每天2TB的日志数据,支撑运营团队进行大数据分析挖掘,随时洞察用户个性化需求。...
查看>>
专访佰腾科技大数据团队,谈专利大数据领域的挑战与实践
查看>>
聊聊springboot2的ScheduledTasksEndpoint
查看>>
dubbo 异步调用
查看>>
一分钟完成MySQL5.7安装部署
查看>>
关于CentOS 7 链路聚合的一些见解
查看>>
Vue.js 2.0 由浅入深,第五天 day05
查看>>
docker/github
查看>>
“格力手机”的蝴蝶效应
查看>>
DIY 空气质量检测器
查看>>
persistence.xml配置实例
查看>>
Linux文件、目录、软硬链接
查看>>