Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50124
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 147
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-03 11:00
个人简介

navigation、linux、内核、网络技术、网卡驱动、qt、android、ios、irrlicht、ogre

文章分类

全部博文(11)

文章存档

2016年(1)

2013年(10)

我的朋友

分类: LINUX

2013-04-15 15:38:28

      以下记录一下在做零拷贝驱动的时候一些困扰我的问题
     
    1、将获得的包存储下来后,用wireshark打开显示包不对。
         查找原因,是由于 #define BNX2_RX_OFFSET (sizeof(struct l2_fhdr) + 2), 在bnx2中,真实的数据是放在偏移了这个宏长度的位置。(注:e1000驱动没有这个偏移量)
         因此,在取出来数据的时候需要加上18开始取包
  
    2、数据取出来一部分后就收不到数据了
        查找原因,发现了是网卡link down了,在所有调用netif_carrier_off函数的地方加上log,最后发现是在bnx2_tx_timeout函数中调用了schedule_work函数,最后调用netif_carrier_off了。
        由于本次修改的零拷贝驱动只需要抓包,所以将bnx2_tx_timeout重写即可。

    3、在2.6.39的内核版本上发现struct file结构里面的private_data会有初始值。这个需要注意一下。

    记得不是特别清楚了,以后犹记得的再补充
阅读(781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~