linux下以太网功能不能正常使用的原因及解决办法

摘要:
1: 以太网在启动时遇到的问题。检查寄存器基址、寄存器定义、寄存器配置和ping多路复用器。检查phy的配置。探头故障。可能的原因:1.MACreset失败。检查phy的电源、时钟和pingmux,以确保链路状态显示正确,但数据不可用:1.检查寄存器配置pingmux(主要是rmii和rgmii的相关配置)。由于驱动程序代码仍在使用释放的内存,因此会发生恐慌。

一:以太网在bring up时遇到的问题
检查寄存器基地址,寄存器定义,寄存器配置(百兆,千兆,rmii,rgmii,内部,外部phy), pinmux, 检查phy的配置.
probe失败可能原因:
1.MAC reset失败。检查电源,clock。
2.无法读取phy id。检查phy的电源,clock,pinmux.
能正确显示link状态,但是数据不通:
1.检查寄存器配置,pinmux, 主要是rmii, rgmii相关配置
2.检查phy driver是否正确匹配上,phy driver中的phy id与 phy device 中的phy id如果不一致的话,phy driver就匹配不成功,导致phy config函数没有执行到。

二.传输过程中传输中断的问题

tx方向的传输中断。增加每秒运行一次的work queue, 检查在dma队列中是否有待发送的数据(已经交给dma),如果有,记下队列index, 过5秒之后再检查这个待发送的数据是否已发送完成,如果还未完成,认为TX传输中止,reset ethernet.
rx方向的传输中断。每条检查一次,检查phy的状态,如果状态异常,则reset ethernet. 还可以仿照TX方向增加监控和恢复机制。
在reset ethernet时,需要注意kernel panic。 reset过程是,停止TX,RX,释放之前alloc的所有memory, 重新alloc memory, 初始化mac, 初始化phy。出现panic的原因是,驱动代码还在使用已经被释放了的memory。因为已经停止了TX,RX,按道理不会再运行TX,RX部分的代码了。最后发现是tx timer handler里面会操作memory。当停止TX,RX之后, 释放所有memory, 然后tx timer handler触发,操作被释放的memory, 导致panic. 解决方法是,减少tx timer的expire时间,并且在停止TX之后,增加delay, 使tx timer handler完成之后,再释放memory.

免责声明:文章转载自《linux下以太网功能不能正常使用的原因及解决办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【移动安全高级篇】————3、Android系统ShellCode编写TorchVisionV0.9中引入的ML模型下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Redis性能问题排查解决手册

阅读目录: 性能相关的数据指标 内存使用率used_memory 命令处理总数total_commands_processed 延迟时间 内存碎片率 回收key 总结 性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 i...

IEEE1588精确网络时钟同步协议简介 I

[首发于cnblogs,转载请注明。作者:byeyear/告别年代    Email:east3@163.com] 在阅读本文之前,假定您对以太网和NTP有一定的了解。 至少您应该大致理解以下名词或缩写: NTP,MAC,PHY,TimeStamp IEEE1588是一个主要运行于以太网的网络时钟同步协议,主要目标是在局域网范围内实现高于微秒级的同步精度。...

用mtrace检查内存泄漏

http://blog.csdn.net/ixidof/article/details/6638066内存泄漏检查方法(for Linux)如果你更想读原始文档, 请参考glibc info的"Allocation Debugging" 一章 (执行info libc);glibc提供了一个检查内存泄漏的方法, 前提是你的程序使用glibc的标准函数 分配...

ubuntu下如何检查nvidia显卡驱动是否安装OK?

答:使用sudo lshw -c video即可,笔者的输出如下: jello~$ sudo lshw -c video*-display description: VGA compatible controller product: GP106 [GeForce GTX 2080 80GB...

SAP内存/ABAP内存/共享内存区别

(1)、读取和使用方法不同SAP内存使用SET/GET parameters方法;SET PARAMETER ID 'MAT' field p_matnr.GET PARAMETER ID 'MAT' field p_matnr. ABAP内存使用EXPORT 和IMPORT  方法;export p_matnr = p_matnr to memory...

arp报文格式解析

arp报文格式 arp报文总共42 bytes。其中以太网首部14 bytes,arp字段28字节 一、以太网首部 如下图中:目的mac地址和源mac地址各6 bytes,以太网帧类型2 bytes 二、arp字段 arp字段如下图:从上往下依次是:硬件类型、协议类型、硬件大小、协议大小、op位、发送者mac、发送者ip、目的mac、目的ip 硬件类...