11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*****************************************************************************/ 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* srp.h -- SCSI RDMA Protocol definitions */ 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Written By: Colin Devilbis, IBM Corporation */ 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Copyright (C) 2003 IBM Corporation */ 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* This program is free software; you can redistribute it and/or modify */ 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* it under the terms of the GNU General Public License as published by */ 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* the Free Software Foundation; either version 2 of the License, or */ 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* (at your option) any later version. */ 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* This program is distributed in the hope that it will be useful, */ 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* GNU General Public License for more details. */ 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* You should have received a copy of the GNU General Public License */ 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* along with this program; if not, write to the Free Software */ 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* This file contains structures and definitions for IBM RPA (RS/6000 */ 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* platform architecture) implementation of the SRP (SCSI RDMA Protocol) */ 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* standard. SRP is used on IBM iSeries and pSeries platforms to send SCSI */ 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* commands between logical partitions. */ 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* */ 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* SRP Information Units (IUs) are sent on a "Command/Response Queue" (CRQ) */ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* between partitions. The definitions in this file are architected, */ 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* and cannot be changed without breaking compatibility with other versions */ 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* of Linux and other operating systems (AIX, OS/400) that talk this protocol*/ 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* between logical partitions */ 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*****************************************************************************/ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef VIOSRP_H 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define VIOSRP_H 36ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori#include <scsi/srp.h> 37ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori 38ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori#define SRP_VERSION "16.a" 39ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori#define SRP_MAX_IU_LEN 256 40126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King#define SRP_MAX_LOC_LEN 32 41ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori 42ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonoriunion srp_iu { 43ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_login_req login_req; 44ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_login_rsp login_rsp; 45ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_login_rej login_rej; 46ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_i_logout i_logout; 47ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_t_logout t_logout; 48ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_tsk_mgmt tsk_mgmt; 49ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_cmd cmd; 50ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori struct srp_rsp rsp; 51ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori u8 reserved[SRP_MAX_IU_LEN]; 52ef265673434680f2307ceafae4a2badc657e94ccFUJITA Tomonori}; 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsenum viosrp_crq_formats { 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_SRP_FORMAT = 0x01, 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_MAD_FORMAT = 0x02, 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_OS400_FORMAT = 0x03, 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_AIX_FORMAT = 0x04, 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_LINUX_FORMAT = 0x06, 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_INLINE_FORMAT = 0x07 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 63c3a3b55ae80a0d595445064159c69f8e80911e85Brian Kingenum viosrp_crq_status { 64c3a3b55ae80a0d595445064159c69f8e80911e85Brian King VIOSRP_OK = 0x0, 65c3a3b55ae80a0d595445064159c69f8e80911e85Brian King VIOSRP_NONRECOVERABLE_ERR = 0x1, 66c3a3b55ae80a0d595445064159c69f8e80911e85Brian King VIOSRP_VIOLATES_MAX_XFER = 0x2, 67c3a3b55ae80a0d595445064159c69f8e80911e85Brian King VIOSRP_PARTNER_PANIC = 0x3, 68c3a3b55ae80a0d595445064159c69f8e80911e85Brian King VIOSRP_DEVICE_BUSY = 0x8, 69ca61668b82a902143997794aae3f681a602e6ebcBrian King VIOSRP_ADAPTER_FAIL = 0x10, 70ca61668b82a902143997794aae3f681a602e6ebcBrian King VIOSRP_OK2 = 0x99, 71c3a3b55ae80a0d595445064159c69f8e80911e85Brian King}; 72c3a3b55ae80a0d595445064159c69f8e80911e85Brian King 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct viosrp_crq { 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 valid; /* used by RPA */ 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 format; /* SCSI vs out-of-band */ 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 reserved; 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 status; /* non-scsi failure? (e.g. DMA failure) */ 7872264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be16 timeout; /* in seconds */ 7972264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be16 IU_length; /* in bytes */ 8072264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 IU_data_ptr; /* the TCE for transferring data */ 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* MADs are Management requests above and beyond the IUs defined in the SRP 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * standard. 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsenum viosrp_mad_types { 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_EMPTY_IU_TYPE = 0x01, 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_ERROR_LOG_TYPE = 0x02, 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VIOSRP_ADAPTER_INFO_TYPE = 0x03, 90c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings VIOSRP_HOST_CONFIG_TYPE = 0x04, 91126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King VIOSRP_CAPABILITIES_TYPE = 0x05, 92c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings VIOSRP_ENABLE_FAST_FAIL = 0x08, 93c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings}; 94c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings 95c1988e3123751fd425fbae99d5c1776608e965a9Robert Jenningsenum viosrp_mad_status { 96c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings VIOSRP_MAD_SUCCESS = 0x00, 97c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings VIOSRP_MAD_NOT_SUPPORTED = 0xF1, 98c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings VIOSRP_MAD_FAILED = 0xF7, 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 101126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingenum viosrp_capability_type { 102126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King MIGRATION_CAPABILITIES = 0x01, 103126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King RESERVATION_CAPABILITIES = 0x02, 104126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 105126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 106126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingenum viosrp_capability_support { 107126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King SERVER_DOES_NOT_SUPPORTS_CAP = 0x0, 108126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King SERVER_SUPPORTS_CAP = 0x01, 109126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King SERVER_CAP_DATA = 0x02, 110126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 111126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 112126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingenum viosrp_reserve_type { 113126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King CLIENT_RESERVE_SCSI_2 = 0x01, 114126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 115126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 116126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingenum viosrp_capability_flag { 117126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King CLIENT_MIGRATED = 0x01, 118126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King CLIENT_RECONNECT = 0x02, 119126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King CAP_LIST_SUPPORTED = 0x04, 120126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King CAP_LIST_DATA = 0x08, 121126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 122126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Common MAD header 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mad_common { 12772264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 type; 12872264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be16 status; 12972264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be16 length; 13072264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 tag; 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * All SRP (and MAD) requests normally flow from the 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * client to the server. There is no way for the server to send 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * an asynchronous message back to the client. The Empty IU is used 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * to hang out a meaningless request to the server so that it can respond 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * asynchrouously with something like a SCSI AER 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct viosrp_empty_iu { 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct mad_common common; 14272264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 buffer; 14372264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 port; 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct viosrp_error_log { 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct mad_common common; 14872264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 buffer; 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct viosrp_adapter_info { 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct mad_common common; 15372264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 buffer; 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct viosrp_host_config { 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct mad_common common; 15872264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 buffer; 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 161c1988e3123751fd425fbae99d5c1776608e965a9Robert Jenningsstruct viosrp_fast_fail { 162c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings struct mad_common common; 163c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings}; 164c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings 165126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingstruct viosrp_capabilities { 166126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King struct mad_common common; 16772264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be64 buffer; 168126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 169126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 170126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingstruct mad_capability_common { 17172264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 cap_type; 17272264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be16 length; 17372264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be16 server_support; 174126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 175126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 176126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingstruct mad_reserve_cap { 177126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King struct mad_capability_common common; 17872264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 type; 179126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 180126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 181126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingstruct mad_migration_cap { 182126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King struct mad_capability_common common; 18372264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 ecl; 184126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 185126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 186126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian Kingstruct capabilities{ 18772264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 flags; 188126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King char name[SRP_MAX_LOC_LEN]; 189126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King char loc[SRP_MAX_LOC_LEN]; 190126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King struct mad_migration_cap migration; 191126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King struct mad_reserve_cap reserve; 192126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King}; 193126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunion mad_iu { 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct viosrp_empty_iu empty_iu; 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct viosrp_error_log error_log; 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct viosrp_adapter_info adapter_info; 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct viosrp_host_config host_config; 199c1988e3123751fd425fbae99d5c1776608e965a9Robert Jennings struct viosrp_fast_fail fast_fail; 200126c5cc37e682e7c5ae96754994b1cb50c2d0cb5Brian King struct viosrp_capabilities capabilities; 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunion viosrp_iu { 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds union srp_iu srp; 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds union mad_iu mad; 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mad_adapter_info_data { 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char srp_version[8]; 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char partition_name[96]; 21172264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 partition_number; 21272264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 mad_version; 21372264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 os_type; 21472264eb6dbb9090265f6c87e49db78c4306bc1c3Anton Blanchard __be32 port_max_txu[8]; /* per-port maximum transfer */ 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 218