zoukankan      html  css  js  c++  java
  • 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

         

  • 相关阅读:
    Redis事务,持久化,缓存同步
    关于虚拟机初次安装出现32位问题
    解决nginx无法访问问题
    如何解决maven 打war,在tomcat下直接访问localhost:8080
    如何解决eclipse里面tomcat 8080端口被占用
    连接mysql出现Access denied for user ‘root’@’localhost’ (using password:YES)问题解决办法
    idea下面修改项目的访问路径
    wordpress主题乱码
    如何在Windows系统本地环境下使用phpstudy快速搭建wordpress平台
    小积累
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/5075659.html
Copyright © 2011-2022 走看看