18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  FC Transport Netlink Interface
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci *  Copyright (C) 2006   James Smart, Emulex Corporation
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci#ifndef SCSI_NETLINK_FC_H
88c2ecf20Sopenharmony_ci#define SCSI_NETLINK_FC_H
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#include <linux/types.h>
118c2ecf20Sopenharmony_ci#include <scsi/scsi_netlink.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci/*
148c2ecf20Sopenharmony_ci * This file intended to be included by both kernel and user space
158c2ecf20Sopenharmony_ci */
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci/*
188c2ecf20Sopenharmony_ci * FC Transport Message Types
198c2ecf20Sopenharmony_ci */
208c2ecf20Sopenharmony_ci	/* kernel -> user */
218c2ecf20Sopenharmony_ci#define FC_NL_ASYNC_EVENT			0x0100
228c2ecf20Sopenharmony_ci	/* user -> kernel */
238c2ecf20Sopenharmony_ci/* none */
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci/*
278c2ecf20Sopenharmony_ci * Message Structures :
288c2ecf20Sopenharmony_ci */
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci/* macro to round up message lengths to 8byte boundary */
318c2ecf20Sopenharmony_ci#define FC_NL_MSGALIGN(len)		(((len) + 7) & ~7)
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci/*
358c2ecf20Sopenharmony_ci * FC Transport Broadcast Event Message :
368c2ecf20Sopenharmony_ci *   FC_NL_ASYNC_EVENT
378c2ecf20Sopenharmony_ci *
388c2ecf20Sopenharmony_ci * Note: if Vendor Unique message, &event_data will be  start of
398c2ecf20Sopenharmony_ci * 	 vendor unique payload, and the length of the payload is
408c2ecf20Sopenharmony_ci *       per event_datalen
418c2ecf20Sopenharmony_ci *
428c2ecf20Sopenharmony_ci * Note: When specifying vendor_id, be sure to read the Vendor Type and ID
438c2ecf20Sopenharmony_ci *   formatting requirements specified in scsi_netlink.h
448c2ecf20Sopenharmony_ci */
458c2ecf20Sopenharmony_cistruct fc_nl_event {
468c2ecf20Sopenharmony_ci	struct scsi_nl_hdr snlh;		/* must be 1st element ! */
478c2ecf20Sopenharmony_ci	__u64 seconds;
488c2ecf20Sopenharmony_ci	__u64 vendor_id;
498c2ecf20Sopenharmony_ci	__u16 host_no;
508c2ecf20Sopenharmony_ci	__u16 event_datalen;
518c2ecf20Sopenharmony_ci	__u32 event_num;
528c2ecf20Sopenharmony_ci	__u32 event_code;
538c2ecf20Sopenharmony_ci	__u32 event_data;
548c2ecf20Sopenharmony_ci} __attribute__((aligned(sizeof(__u64))));
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci#endif /* SCSI_NETLINK_FC_H */
588c2ecf20Sopenharmony_ci
59