IB协议中经常会提到Asychronous,它表示事件或错误不与特定的消息传输相关联。本文主要介绍Asynchronous Event与Asynchronous Error的相关内容。
1 Registering a Handler
software执行Set Asychronous Event Handler verb以注册一个处理程序,以便在HCA遇到Asynchronous Event 或 Asynchronous Error 时调用该程序。
每当HCA遇到Asynchronous Event 或 Asynchronous Error 时,它会警告其设备驱动程序(通常通过中断),传递给驱动程序的参数是:
- HCA句柄。
- 事件记录。包含指示资源类型和RID(Record ID)的信息,以及发生事件。
驱动程序依次调用异步事件处理程序,并将HCA句柄与事件记录传递给它 。
注册后,所有后续的异步错误将调用错误处理程序,在注册错误处理程序之前发生的异步错误将会丢失。每个HCA只能注册一个错误处理程序,后续调用Set Asychronous Event Handler verb将导致先前的处理程序地址被新的覆盖。
2 Affiliated Asychronous Events
“Affiliated”表示事件与特定的QP或EEC相关联。“Event”表示它并不是错误,而是software可能会发现有用的事件,因此相关的QP与EEC的状态保持不变。当前定义的关联异步事件有:
- Path Migrated。连接被迁移到备用路径。
- Communication Established。表明当QP或EEC仍处于RTR状态,