三。网络子系统深度分析

  用户程序通过网络发送这个网络数据包

  通过

      SCI

      协议无关接口

      协议栈 《   UDP的实现  会选择路由

          《    IP的实现   会建立这个邻居子系统,建立邻居信息

      设备无关接口

      驱动

  函数调用关系(对应上面)

      socket_file_ops

      do_sock_write

      _sock_sendmsg

      (SCI 接口)

      

      udp_sendmsg(路由ip_route_output_flow)

      udp_push_pending_frames

      (选择路由)

      

      ip_push_penging_frames

      ip_local_out(实现防火墙)

      dst_output

      ip_finish_output

      ip_finish_output2(dev->neighbour->output)

      // 邻居子系统

      arp_generic_ops->neigh_resolve_output

      (建立邻居子系统)

      

      dev_queue_xmit

      dev_hard_start_xmit

      (协议无关接口)

    

      dev->netdev_ops->ndo_start_xmit

      (驱动)

      

  2.网卡收到数据包如何交给用户来处理

      收到函数Receive()

      会产生一个中断

      1. 接受

        (1). 从硬件中读取数据到SKB中

        (2).调用Netif_rx()函数

      2.

转载于:https://www.cnblogs.com/lvxiaoning/p/5080458.html

Linux 网卡设备驱动程序设计(3)相关推荐

  1. Linux USB设备驱动程序设计 和 USB下载线驱动设计

    Linux USB设备驱动程序设计 和 USB下载线驱动设计 USB设备驱动模型 USB设备包括配置(configuration).接口(interface)和端点(endpoint),一个USB设备 ...

  2. Linux 网卡设备驱动

    Linux 网卡驱动 刺猬@http://blog.csdn.net/littlehedgehog 网上一位前辈写的,时至今日,代码很多编译通不过(主要是Linux 内核变化实在太快),我把代码移植到 ...

  3. Linux块设备驱动总结

    <Linux设备驱动程序>第十六章 块设备驱动程序读书笔记 简介 一个块设备驱动程序主要通过传输固定大小的随机数据来访问设备 Linux内核视块设备为与字符设备相异的基本设备类型 Linu ...

  4. Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02)

    Linux视频设备驱动常用控制命令使用说明 设置视频设备属性通过ioctl来进行设置,ioctl有三个参数,分别是fd, cmd,和parameter,表示设备描述符,控制命令和控制命令参数. 1. ...

  5. 浅谈Linux PCI设备驱动(一)

    要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.US ...

  6. Linux usb设备驱动

    原文地址:http://blog.csdn.net/chenjin_zhong/article/details/6329316 1.Linux usb设备驱动框架 USB是通用串行总线的总称,Linu ...

  7. STM32MP157 | 虚拟网卡设备驱动

    一.网络设备驱动 1. 概念 网络设备是Linux的第三类标准设备,没有对应的设备文件,使用内部设备名访问.网络设备及其驱动属于整个TCP/IP协议层的一部分,实现遵循TCP/IP协议栈的要求. 网络 ...

  8. Linux usb设备驱动详解

    1.Linux usb设备驱动框架 USB是通用串行总线的总称,Linux内核几乎支持所有的usb设备,包括键盘,鼠标,打印机,modem,扫描仪.Linux的usb驱动分为主机驱动与gadget驱动 ...

  9. ()shi linux字符设备,Linux字符设备驱动基础(三)

    Linux字符设备驱动基础(三) 6 创建设备节点 6.1 手动创建设备节点 查看申请的设备名及主设备号: cat /proc/devices # cat /proc/devices Characte ...

最新文章

  1. 但是如果你按照官网的说明进行输入:比如 [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}]就会报错,经过实践,多分类希望给各个label不
  2. hadoop 基准测试与读写测试
  3. python原始web与django框架 mvc模式开发
  4. Java多线程超详细总结
  5. windows隐藏python运行时的终端
  6. Android 屏幕适配资料汇总
  7. Git 更安全的强制推送,--force-with-lease
  8. dw个人介绍网页制作_DW网页制作,傻瓜级教学来了!
  9. django 22、python3.4环境下新建django应用失败报错计算机中丢失python27.dll的解决方法
  10. 【开源】在线教育系统.net源码-PC端-手机端
  11. xshell5安装包(百度云),官方免费版,不会强制更新,没有标签限制(2019-4-4)
  12. 服务器系统安装oracle数据库,oracle数据库服务器安装教程
  13. linux/windows对应的软件
  14. 卷积神经网络python实例,python卷积神经网络图像
  15. ptb同一屏呈现两张图片matlab,Psychtoolbox-3 / PTB-3 for Matlab 入门
  16. ps无法完成请求因为程序错误
  17. IWAM账号密码不一致引起IIS无法处理ASP文件
  18. c8051f020 I/O配置小结
  19. JavaScript混淆安全加固
  20. c语言如何画简单图形,如何用C语言画基本图形

热门文章

  1. 第10章-Vue.js 项目实战
  2. Safetype Config使用
  3. bzoj2229: [Zjoi2011]最小割(最小割树)
  4. 高通:蓝牙5.0将可同时连接两个设备
  5. 【转】字符串和浮点数格式化输出小结
  6. LFS笔记 00 准备环境
  7. Google退出中国,谁的压力最大?
  8. Q131:PBRT-V3,对比SurfaceInteration和MediumInteraction(笔记)
  9. error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)
  10. 问题四十五:怎么画ray tracing图形中的blending and joining surface