phy state machine 与 rate --- linux kernel 欣赏

linux phy处理流程二:attach phy设备 of_phy_connect和phy_connect最终都会调用phy_connect_direct,of_phy_connect首先查找将设备树节点对应的phy device,之后再调用phy_connect_direct。phy_attach_direct中获取检查phydev是否已经匹配了phydrv,如果无则使用通用phydrv。//遍历mdio_bus_type总线上设备列表,通过of_phy_match判断总线上设备节点和参数phy_np是否一致,一致且为phy设备则返回对应的设备结构。 阅读详情
/*    
 *    当你使用 ifconfig ethx up、down 时, 这个函数就被执行到了. 知道了它的执行时机了吧 😄
 *    比如 : PHY_FORCING -> PHY_RUNNING 切换的时候. 
 * 
 *    phy 的12种状态中的4种在phy状态机中是归纳为同一种处理的. 
 *    state 叠加了 ?  不论你观不观测它, 它都是4态合一, TMD 量子力学也只有两态吧 😄😄
 *    这几天著名的双缝干涉实验看的有点多 .... 😂
 */
static void phy_link_change(struct phy_device *phydev, bool up, bool do_carrier)
{
   /*
    *    核心动作来了.
    *    为了 mac 与 phy 的绑定, kernel 准备了很多. 用兵一时. 好了,这里就拿出mac来了.
    *    拿出mac仅仅是为了执行netif_carrier_xx的需要. 在核心函数 如 macb_handle_link_change()
    *    也仅仅是为了获取到 phy. 
	*/
	struct net_device *netdev = phydev->attached_dev;
	
   /*
    *    这是一个布尔值. 要明白这个值的用意,就必须要理解 phy的状态切换.
	*/
	if (do_carrier) {
		if (up)
			netif_carrier_on(netdev);
		else
			netif_carrier_off(netdev);
	}
	phydev->adjust_link(netdev);
}
static void macb_handle_link_change(struct net_device *dev)
{
	struct macb *bp = netdev_priv(dev);
	struct phy_device *phydev = dev->phydev;
	unsigned long flags;
	int status_change = 0;

	spin_lock_irqsave(&bp->lock, flags);

	if (phydev->link) {
		if ((bp->speed != phydev->speed) ||
		    (bp->duplex != phydev->duplex)) {
			u32 reg;

			reg = macb_readl(bp, NCFGR);
			reg &= ~(MACB_BIT(SPD) | MACB_BIT(FD));
			if (macb_is_gem(bp))
				reg &= ~GEM_BIT(GBE);

			if (phydev->duplex)
				reg |= MACB_BIT(FD);
			if (phydev->speed == SPEED_100)
				reg |= MACB_BIT(SPD);
			if (phydev->speed == SPEED_1000 &&
			    bp->caps & MACB_CAPS_GIGABIT_MODE_AVAILABLE)
				reg |= GEM_BIT(GBE);

			macb_or_gem_writel(bp, NCFGR, reg);

			bp->speed = phydev->speed;
			bp->duplex = phydev->duplex;
			status_change = 1;
		}
	}

	if (phydev->link != bp->link) {
		if (!phydev->link) {
			bp->speed = 0;
			bp->duplex = -1;
		}
		bp->link = phydev->link;

		status_change = 1;
	}

	spin_unlock_irqrestore(&bp->lock, flags);

	if (status_change) {
		if (phydev->link) {
			/* Update the TX clock rate if and only if the link is
			 * up and there has been a link change.
			 */
			macb_set_tx_clk(bp->tx_clk, phydev->speed, dev);

			netif_carrier_on(dev);
			netdev_info(dev, "link up (%d/%s)\n",
				    phydev->speed,
				    phydev->duplex == DUPLEX_FULL ?
				    "Full" : "Half");
		} else {
			netif_carrier_off(dev);
			netdev_info(dev, "link down\n");
		}
	}
}

ZYNQ Linux双网口(PS-GEM端)共用一个MDIO问题BUG记录(适用Linux-xlxn.2018.2版本源码) 阅读详情

相关推荐

有限状态机Finite State Machine详细介绍

有限状态机(Finite State Machine)是一种时序机,它源自于人们将一个复杂的问题分割成多个简单的部分来处理的思想。状态机通过时钟驱动下的有多个状态,以及状态之间的跳转规则来实现复杂的逻辑,一旦当前的状态确定,也就明确了相关的输入输出。 有限状态机主要分为两个类型:第一类,如果输出只和当前状态有关而和输入无关,称之为Moore状态机;第二类,输出不仅和当前状态有关也和输入有关,称之为Melay型状态机。本节将主要介绍这两类状态机、状态编码以及使用VHDL和Verilog语言描述的设计范例。

/drivers/net/phy/phy.c的状态机phy_state_machine分析

在mii总线初始化过程中,

linyangspring的专栏 4135

基于macb改的linux系统4.14内核 MAC层网卡直连(省略硬件phy及驱动)

基于macb改的linux系统4.14内核 MAC层网卡直连(省略硬件phy及驱动)

Linux Mii management/mdio子系统分析之五 PHY状态机分析及其与net_device的关联

linux phy

乐于分享 1361

ThinkBook 16p 2024 BIOS降压定频实战:从解锁CFG Lock到AC Loadline调优

高性能笔记本在满载时频繁撞上温度墙,通常源于固件层默认电压冗余过大,而系统级降压工具又受限于CFG Lock锁定。要根治问题,需要从BIOS固件层面理解电压管理机制——AC/DC Loadline参数控制着CPU在不同负载下的电压请求,通过修改这些负载线值可以安全降低电压,解锁CFG Lock后还能让XTU、ThrottleStop等软件调参工具恢复可用。这种BIOS级调优在工程实践中广泛用于改善散热、稳定频率、压降风扇噪音,尤其适用于联想ThinkBook 16p 2024与拯救者Y9000P等采用HX平

weixin_32496547的博客 386

ffmpeg中av_read_frame阻塞的原因与解决方案

最近用到ffmpeg,想要av_read_frame立即返回,但是看网上的博客,都没有详细的解说,那就自己看源码。 两种方法: 设置回调打断函数和设置超时 超时,但是如果只设置该参数,依然会在av_read_frame中阻塞, av_dict_set(&inputDic, "stimeout", "2*1000*1000", 0); // milliseconds //打断回调 m_avformatCtx->interrupt_callback.callback = interru

weixin_43360707的博客 1万+

Linux内核(八) PHY状态机以及网络相关操作命令解析

文章目录背景解析状态机网络操作命令解析(1)运行ifconfig eth0 up命令 背景 上一篇介绍了PHY设备的识别,构建phy_device结构体的同时,将PHY状态机放在延时队列里,实时更新PHY的状态。介绍文件系统调用命令来对网口进行操作涉及驱动流程。 解析状态机 // drivers/net/phy/phy.c // 注册phy_device后,状态机就开始启动,监测phy状态 void phy_state_machine(struct work_struct *work) { str

weixin_43564241的博客 3355

论文理解【LLM-OR】——【OptiMUS】Scalable Optimization Modeling with (MI)LP Solvers and Large Language Models

OptiMUS 把“自然语言→优化建模与求解”从单次生成改造成“结构化问题 + 多智能体协作 + 连接图检索”的模块化流程,并在更长更难的数据集上验证了这种结构化方法相对端到端 prompting 的优

佚失的诗篇 822

BCM89XXX系列PHY驱动代码适配

BCM89XXX系列PHY使用的MDIO配置默认通信协议是C45,Linux内核驱动默认使用C22协议对PHY进行相关配置,所以Linux内核驱动需要使用C22协议模仿C45协议对PHY进行相关配置。/bin/sh。

技术杂货铺 8859

EtherCAT主站视角:如何正确配置一个支持动态PDO的从站(以倍福TwinCAT为例)

本文详细解析了在TwinCAT环境下配置支持动态PDO的EtherCAT从站的全过程。通过MDP(Modular Device Profile)实现模块化配置,涵盖从站工作原理、TwinCAT工程配置、调试技巧到高级应用实践,帮助工程师快速掌握动态PDO配置技术,提升工业现场设备扩展与维护效率。

weixin_30466039的博客 266

论文阅读:ICLR 2023 FINE-TUNING ALIGNED LANGUAGE MODELS COMPROMISES SAFETY, EVEN WHEN USERS DO NOT INTEND

对大型语言模型(LLMs)进行微调以适应特定用例通常涉及对预训练的LLMs进行进一步的定制。Meta公开发布Llama模型和OpenAI的API允许在自定义数据集上微调GPT-3.5 Turbo,也鼓励这种做法。但是,这种自定义微调与安全成本有何关联?我们注意到,尽管现有的安全对齐基础设施可以在推理时限制LLMs的有害行为,但它们并未涵盖将微调权限扩展到最终用户时的安全风险。我们的红队研究发现,即使是只有几个设计有敌意的训练示例进行微调,也可以破坏LLMs的安全对齐。

CSPhD-winston的博客 810

linux 命令 读phy_linux phy运行状态

https://blog.youkuaiyun.com/chenliang0224/article/details/81024026一、phy执行的枚举状态定义enum phy_state {PHY_DOWN=0, //down 如关闭网卡,ifconfig eth0 downPHY_STARTING, //1PHY_READY, //2 phy设备注册成功PHY_PENDING, //3 phy芯片挂起PH...

weixin_42535720的博客 4755

车载网络测试实操源码_使用CAPL脚本实现安全访问解锁,并模拟各种测试场景

在车载诊断中,我们经常会使用到安全访问解锁,常见的场景包括软件刷写前、通过2E服务写入某个DID前、通过31服务执行某个例程前等,都必须先通过27服务进行安全访问,解锁相应安全等级后才能执行上述操作。在开发调试或测试时,有时候需要模拟正常的安全解锁、安全访问秘钥错误、连续多次请求安全访问等,手动操作极为不便。本文将介绍如何使用CAPL脚本实现安全访问解锁,并模拟各种测试场景。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1200

Linux Phy 驱动解析

Linux Phy 驱动的架构解析,phy 芯片的状态怎么传递给 mac netdev 驱动的流程分析。

pwl999的博客 8302

华为od面试手撕真题【分解质因数】

华为od面试手撕真题【分解质因数】

MISAYAONE的博客 1131

手把手教你完成YOLOv8分类识别界面搭建,使用Qt6设计YOLOv8分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程

本项目基于YOLOv8分类模型,结合PySide6框架开发了一套图形化分类识别系统,支持图片、视频和摄像头实时检测。系统包含以下功能: 分类识别模块:完成图像/视频目标分类,界面展示检测结果。 用户管理模块:支持登录注册、头像修改、密码重置等功能。 AI问答模块:集成DeepSeek大模型接口,实现流式输出对话。 后台管理系统(第二版新增):管理员可管理用户信息及个人中心。 系统采用MySQL数据库存储用户数据,并提供完整的UI界面与交互逻辑。代码已开源,适用于毕业设计或快速部署场景。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 825

zynq-7000系列基于zynq-zed的MAC->MAC 的实现(fixed-link)

zynq-7000系列基于zynq-zed的MAC->MAC 的实现(fixed-link)                              作者:卢浩                                        时间:2017.2.20                                     转载请注明出处

luhao806的专栏 7602

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[网络] ifconfig down掉的网口,插上网线网口灯依然亮?

不同网卡驱动实现不一样,这里包括不同平台CPU原生MAC驱动实现,虽然使用同一颗phy,但由于MAC不同,phy的现象也可能会有差异。遇到内核问题,可以多去upstream上看看有无相关patch,自己遇到的问题,可能是别人已踩过坑。

只有自己觉到悟到的,才是自己的。 2973

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PHY自协商

自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。自协商功能的基本机制是:每个网络设备在上电、管理命令发出、或是用户干预时发出FLP(快速连接脉冲),协商信息封装在这些FLP序列中。

四季帆的博客 7003

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHY自动协商和其在Linux下的初始化

以太网PHY自动协商和其在Linux下的初始化一:以太网的自动协商相信很多人对以太网的自动协商原理已经很熟悉了,很多博客也将其描述得十分清楚,本文就不再详细描述了。我们将换个角度来看待这个问题。首先,以太网的自动协商功能是由PHY硬件自己完成的,不需要我们的内核去做什么指导工作,只要设置相应寄存器启动自动协商后,我们就可以读相关的寄存器来得到现在协商成啥了。那么具体是什么寄存器呢?二、Linux下...

艾玛 8416

linux 命令 读phy_Linux PHY几个状态的跟踪

前面文章零零星星地分析了PHY,本来想完整地,系统地做分析,发现工程量太大了,而自己又一知半解,所以只好各个击破,一点一点来分析。本文主要分析了设备上电、拨出网线、插上网线、自动协商等过程的PHY状态。MAC驱动和PHY驱动PHY一般和具体的MAC控制驱动联系一起,这里以TI的MAC驱动为例,由它切入到PHY驱动。Linux内核通过mdio总线访问、控制PHY,源码实现在driver/net/ph...

weixin_40007668的博客 1506

phy

一.结构体 1.PHY设备 [cpp] view plaincopy struct phy_device {      struct phy_driver *drv; //PHY设备驱动      struct mii_bus *bus;    //对应的MII总线      struct device dev;  //设备文件      u32 phy_id; //PH

5092

PHY驱动调试之 --- PHY控制器驱动(二)

linux phy

乐于分享 4139

为Linux应用构造有限状态机

前些日子写程序,对一些按钮状态的控制很是费功夫,虽然知道应该使用状态机,但是没有经验无从下手,今天看到一篇linux下使用有限状态机的文章,它主要是介绍采用fsmc来自动构造有限状态机,感觉不过瘾,如果有机会看到模拟delphi中那种类似action的设计模式就好了,原文来自:http://www-900.ibm.com/developerworks/cn/linux/l-fsmachine/in

Kay's Blog 2987

linux PHY驱动

本文参考3.17版本的内核,结合TI的cpsw驱动(但去掉cpsw大部分代码,保留phy相关的),追踪一下通用PHY驱动。文中使用函数及主要功能语句的形式给出调用过程。

李迟的专栏 2万+

Linux PHY几个状态的跟踪

前面文章零零星星地分析了PHY,本来想完整地,系统地做分析,发现工程量太大了,而自己又一知半解,所以只好各个击破,一点一点来分析。本文主要分析了设备上电、拨出网线、插上网线、自动协商等过程的PHY状态。

李迟的专栏 1万+
上一篇: scheduler 与 power mangement 的关系 --- linux kernel 实现之美
下一篇: 一致性DMA --- linux kernel 实现赏析
leesagacious
博客等级 码龄12年 146粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值