140 lines · c
1/*2 * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved.3 *4 * This software is available to you under a choice of one of two5 * licenses. You may choose to be licensed under the terms of the GNU6 * General Public License (GPL) Version 2, available from the file7 * COPYING in the main directory of this source tree, or the8 * OpenIB.org BSD license below:9 *10 * Redistribution and use in source and binary forms, with or11 * without modification, are permitted provided that the following12 * conditions are met:13 *14 * - Redistributions of source code must retain the above15 * copyright notice, this list of conditions and the following16 * disclaimer.17 *18 * - Redistributions in binary form must reproduce the above19 * copyright notice, this list of conditions and the following20 * disclaimer in the documentation and/or other materials21 * provided with the distribution.22 *23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE30 * SOFTWARE.31 *32 */33 34#ifndef IB_DM_MAD_H35#define IB_DM_MAD_H36 37#include <linux/types.h>38 39#include <rdma/ib_mad.h>40 41enum {42 /*43 * See also section 13.4.7 Status Field, table 115 MAD Common Status44 * Field Bit Values and also section 16.3.1.1 Status Field in the45 * InfiniBand Architecture Specification.46 */47 DM_MAD_STATUS_UNSUP_METHOD = 0x0008,48 DM_MAD_STATUS_UNSUP_METHOD_ATTR = 0x000c,49 DM_MAD_STATUS_INVALID_FIELD = 0x001c,50 DM_MAD_STATUS_NO_IOC = 0x0100,51 52 /*53 * See also the Device Management chapter, section 16.3.3 Attributes,54 * table 279 Device Management Attributes in the InfiniBand55 * Architecture Specification.56 */57 DM_ATTR_CLASS_PORT_INFO = 0x01,58 DM_ATTR_IOU_INFO = 0x10,59 DM_ATTR_IOC_PROFILE = 0x11,60 DM_ATTR_SVC_ENTRIES = 0x1261};62 63struct ib_dm_hdr {64 u8 reserved[28];65};66 67/*68 * Structure of management datagram sent by the SRP target implementation.69 * Contains a management datagram header, reliable multi-packet transaction70 * protocol (RMPP) header and ib_dm_hdr. Notes:71 * - The SRP target implementation does not use RMPP or ib_dm_hdr when sending72 * management datagrams.73 * - The header size must be exactly 64 bytes (IB_MGMT_DEVICE_HDR), since this74 * is the header size that is passed to ib_create_send_mad() in ib_srpt.c.75 * - The maximum supported size for a management datagram when not using RMPP76 * is 256 bytes -- 64 bytes header and 192 (IB_MGMT_DEVICE_DATA) bytes data.77 */78struct ib_dm_mad {79 struct ib_mad_hdr mad_hdr;80 struct ib_rmpp_hdr rmpp_hdr;81 struct ib_dm_hdr dm_hdr;82 u8 data[IB_MGMT_DEVICE_DATA];83};84 85/*86 * IOUnitInfo as defined in section 16.3.3.3 IOUnitInfo of the InfiniBand87 * Architecture Specification.88 */89struct ib_dm_iou_info {90 __be16 change_id;91 u8 max_controllers;92 u8 op_rom;93 u8 controller_list[128];94};95 96/*97 * IOControllerprofile as defined in section 16.3.3.4 IOControllerProfile of98 * the InfiniBand Architecture Specification.99 */100struct ib_dm_ioc_profile {101 __be64 guid;102 __be32 vendor_id;103 __be32 device_id;104 __be16 device_version;105 __be16 reserved1;106 __be32 subsys_vendor_id;107 __be32 subsys_device_id;108 __be16 io_class;109 __be16 io_subclass;110 __be16 protocol;111 __be16 protocol_version;112 __be16 service_conn;113 __be16 initiators_supported;114 __be16 send_queue_depth;115 u8 reserved2;116 u8 rdma_read_depth;117 __be32 send_size;118 __be32 rdma_size;119 u8 op_cap_mask;120 u8 svc_cap_mask;121 u8 num_svc_entries;122 u8 reserved3[9];123 u8 id_string[64];124};125 126struct ib_dm_svc_entry {127 u8 name[40];128 __be64 id;129};130 131/*132 * See also section 16.3.3.5 ServiceEntries in the InfiniBand Architecture133 * Specification. See also section B.7, table B.8 in the T10 SRP r16a document.134 */135struct ib_dm_svc_entries {136 struct ib_dm_svc_entry service_entries[4];137};138 139#endif140