/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * SCSI Transport Netlink Interface * Used for the posting of outbound SCSI transport events * * Copyright (C) 2006 James Smart, Emulex Corporation */ #ifndef SCSI_NETLINK_H #define SCSI_NETLINK_H #include <linux/netlink.h> #include <linux/types.h> /* * This file intended to be included by both kernel and user space */ /* Single Netlink Message type to send all SCSI Transport messages */ #define SCSI_TRANSPORT_MSG … /* SCSI Transport Broadcast Groups */ /* leaving groups 0 and 1 unassigned */ #define SCSI_NL_GRP_FC_EVENTS … #define SCSI_NL_GRP_CNT … /* SCSI_TRANSPORT_MSG event message header */ struct scsi_nl_hdr { … } __attribute__((aligned …)); /* scsi_nl_hdr->version value */ #define SCSI_NL_VERSION … /* scsi_nl_hdr->magic value */ #define SCSI_NL_MAGIC … /* scsi_nl_hdr->transport value */ #define SCSI_NL_TRANSPORT … #define SCSI_NL_TRANSPORT_FC … #define SCSI_NL_MAX_TRANSPORTS … /* Transport-based scsi_nl_hdr->msgtype values are defined in each transport */ /* * GENERIC SCSI scsi_nl_hdr->msgtype Values */ /* kernel -> user */ #define SCSI_NL_SHOST_VENDOR … /* user -> kernel */ /* SCSI_NL_SHOST_VENDOR msgtype is kernel->user and user->kernel */ /* * Message Structures : */ /* macro to round up message lengths to 8byte boundary */ #define SCSI_NL_MSGALIGN(len) … /* * SCSI HOST Vendor Unique messages : * SCSI_NL_SHOST_VENDOR * * Note: The Vendor Unique message payload will begin directly after * this structure, with the length of the payload per vmsg_datalen. * * Note: When specifying vendor_id, be sure to read the Vendor Type and ID * formatting requirements specified below */ struct scsi_nl_host_vendor_msg { … } __attribute__((aligned …)); /* * Vendor ID: * If transports post vendor-unique events, they must pass a well-known * 32-bit vendor identifier. This identifier consists of 8 bits indicating * the "type" of identifier contained, and 24 bits of id data. * * Identifiers for each type: * PCI : ID data is the 16 bit PCI Registered Vendor ID */ #define SCSI_NL_VID_TYPE_SHIFT … #define SCSI_NL_VID_TYPE_MASK … #define SCSI_NL_VID_TYPE_PCI … #define SCSI_NL_VID_ID_MASK … #define INIT_SCSI_NL_HDR(hdr, t, mtype, mlen) … #endif /* SCSI_NETLINK_H */