> drivers/infiniband/hw/hfi1/mad.h | 477 > ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 477 insertions(+) > create mode 100644 drivers/infiniband/hw/hfi1/mad.h > > diff --git a/drivers/infiniband/hw/hfi1/mad.h > b/drivers/infiniband/hw/hfi1/mad.h > new file mode 100644 > index 0000000..af61249
Snip > +#include <rdma/ib_pma.h> > +#define USE_PI_LED_ENABLE 1 /* use led enabled bit in struct > + * opa_port_states, if available */ > +#include <rdma/opa_smi.h> > +#include <rdma/opa_port_info.h> > +#ifndef PI_LED_ENABLE_SUP > +#define PI_LED_ENABLE_SUP 0 > +#endif > +#include "opa_compat.h" > + > +#define IB_SMP_UNSUP_VERSION cpu_to_be16(0x0004) > +#define IB_SMP_UNSUP_METHOD cpu_to_be16(0x0008) > +#define IB_SMP_UNSUP_METH_ATTR cpu_to_be16(0x000C) > +#define IB_SMP_INVALID_FIELD cpu_to_be16(0x001C) > + > +struct ib_node_info { > + u8 base_version; > + u8 class_version; > + u8 node_type; > + u8 num_ports; > + __be64 sys_guid; > + __be64 node_guid; > + __be64 port_guid; > + __be16 partition_cap; > + __be16 device_id; > + __be32 revision; > + u8 local_port_num; > + u8 vendor_id[3]; > +} __packed; > + > +struct ib_mad_notice_attr { > + u8 generic_type; > + u8 prod_type_msb; > + __be16 prod_type_lsb; > + __be16 trap_num; > + __be16 issuer_lid; > + __be16 toggle_count; > + > + union { > + struct { > + u8 details[54]; > + } raw_data; > + > + struct { > + __be16 reserved; > + __be16 lid; /* where violation happened */ > + u8 port_num; /* where violation happened */ > + } __packed ntc_129_131; > + > + struct { > + __be16 reserved; > + __be16 lid; /* LID where change occurred */ > + u8 reserved2; > + u8 local_changes; /* low bit - local changes */ > + __be32 new_cap_mask; /* new capability mask */ > + u8 reserved3; > + u8 change_flags; /* low 3 bits only */ > + } __packed ntc_144; > + > + struct { > + __be16 reserved; > + __be16 lid; /* lid where sys guid changed */ > + __be16 reserved2; > + __be64 new_sys_guid; > + } __packed ntc_145; > + > + struct { > + __be16 reserved; > + __be16 lid; > + __be16 dr_slid; > + u8 method; > + u8 reserved2; > + __be16 attr_id; > + __be32 attr_mod; > + __be64 mkey; > + u8 reserved3; > + u8 dr_trunc_hop; > + u8 dr_rtn_path[30]; > + } __packed ntc_256; > + > + struct { > + __be16 reserved; > + __be16 lid1; > + __be16 lid2; > + __be32 key; > + __be32 sl_qp1; /* SL: high 4 bits */ > + __be32 qp2; /* high 8 bits reserved */ > + union ib_gid gid1; > + union ib_gid gid2; > + } __packed ntc_257_258; > + > + } details; > +}; > + > +/* > + * Generic trap/notice types > + */ > +#define IB_NOTICE_TYPE_FATAL 0x80 > +#define IB_NOTICE_TYPE_URGENT 0x81 > +#define IB_NOTICE_TYPE_SECURITY 0x82 > +#define IB_NOTICE_TYPE_SM 0x83 > +#define IB_NOTICE_TYPE_INFO 0x84 Snip the end... These are generic values and data structures. Why are they isolated into a driver specific folder, versus being in a common include location?