zoukankan      html  css  js  c++  java
  • 第四季-专题15-网卡驱动程序设计

    专题15-网卡驱动程序设计

    第1课-网卡驱动架构分析

     

     

     

    l  Linux网络子系统

     

    l  系统调用接口层:为应用程序提供访问网络子系统的统一方法。

    l  协议无关层:提供通用的方法来使用传输层协议。

    l  协议栈的实现:实现具体的网络协议

    l  设备无关层:协议与设备驱动之前通信的通用接口

    l  设备驱动程序

    1. 重要数据结构

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

    l  char name[IFNAMSIZ],设备名,如:eth%d

    l  unsigned long base_addr,I/O 基地址

    l  const struct net_device_ops *netdev_ops;

    1. 网卡描述结构

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

    static const struct net_device_ops dm9000_netdev_ops =

    {

    .ndo_open = dm9000_open,

    .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,

    };

    1. 网卡操作集合

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

    static const struct net_device_ops dm9000_netdev_ops =

    {

    .ndo_open = dm9000_open,

    .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,

    };

    1. 网络数据包

    Linux内核中的每个网络数据包都由一个套接字缓冲区结构struct sk_buff 描述,即一个sk_buff结构就是一个网络包,指向sk_buff的指针通常被称做skb。

     

    第2课-回环网卡驱动设计

     

    第3课-网络子系统深度剖析

    第4课-DM9000网卡驱动深度分析

    第5课-DM9000网卡驱动实现

  • 相关阅读:
    P3834 【模板】可持久化线段树 (静态主席树)
    P3834 【模板】可持久化线段树 (静态主席树)
    2019 南昌网络赛 I. Max answer
    Linux从入门到精通——系统的进程
    Linux从入门到精通——文件权限
    Linux从入门到精通——命令行使用技巧
    Linux从入门到精通——Linux系统的文件及其管理
    Linux从入门到精通——vim及管理输入输出
    Linux从入门到精通——用户管理
    thiny mission 2021 10 15
  • 原文地址:https://www.cnblogs.com/free-1122/p/11452269.html
Copyright © 2011-2022 走看看