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