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解绑定。