Linux Mii management/mdio子系统分析之一 总体概述

2024-01-15 21:52

本文主要是介绍Linux Mii management/mdio子系统分析之一 总体概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux Mii management/mdio子系统分析之一 总体概述


(转载)原文链接:https://blog.csdn.net/u014044624/article/details/123303099

 

从本章开始,我们介绍linux的mii management对应的mdio子模块,该模块主要用于管理phy设备,实现phy device创建与phy driver的注册等功能。本系统主要涉及如下按如下几个篇章进行分析:

一、总线概述(介绍mdio驱动模型的简要逻辑模型)

二、mdio总线-设备-驱动模型分析

三、虚拟mii_bus模型分析(即fixed-mii_bus,主要的应用场景为2个cpu间网口通过rgmii/sgmii等直接相连,无需phy时,如何让net-device绑定一个逻辑phy-device)

 

设备间的逻辑关联图及抽象

如下图为cpu与mac、phy之间的逻辑关联图,针对mac与phy之间的连接,包括两部分:

  1. 通过mii/rgmii/sgmii/…与phy连接,进行数据的通信;
  2. 通过mdc/mdio与phy连接,实现对phy设备的控制命令的下发等功能

本次我们主要介绍mac与phy之间控制接口间的设备驱动模型(即mac通过mii management

控制phy设备的驱动模型),而针对netdevice子系统模块,此次暂不介绍,留待后续介绍。

 

      MII Management interface用于MAC层芯片控制和配置phy设备,而ieee 802.3中规定了phy device寄存器的额地址空间为5位,最多可定义32各寄存器,而ieee 802.3定义了地址为0-15这16个寄存器的功能,主要包括control、status、phy identifer、auto-neg相关等,而16-31由厂家自行定义。

 

结合我们之前介绍的i2c、spi、mmc子系统,我们可以针对上面的设备逻辑图进行如下的设备驱动模型的抽象:

  1. 针对mii management而言,应该抽象控制器对应的类型;
  2. 针对该控制器,需要提供访问phy的方法,包括读写方法
  3. 针对phy 设备,应该抽象出对应的设备类型;
  4. 针对phy设备的驱动,应该抽象出对应的phy设备驱动类型;
  5. 针对mdc/mdio,应该抽象出对应的总线类型。

 

而在linux的mdio子系统中,和上述我们的猜想类似,该子系统抽象的内容如下:

  1. 针对mii management,抽象为struct mii_bus;
  2. 针对phy设备,抽象为struct phy_device;
  3. 针对phy设备的驱动,抽象为struct phy_driver ;
  4. 为mdc/mdio定义了名为“mdio_bus”的总线类型。

 

 

 

MDIO设备驱动模型介绍

    在mdio子模块中,针对mii_bus、phy_device、phy_driver、mdio_bus而建立了对应的驱动模型,下面我们分析下该子系统的驱动模型。借助于设备-总线-驱动模型,实现将这几个数据结构关联起来,这些数据结构之间的关联说明如下:

  1. 借助于设备-总线-驱动模型,通过device_register、driver_register接口,即实现了phy_device、phy_driver注册至mdio bus行,并完成它们之间device与device_driver的关联;
  2. phy_device通过其drv指针,实现与phy_driver的关联与绑定(其实借助设备-总线-驱动模型的device、device_driver数据结构,也可以获取该phy_device对应的phy_driver,个人认为phy_device中的drv指针有点多余);
  3. mii_bus借助其成员phy_map,将所有连接至该mii management的phy device关联起来。

 

 

 

此处mdio 驱动模型的数据结构的抽象,该驱动模型与spi驱动模型、i2c驱动模型类似,但也有些区别:

  1. mii_bus总定义了phy_map,将所有连接至该mii management的phy device关联一起,而在spi模型中,是spi_device中定义指针指向所依附的spi_master(spi master和mii_bus的操作刚好相反);
  2. spi模型中定义了一个全局链表,将所有注册的spi master链接在一起,而mdio模型中并没有为mii_bus创建相应的全局链表;
  3. spi模型与mdio模型,均没有将spi master/mii_bus注册至spi_bus/mdio_bus中,这是与i2c模型的区别(i2c adapter是注册至i2c bus的)。
  4. mii_bus提供了read、write方法,用于和具体的phy device进行通信(主要是控制命令的交互)

 

    其实mdio子模块也是比较简单的,只涉及到寄存器的读写操作(借助mii_bus提供的方法),理解起来 也相对简单点。

本篇主要是简要介绍mdio驱动模型,让大家有一个感性印象,下一篇文章我们主要介绍mdio总线-设备-驱动模型。

这篇关于Linux Mii management/mdio子系统分析之一 总体概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/610326

相关文章

linux lvm快照的正确mount挂载实现方式

《linuxlvm快照的正确mount挂载实现方式》:本文主要介绍linuxlvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux lvm快照的正确mount挂载1. 检查快照是否正确创建www.chinasem.cn2.

Linux给磁盘扩容(LVM方式)的方法实现

《Linux给磁盘扩容(LVM方式)的方法实现》本文主要介绍了Linux给磁盘扩容(LVM方式)的方法实现,涵盖PV/VG/LV概念及操作步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1 概念2 实战2.1 相关基础命令2.2 开始给LVM扩容2.3 总结最近测试性能,在本地打数据时,发现磁盘空

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定