• Linux 网卡驱动设备程序设计(1)


    一。网卡驱动架构分析

      1. Linux 网络子系统

        #系统调用接口层

         为应用程序提供访问网络子系统的统一方法。

        #协议无关层

         提供通用的方法来使用传输层协议。

        #协议栈的实现

         实现具体的网络协议

        #设备无关层

         协议与设备驱动之前通信的通用接口

        #设备驱动程序

      2. 重要数据结构

        2.1 网卡描述结构

          在Linux内核中,每个网卡都由一个《net_device》结构来描述,其中的一些重要成员有:

          #char name[IFNAMSIZ]

          设备名,如:eth%d

          #unsigned long base_addr

          I/O 基地址

          #const struct net_device_ops *netdev_ops;

        2.2 网卡操作集合

        说明 : 类似于字符设备驱动中的file_operations结构,net_device_ops结构记录了网卡所支持的操作。

            static const struct net_device_ops dm9000_netdev_ops =

            {

              .ndo_open= dm9000_open,

              .ndo_stop= dm9000_stop,

              .ndo_start_xmit= dm9000_start_xmit,

              .ndo_do_ioctl= dm9000_ioctl,

              .ndo_validate_addr= eth_validate_addr,

              .ndo_set_mac_address= eth_mac_addr,

            };

         2.3  网络数据包

           Linux内核中的每个网络数据包都由一个套接字缓冲区结构struct sk_buff 描述,

           即一个sk_buff结构就是一个网络包,指向sk_buff的指针通常被称做skb。

      3. 网卡驱动架构分析

        1. CS8900.c

         

  • 相关阅读:
    Linux/shell: remove adjacent similar patterns
    Calculate difference between consecutive data points in a column from a file
    awk
    自定义Cordova插件(基础篇)
    npm init 命令生成package.json文件
    自定义Cordova插件详解
    Android 回退键监听
    Cordova结合Vue学习Camera
    解决悬浮的<header>、<footer>遮挡内容的处理技巧
    npm 是干什么的
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/5075659.html
Copyright © 2020-2023  润新知