SAS驱动中PHY和PORT的介绍
来源:互联网 发布:手机短信修改软件 编辑:程序博客网 时间:2024/06/03 05:07
SAS驱动中PHY和PORT的介绍
v0.1 20170412 Felix: Init
这篇文档是基于内核Linux-v4.10, hisi_sas驱动,介绍phy,port,及其之间的关系。
1、PHY的介绍
1.1、整体理解PHY
SAS协议共有6层,从上到下依次为: 应用层(application layer), 传输层(transport layer),端口层(port layer), 链路层(link layer), phy层(phy layer), 物理层(physical layer)。
PHY层定义了8b10b编码和解码方式、组成dwords、OOB信号、PHY reset以及速率协商等过程。PHY层的主要作用是实现phy reset系列以及dword的同步。
8b10b编解码:目的是”直流平衡”,为的是不出现大量连续的0和1.
Dwords: 有4个字符组成。
OOB信号:是一个不出现在数据帧中的低速信号。包括COMMINIT、COMSAS、COMWAKE三种信号。其中COMWAKE用于SATA与SATA设备、SATA与SAS设备,COMSAS用于SAS设备之间的交互,COMMINIT则是通用语言。
1.2、软件是怎么定义PHY
libsas层的phy定义成struct asd_sas_phy。
LLDD层的phy则是对libsas phy做了封装,定义成struct hisi_sas_phy。
SAS控制器一般支持8个PHY,放在hisi_hba中,HBA初始化的时候统一分配内存,并初始化。在phyup中断后,会找一个port进行绑定。phydown之后,则与port解绑定。
8个PHY对应的asd_sas_phy及hisi_sas_phy内存是固定的,PHY的下标(0~7)就存在asd_sas_phy中。
小窍门:所有libsas接口用到的phy,都是struct asd_sas_phy,对port也适用。
2.PORT的介绍
1.1、整体理解PORT
端口层实际上起从传输层到链路层的承接作用。一个或多个phy可以构成一个端口。
硬盘挂是在port上的,可以共享port下面所有的phy资源。还没弄清楚,一次传输具体是使用哪个phy,或者是说phy的选择是在逻辑上实现的?
2.2、软件是怎么定义PORT
与phy的定义类似:
libsas层的port定义成struct asd_sas_port。
LLDD层的port则是对libsas port做了封装,定义成struct hisi_sas_port。
HBA初始化的时候也分配了8个port的内存,都标记为未使用,sas_form_port会为新上来的phy分配port,并调用lldd_port_form()进行绑定。
- SAS驱动中PHY和PORT的介绍
- MAC和PHY的介绍
- 移植linux网卡驱动中关于mac芯片和phy之间的常用接口知识
- MAC和PHY接口介绍
- sas中Libname和filename的不同
- SAS中nodupkey和nodup的区别
- SAS中单引号和双引号的区别
- SAS软件的使用和统计学分析的初步介绍
- SAS软件的使用和统计学分析的初步介绍
- 一次PHY驱动的调试有感
- 网络结构及mac和phy介绍
- SAS的数组array介绍
- MAC和PHY的关系
- mac和phy的关系
- MAC和PHY的区别
- MAC和PHY的区别
- MAC和PHY的区别
- MAC和PHY的区别
- GDOI2017模拟04.12总结
- 二叉树的基本操作(五)——2-3树的概念
- VC学习1: 函数返回类实例的方法
- 用java实现数据挖掘中的向量求相似度
- M/在Makefile中进行宏定义-D
- SAS驱动中PHY和PORT的介绍
- ACM Fibonacci数
- css样式大全
- C语言设计24点游戏。
- 【hibernate】hibernate中的各种问题
- web导入excel(利用POI解析)
- python中 __name__及__main()__的妙处
- Atitit 列表表格按照字段排序数据解决方案
- Android Scroll分析(一)滑动效果产生分析