编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

GLDv2 DLPI 原语

GLDv2 实现某些 DLPI 原语。DL_INFO_REQ 原语请求有关 DLPI 流的信息。消息包含一个 M_PROTO 消息块。GLDv2 将在对此请求的 DL_INFO_ACK 响应中返回与设备有关的值。这些值以基于 GLDv2 的驱动程序在传递给 gld_register(9F) 函数的 gld_mac_info(9S) 结构中指定的信息为基础。

    GLDv2 代表所有基于 GLDv2 驱动程序返回以下值:

  • 版本为 DL_VERSION_2

  • 服务模式为 DL_CLDLS。GLDv2 实现无连接模式的服务。

  • 提供者样式为 DL_STYLE1DL_STYLE2,具体取决于流的启动方式。

  • 不存在可选的服务质量 (Quality of Service, QOS) 支持。QOS 字段是 0。


注 - 与 DLPI 规范相反,即使在将流附加到 PPA 之前,GLDv2 也会在 DL_INFO_ACK 中返回设备的正确地址长度和广播地址。

DL_ATTACH_REQ 原语用于将 PPA 与流相关联。样式 2 DLS 提供者标识用于发送通信的物理介质时需要此请求。完成时,状态会从 DL_UNATTACHED 更改为 DL_UNBOUND。消息包含一个 M_PROTO 消息块。使用样式 1 模式时,不允许此请求。使用样式 1 打开的流已在打开完成时附加到 PPA。

DL_DETACH_REQ 原语请求将 PPA 与流相分离。仅当流使用样式 2 打开时,才允许此分离。

DL_BIND_REQDL_UNBIND_REQ 原语用于将 DLSAP(data link service access point,数据链路服务访问点)与流绑定和解除绑定。与流关联的 PPA 在完成处理该流上的 DL_BIND_REQ 之前完成初始化。可以将多个流绑定到同一 SAP。在这种情况下,每个流都接收针对此 SAP 接收的所有包的副本。

DL_ENABMULTI_REQDL_DISABMULTI_REQ 原语启用和禁用各多播组地址的接收。通过重复使用这些原语,应用程序或其他 DLS 用户可以创建或修改一组多播地址。必须将流附加到 PPA 才能接受这些原语。

DL_PROMISCON_REQDL_PROMISCOFF_REQ 原语以每个流为基础启动和关闭混杂模式。这些控制项既可在物理级别运行,也可在 SAP 级别运行。DL 提供者通过介质将所有已接收的消息路由到 DLS 用户。路由将继续进行,直到收到 DL_DETACH_REQ、收到 DL_PROMISCOFF_REQ 或关闭流为止。可以针对介质上的所有包或仅针对多播包指定物理级别混杂接收。


注 - 必须将流附加到 PPA 才能接受这些混杂模式原语。

DL_UNITDATA_REQ 原语用于在无连接传输中发送数据。由于此服务未得到确认,因此无法保证传送。消息包含一个 M_PROTO 消息块,以及一个或多个至少包含一个字节数据的 M_DATA 块。

在包向上游传递时,会使用 DL_UNITDATA_IND 类型。将包放入 M_PROTO 消息中,并将原语设置为 DL_UNITDATA_IND

DL_PHYS_ADDR_REQ 原语请求当前与附加到流的 PPA 相关联的 MAC 地址。此地址将通过 DL_PHYS_ADDR_ACK 原语返回。使用样式 2 时,仅当成功执行 DL_ATTACH_REQ 之后此原语才有效。

DL_SET_PHYS_ADDR_REQ 原语更改当前与附加到流的 PPA 相关联的 MAC 地址。此原语会影响附加到此设备的所有其他当前流和将来流。更改之后,当前或随后打开并附加到此设备的所有流都将获取这一新的物理地址。在此原语再次更改物理地址或重新装入驱动程序之前,新的物理地址将一直有效。


注 - 允许超级用户在其他流绑定到 PPA 时更改同一 PPA 的物理地址。

DL_GET_STATISTICS_REQ 原语请求包含与附加到流的 PPA 相关的统计信息的 DL_GET_STATISTICS_ACK 响应。必须使用 DL_ATTACH_REQ 将样式 2 流附加到特定 PPA,此原语才能成功执行。