On 9/9/26 12:08 PM, Dave Marquardt via B4 Relay wrote:
> From: Dave Marquardt <[email protected]>
>
> Implement support for extended FPIN messages received via the
> asynchronous sub-queue, completing full FPIN functionality.
>
> Extended FPIN messages provide more detailed information about fabric
> events compared to basic FPIN messages, including specific event types,
> modifiers, thresholds, and event counts.
>
> Add ibmvfc_ext_fpin_to_desc() to convert extended FPIN messages from
> async sub-queue format to fc_els_fpin structures with complete descriptor
> information. Update ibmvfc_process_async_work() and ibmvfc_handle_async()
> to zero node_name and dispatch to ibmvfc_ext_fpin_to_desc() when the
> IBMVFC_ASYNC_IS_FPIN_EXT flag is set.
>
> Set the IBMVFC_CAN_HANDLE_FPIN_EXT capability bit during login to inform
> VIOS that the client can process extended FPIN messages. Also add the
> IBMVFC_SUPPORT_FPIN_EXT response capability bit definition used to gate
> extended FPIN processing.
>
> Add KUnit tests to exercise extended FPIN event handling across all
> FPIN status and event type combinations.
>
> struct ibmvfc_async_subq_fpin uses volatile on its valid and wwpn fields,
> consistent with the existing ibmvfc_crq, ibmvfc_async_crq, and
> ibmvfc_async_sub_crq structs in ibmvfc.h, all of which mark their
> hardware-owned ring-buffer fields volatile to prevent the compiler from
> caching or eliminating reads of memory written directly by the VIOS.
>
> Signed-off-by: Dave Marquardt <[email protected]>
> ---
Acked-by: Tyrel Datwyler <[email protected]>