在近期有一个项目,是一台设备中发现mac与phy之间的信号质量有一些差,报文会出现很多的crc错误码。希望可以将mac与phy之间的工作模式改为10GBASE-KR/40GBASE-KR4,从而提高信号质量,减少crc错误码。要实现10GBASE-KR/40GBASE-KR4,需要打开auto-negotiation,所以,文章主要内容是如何开启自协商,以及相关参数的解释。

需要的文档:

1、802.3协议手册
2、所调试phy的芯片手册(我自己使用的是bcm的万兆phy)

万兆phy情况摘要

PHY寄存器分为两大部分:
1、system端,是phy与交换芯片连接的一侧;
2、line端,是phy与光模块连接的一侧
寄存器的读取地址有device address与register address。system-side 与 line-side寄存器的device address,register address 是一致的,他们是通过将寄存器【device address = 0x01, register address = 0xffff】赋值来进行区分,寄存器赋值为0,读写line-side方向的寄存器;寄存器赋值为1,读写为system-side方向的寄存器。
我们在阅读芯片手册的过程中,会发现cl72、cl73之类的字。如果是第一次读相关手册的童鞋们,肯定也是一脸迷惑,并且也很难百度到相关信息。此处的cl72, cl73指代的是802.3协议中的clause 72, clause 73。phy手册中的很多寄存器内容以及名词都没有相关解释,这些寄存器以及名词均可以从802.3手册中找到对应的解释。

cl73-auto-negotiation

IEEE802.3标准中,自协商功能被分为三类,分别在clause 28, clause 37 和 clause 73中进行说明:
1)clause 28规范了使用双绞线作为传输介质的以太网自协商类型
2)clause 37规范了1000BASE-X的以太网类型
3)clause 73规范了backplane ethernet 以及40GBASE-CR4, 100GBASE-CR10以太网的自协商。

上述图表是位于802.3 table 73-6。举例,表中的7.0.9 auto-negotiation restart, 7.0.9代表的是device address = 0x07, register address = 0x00, 第9比特位。自协商的过程是Link partner 发送一张page,其中携带了自协商的信息,该page的信息存储在mr_lp_adv_ability[48:1]。有的phy也会携带next page。我们接下来将查看一下这个48bit的page的具体信息(附:以下信息均可以在802.3 clause 73中找到)
该page 的信息是通过differential manchester encoding(DME)来进行传送的。

D[4:0]: selector field, 一般为00001 代表IEEE STD 802.3
D[5:9]: echoed nonced field,
D[12:10]: advertise capability not related to the phy
D[13:15]: RF, ACK, NP , those bit shall function as specified in 28.2.1.2
D[16:20]: transmitterd nonced field
D[21:45]: technology ability field

D[46:47]: FEC ability
a) F0 is FEC ablity
b) F1 is FEC request

对10G/40Gphy中auto-negotiation功能调试相关推荐

  1. 无线信标功能调试-2021-3-9-HALL检测与主控接口

    ▌01 无线信标控制板 1.功能介绍 在 无线节能信标调试说明-2021-3-3 对于 第十六届全国大学智能汽车竞赛竞速比赛规则 中的无线节能信标组的无线功率部分进行了调试.并对在输出功率50W,15 ...

  2. c语言程序中的基本功能,c语言程序中的基本功能模块为什么?

    c语言程序中的基本功能模块为"函数".一个C语言程序可以由一个主函数和若干个函数构成:一个大的应用程序一般应该分为多个程序模块,每一个模块用来实现一个功能,而模块的功能是由函数完成 ...

  3. 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量

    为什么80%的码农都做不了架构师?>>>    IntelliJ IDEA在业界被公认为最好的Java开发平台之一,JetBrains公司将在12月正式发布IntelliJ IDEA ...

  4. Qt for ios 在 xcode 中编译(便于调试)

    前言 用 Qt 开发 IOS 程序需要搭配最新版的 xcode 才能进行编译,这个毫无疑问吧.如果需要设置程序图标或启动页之类这种平台性的功能,直接在 xcode 中进行设置是最方便的,并且在 xco ...

  5. vue中生产模式和调试模式_为什么在生产中进行调试是如此诱人?

    vue中生产模式和调试模式 生产调试 为什么在生产中进行调试是如此诱人? 在我的第一份工作中,我要做的任务之一是修复一个错误,该错误过去在非常复杂的生产系统中有时会发生. 那很简单! - 我想. 我将 ...

  6. 谷歌浏览器开发调试工具中Sources面板 js调试等 完全介绍

    这次分享的是Chrome开发工具中最有用的面板Sources. Sources面板几乎是我最常用到的Chrome功能面板,也是在我看来决解一般问题的主要功能面板.通常只要是开发遇到了js报错或者其他代 ...

  7. linux 审计oracle,开启和关闭oracle数据库中的审计功能

    开启和关闭oracle数据库中的审计功能 第1步:查看审计功能是否开启? SQL> show parameter audit; NAME           TYPE         VALUE ...

  8. spring 5.x(1)-----Spring Framework 5.x中的新功能

    Spring Framework 5.x中有什么新功能 5.1版中的新功能 一般核心修订 基础设施: 在类路径和模块路径上对JDK 11的无警告支持. 支持Graal原生图像约束(反射,参数名称). ...

  9. .NET Core 3.0中的新功能和增强功能

    目录 介绍 主要变化 Windows桌面支持 本机可执行文件 JSON API 更好的垃​​圾收集器 性能改进 Docker增强 ARM64支持 物联网支持 密码学 与.NET Core 2.2的AP ...

  10. SQL Server 2016 SP1中的新功能和增强功能

    SQL Server 2016 SP1 is released as announced by Microsoft. It comes with a bunch of new features and ...

最新文章

  1. ASP.NET遍历配置文件的连接字符串
  2. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
  3. 408计算机考研大纲 doc,2020计算机专业408基础综合考研大纲
  4. 常见的蓝牙4.0模块
  5. Redis线程IO模型的秘密知多少
  6. Unity3D基础1:进入Unity3D
  7. 轻松调用Google翻译
  8. 最新百度网盘下载神器,免安装、免登录、不限速!一键打开网址就能用
  9. spring boot 报 http 406多种原因问题解决的总结
  10. 欧拉线 Euler line
  11. js获取剪切板文字图片方法
  12. 什么是蛋白质结构域?什么是HTH?
  13. 安装Rstudio-server,使用官网的程序下载安装不合理?其对应的安装包是Ubuntu14,而我的系统是Ubuntu18.
  14. CPU中的八个通用寄存器
  15. [附源码]计算机毕业设计JAVA宠物狗领养网站
  16. 共享内存 shmget函数
  17. 一个人尽然可以管理呢么多网站,强悍
  18. 松川仪表IPO被终止:年营收2.58亿 林茂波夫妇控制77%股权
  19. linux杀死线程函数,Linux线程-pthread_kill
  20. 网络三大参数(IP、NETMASK、PORT)简述

热门文章

  1. Density 计算公式
  2. 如果小米开放购买会怎么样?
  3. 前端二维表转化树结构。支持无限套娃
  4. PHP一句话木马后门
  5. php公众号回复接口,微信公众平台开发接口教程之公众账号自定义回复功能
  6. VUE时间戳和时间相互转换,使用UI库为Ant Design of Vue
  7. 土豆服务器延期修复,Uplay更新失败解决方法 教你对付土豆服务器!
  8. winxp计算机如何连接win7计算机,Win7电脑连接XP系统共享打印机的操作方法
  9. xp计算机连接不上网络打印机驱动,windows xp系统打印机共享提示连接失败的解决方法...
  10. 2020 年,从架构谈起,到 Mesh 结束