当前位置:  技术问答>linux和unix

skb buffer与ring buffer区别等问题

    来源: 互联网  发布时间:2016-04-06

    本文导语:  大家好,我刚刚接触Linux网络驱动方面,对驱动的各部分有了总体认识,但是有些细节不是很了解。 目前有以下几个问题: 1.看到网卡驱动中有skb buffer和ring buffer两种缓冲区。请问两个有什么区别,分别存放什么, ...

大家好,我刚刚接触Linux网络驱动方面,对驱动的各部分有了总体认识,但是有些细节不是很了解。
目前有以下几个问题:
1.看到网卡驱动中有skb buffer和ring buffer两种缓冲区。请问两个有什么区别,分别存放什么,
  这两个缓冲区分别是在哪里申请的阿,比如说skb是在内存的物理映射区,那ring buffer呢?
2.TX_ring_size和RX_ring_size以及MIN_MTU和MAX_MTU的值是怎么确定的?一个数据包的大小不是
  46-1500字节吗?还有skb大小怎么定?缓冲区里可以容纳多少个数据包一次?
3.netif_rx将数据包传给上层协议,这个过程是怎么进行的阿?是需要传给一个系统接口然后再传给
  应用程序吗?那能不能让netif_rx直接把数据包传给应用程序阿?我们有个应用想通过驱动直接获取
  并处理数据包,而不经过系统接口。
4.在网卡驱动中,我想在数据发送前将目的MAC地址修改成想要的地址,这样的做法可行吗?即:
  在hard_start_xmit函数的开始处添加代码: memcpy(eth->h_dest, change->daddr, dev->addr_len);
  其中change_addr是我自己定义的。
5.在数据接收时我想提前修改目的MAC地址和源MAC地址,那么我在net_rx函数的开头添加代码:  
  memcpy(eth->h_source, change->saddr, dev->addr_len);
  memcpy(eth->h_dest, change->daddr, dev->addr_len);
  这样能实现吗,可行吗?

|
3 , 这个是产生软中断,然后在软中断中处理的吧?
4,5 修改sk_buff 中的dade

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • HTML教程 iis7站长之家
  • 关于skb->data是只读的??
  • ip_rcv 中用skb_share_check是什么目的?
  • 关于skb的构造,高手能否谈谈看法?
  • skb中有个dst,注释是FIXME。这是什么意思啊!
  • 求skb开发的建议!
  • 各位哥哥姐姐:如何zip压缩算法来压缩SKB里面的数据部分
  • 发送IP包时,skb->dev是在哪里被设置的
  • 本来可以修改skb里tcp数据的,突然不能修改了,为什么?
  • struct sock *sk和 struct sk_buff *skb之间的关系
  • netif_rx(skb)成功,但无法收到数据包是怎么回事呀
  • ((*(skb->data)) & 0x0f) * 4是什么意思?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3