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

         

  • 相关阅读:
    makefile 中 $@ $^ %< 使用
    makefile中的自动化变量$@,$%,$
    linux grep命令
    wc命令
    linux下echo命令
    winscp和putty提取固件教程
    WinSCP和PuTTY在刷openwrt固件的使用教程
    OPENWRT学习笔记入门篇
    第五章 并发性:互斥和同步
    getCurrentSession()和getOpenSession()的区别
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/5075659.html
Copyright © 2011-2022 走看看