11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds * Copyright (c) 2004, 2005 Topspin Communications. All rights reserved. 32a1d9b7fSRoland Dreier * Copyright (c) 2005 Mellanox Technologies. All rights reserved. 44885bf64SRoland Dreier * Copyright (c) 2006 Cisco Systems. All rights reserved. 51da177e4SLinus Torvalds * 61da177e4SLinus Torvalds * This software is available to you under a choice of one of two 71da177e4SLinus Torvalds * licenses. You may choose to be licensed under the terms of the GNU 81da177e4SLinus Torvalds * General Public License (GPL) Version 2, available from the file 91da177e4SLinus Torvalds * COPYING in the main directory of this source tree, or the 101da177e4SLinus Torvalds * OpenIB.org BSD license below: 111da177e4SLinus Torvalds * 121da177e4SLinus Torvalds * Redistribution and use in source and binary forms, with or 131da177e4SLinus Torvalds * without modification, are permitted provided that the following 141da177e4SLinus Torvalds * conditions are met: 151da177e4SLinus Torvalds * 161da177e4SLinus Torvalds * - Redistributions of source code must retain the above 171da177e4SLinus Torvalds * copyright notice, this list of conditions and the following 181da177e4SLinus Torvalds * disclaimer. 191da177e4SLinus Torvalds * 201da177e4SLinus Torvalds * - Redistributions in binary form must reproduce the above 211da177e4SLinus Torvalds * copyright notice, this list of conditions and the following 221da177e4SLinus Torvalds * disclaimer in the documentation and/or other materials 231da177e4SLinus Torvalds * provided with the distribution. 241da177e4SLinus Torvalds * 251da177e4SLinus Torvalds * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 261da177e4SLinus Torvalds * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 271da177e4SLinus Torvalds * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 281da177e4SLinus Torvalds * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 291da177e4SLinus Torvalds * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 301da177e4SLinus Torvalds * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 311da177e4SLinus Torvalds * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 321da177e4SLinus Torvalds * SOFTWARE. 331da177e4SLinus Torvalds * 341da177e4SLinus Torvalds * $Id: mthca_cmd.h 1349 2004-12-16 21:09:43Z roland $ 351da177e4SLinus Torvalds */ 361da177e4SLinus Torvalds 371da177e4SLinus Torvalds #ifndef MTHCA_CMD_H 381da177e4SLinus Torvalds #define MTHCA_CMD_H 391da177e4SLinus Torvalds 40a4d61e84SRoland Dreier #include <rdma/ib_verbs.h> 411da177e4SLinus Torvalds 42ed878458SRoland Dreier #define MTHCA_MAILBOX_SIZE 4096 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds enum { 451da177e4SLinus Torvalds /* command completed successfully: */ 461da177e4SLinus Torvalds MTHCA_CMD_STAT_OK = 0x00, 471da177e4SLinus Torvalds /* Internal error (such as a bus error) occurred while processing command: */ 481da177e4SLinus Torvalds MTHCA_CMD_STAT_INTERNAL_ERR = 0x01, 491da177e4SLinus Torvalds /* Operation/command not supported or opcode modifier not supported: */ 501da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_OP = 0x02, 511da177e4SLinus Torvalds /* Parameter not supported or parameter out of range: */ 521da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_PARAM = 0x03, 531da177e4SLinus Torvalds /* System not enabled or bad system state: */ 541da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_SYS_STATE = 0x04, 551da177e4SLinus Torvalds /* Attempt to access reserved or unallocaterd resource: */ 561da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_RESOURCE = 0x05, 571da177e4SLinus Torvalds /* Requested resource is currently executing a command, or is otherwise busy: */ 581da177e4SLinus Torvalds MTHCA_CMD_STAT_RESOURCE_BUSY = 0x06, 591da177e4SLinus Torvalds /* memory error: */ 601da177e4SLinus Torvalds MTHCA_CMD_STAT_DDR_MEM_ERR = 0x07, 611da177e4SLinus Torvalds /* Required capability exceeds device limits: */ 621da177e4SLinus Torvalds MTHCA_CMD_STAT_EXCEED_LIM = 0x08, 631da177e4SLinus Torvalds /* Resource is not in the appropriate state or ownership: */ 641da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_RES_STATE = 0x09, 651da177e4SLinus Torvalds /* Index out of range: */ 661da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_INDEX = 0x0a, 671da177e4SLinus Torvalds /* FW image corrupted: */ 681da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_NVMEM = 0x0b, 691da177e4SLinus Torvalds /* Attempt to modify a QP/EE which is not in the presumed state: */ 701da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_QPEE_STATE = 0x10, 711da177e4SLinus Torvalds /* Bad segment parameters (Address/Size): */ 721da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_SEG_PARAM = 0x20, 731da177e4SLinus Torvalds /* Memory Region has Memory Windows bound to: */ 741da177e4SLinus Torvalds MTHCA_CMD_STAT_REG_BOUND = 0x21, 751da177e4SLinus Torvalds /* HCA local attached memory not present: */ 761da177e4SLinus Torvalds MTHCA_CMD_STAT_LAM_NOT_PRE = 0x22, 771da177e4SLinus Torvalds /* Bad management packet (silently discarded): */ 781da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_PKT = 0x30, 791da177e4SLinus Torvalds /* More outstanding CQEs in CQ than new CQ size: */ 801da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_SIZE = 0x40 811da177e4SLinus Torvalds }; 821da177e4SLinus Torvalds 831da177e4SLinus Torvalds enum { 841da177e4SLinus Torvalds MTHCA_TRANS_INVALID = 0, 851da177e4SLinus Torvalds MTHCA_TRANS_RST2INIT, 861da177e4SLinus Torvalds MTHCA_TRANS_INIT2INIT, 871da177e4SLinus Torvalds MTHCA_TRANS_INIT2RTR, 881da177e4SLinus Torvalds MTHCA_TRANS_RTR2RTS, 891da177e4SLinus Torvalds MTHCA_TRANS_RTS2RTS, 901da177e4SLinus Torvalds MTHCA_TRANS_SQERR2RTS, 911da177e4SLinus Torvalds MTHCA_TRANS_ANY2ERR, 921da177e4SLinus Torvalds MTHCA_TRANS_RTS2SQD, 931da177e4SLinus Torvalds MTHCA_TRANS_SQD2SQD, 941da177e4SLinus Torvalds MTHCA_TRANS_SQD2RTS, 951da177e4SLinus Torvalds MTHCA_TRANS_ANY2RST, 961da177e4SLinus Torvalds }; 971da177e4SLinus Torvalds 981da177e4SLinus Torvalds enum { 991da177e4SLinus Torvalds DEV_LIM_FLAG_RC = 1 << 0, 1001da177e4SLinus Torvalds DEV_LIM_FLAG_UC = 1 << 1, 1011da177e4SLinus Torvalds DEV_LIM_FLAG_UD = 1 << 2, 1021da177e4SLinus Torvalds DEV_LIM_FLAG_RD = 1 << 3, 1031da177e4SLinus Torvalds DEV_LIM_FLAG_RAW_IPV6 = 1 << 4, 1041da177e4SLinus Torvalds DEV_LIM_FLAG_RAW_ETHER = 1 << 5, 1051da177e4SLinus Torvalds DEV_LIM_FLAG_SRQ = 1 << 6, 1061da177e4SLinus Torvalds DEV_LIM_FLAG_BAD_PKEY_CNTR = 1 << 8, 1071da177e4SLinus Torvalds DEV_LIM_FLAG_BAD_QKEY_CNTR = 1 << 9, 1081da177e4SLinus Torvalds DEV_LIM_FLAG_MW = 1 << 16, 1091da177e4SLinus Torvalds DEV_LIM_FLAG_AUTO_PATH_MIG = 1 << 17, 1101da177e4SLinus Torvalds DEV_LIM_FLAG_ATOMIC = 1 << 18, 1111da177e4SLinus Torvalds DEV_LIM_FLAG_RAW_MULTI = 1 << 19, 1121da177e4SLinus Torvalds DEV_LIM_FLAG_UD_AV_PORT_ENFORCE = 1 << 20, 1131da177e4SLinus Torvalds DEV_LIM_FLAG_UD_MULTI = 1 << 21, 1141da177e4SLinus Torvalds }; 1151da177e4SLinus Torvalds 116ed878458SRoland Dreier struct mthca_mailbox { 117ed878458SRoland Dreier dma_addr_t dma; 118ed878458SRoland Dreier void *buf; 119ed878458SRoland Dreier }; 120ed878458SRoland Dreier 1211da177e4SLinus Torvalds struct mthca_dev_lim { 1221da177e4SLinus Torvalds int max_srq_sz; 1231da177e4SLinus Torvalds int max_qp_sz; 1241da177e4SLinus Torvalds int reserved_qps; 1251da177e4SLinus Torvalds int max_qps; 1261da177e4SLinus Torvalds int reserved_srqs; 1271da177e4SLinus Torvalds int max_srqs; 1281da177e4SLinus Torvalds int reserved_eecs; 1291da177e4SLinus Torvalds int max_eecs; 1301da177e4SLinus Torvalds int max_cq_sz; 1311da177e4SLinus Torvalds int reserved_cqs; 1321da177e4SLinus Torvalds int max_cqs; 1331da177e4SLinus Torvalds int max_mpts; 1341da177e4SLinus Torvalds int reserved_eqs; 1351da177e4SLinus Torvalds int max_eqs; 1361da177e4SLinus Torvalds int reserved_mtts; 1371da177e4SLinus Torvalds int max_mrw_sz; 1381da177e4SLinus Torvalds int reserved_mrws; 1391da177e4SLinus Torvalds int max_mtt_seg; 1401da177e4SLinus Torvalds int max_requester_per_qp; 1411da177e4SLinus Torvalds int max_responder_per_qp; 1421da177e4SLinus Torvalds int max_rdma_global; 1431da177e4SLinus Torvalds int local_ca_ack_delay; 1441da177e4SLinus Torvalds int max_mtu; 1451da177e4SLinus Torvalds int max_port_width; 1461da177e4SLinus Torvalds int max_vl; 1471da177e4SLinus Torvalds int num_ports; 1481da177e4SLinus Torvalds int max_gids; 149bf6a9e31SJack Morgenstein u16 stat_rate_support; 1501da177e4SLinus Torvalds int max_pkeys; 1511da177e4SLinus Torvalds u32 flags; 1521da177e4SLinus Torvalds int reserved_uars; 1531da177e4SLinus Torvalds int uar_size; 1541da177e4SLinus Torvalds int min_page_sz; 1551da177e4SLinus Torvalds int max_sg; 1561da177e4SLinus Torvalds int max_desc_sz; 1571da177e4SLinus Torvalds int max_qp_per_mcg; 1581da177e4SLinus Torvalds int reserved_mgms; 1591da177e4SLinus Torvalds int max_mcgs; 1601da177e4SLinus Torvalds int reserved_pds; 1611da177e4SLinus Torvalds int max_pds; 1621da177e4SLinus Torvalds int reserved_rdds; 1631da177e4SLinus Torvalds int max_rdds; 1641da177e4SLinus Torvalds int eec_entry_sz; 1651da177e4SLinus Torvalds int qpc_entry_sz; 1661da177e4SLinus Torvalds int eeec_entry_sz; 1671da177e4SLinus Torvalds int eqpc_entry_sz; 1681da177e4SLinus Torvalds int eqc_entry_sz; 1691da177e4SLinus Torvalds int cqc_entry_sz; 1701da177e4SLinus Torvalds int srq_entry_sz; 1711da177e4SLinus Torvalds int uar_scratch_entry_sz; 1721da177e4SLinus Torvalds int mpt_entry_sz; 1731da177e4SLinus Torvalds union { 1741da177e4SLinus Torvalds struct { 1751da177e4SLinus Torvalds int max_avs; 1761da177e4SLinus Torvalds } tavor; 1771da177e4SLinus Torvalds struct { 1781da177e4SLinus Torvalds int resize_srq; 1791da177e4SLinus Torvalds int max_pbl_sz; 1801da177e4SLinus Torvalds u8 bmme_flags; 1811da177e4SLinus Torvalds u32 reserved_lkey; 1821da177e4SLinus Torvalds int lam_required; 1831da177e4SLinus Torvalds u64 max_icm_sz; 1841da177e4SLinus Torvalds } arbel; 1851da177e4SLinus Torvalds } hca; 1861da177e4SLinus Torvalds }; 1871da177e4SLinus Torvalds 1881da177e4SLinus Torvalds struct mthca_adapter { 1891da177e4SLinus Torvalds u32 vendor_id; 1901da177e4SLinus Torvalds u32 device_id; 1911da177e4SLinus Torvalds u32 revision_id; 1922e8b981cSMichael S. Tsirkin char board_id[MTHCA_BOARD_ID_LEN]; 1931da177e4SLinus Torvalds u8 inta_pin; 1941da177e4SLinus Torvalds }; 1951da177e4SLinus Torvalds 1961da177e4SLinus Torvalds struct mthca_init_hca_param { 1971da177e4SLinus Torvalds u64 qpc_base; 1981da177e4SLinus Torvalds u64 eec_base; 1991da177e4SLinus Torvalds u64 srqc_base; 2001da177e4SLinus Torvalds u64 cqc_base; 2011da177e4SLinus Torvalds u64 eqpc_base; 2021da177e4SLinus Torvalds u64 eeec_base; 2031da177e4SLinus Torvalds u64 eqc_base; 2041da177e4SLinus Torvalds u64 rdb_base; 2051da177e4SLinus Torvalds u64 mc_base; 2061da177e4SLinus Torvalds u64 mpt_base; 2071da177e4SLinus Torvalds u64 mtt_base; 2081da177e4SLinus Torvalds u64 uar_scratch_base; 2091da177e4SLinus Torvalds u64 uarc_base; 2101da177e4SLinus Torvalds u16 log_mc_entry_sz; 2111da177e4SLinus Torvalds u16 mc_hash_sz; 2121da177e4SLinus Torvalds u8 log_num_qps; 2131da177e4SLinus Torvalds u8 log_num_eecs; 2141da177e4SLinus Torvalds u8 log_num_srqs; 2151da177e4SLinus Torvalds u8 log_num_cqs; 2161da177e4SLinus Torvalds u8 log_num_eqs; 2171da177e4SLinus Torvalds u8 log_mc_table_sz; 2181da177e4SLinus Torvalds u8 mtt_seg_sz; 2191da177e4SLinus Torvalds u8 log_mpt_sz; 2201da177e4SLinus Torvalds u8 log_uar_sz; 2211da177e4SLinus Torvalds u8 log_uarc_sz; 2221da177e4SLinus Torvalds }; 2231da177e4SLinus Torvalds 2241da177e4SLinus Torvalds struct mthca_init_ib_param { 225da6561c2SRoland Dreier int port_width; 2261da177e4SLinus Torvalds int vl_cap; 2271da177e4SLinus Torvalds int mtu_cap; 2281da177e4SLinus Torvalds u16 gid_cap; 2291da177e4SLinus Torvalds u16 pkey_cap; 2301da177e4SLinus Torvalds int set_guid0; 2311da177e4SLinus Torvalds u64 guid0; 2321da177e4SLinus Torvalds int set_node_guid; 2331da177e4SLinus Torvalds u64 node_guid; 2341da177e4SLinus Torvalds int set_si_guid; 2351da177e4SLinus Torvalds u64 si_guid; 2361da177e4SLinus Torvalds }; 2371da177e4SLinus Torvalds 2381da177e4SLinus Torvalds struct mthca_set_ib_param { 2391da177e4SLinus Torvalds int set_si_guid; 2401da177e4SLinus Torvalds int reset_qkey_viol; 2411da177e4SLinus Torvalds u64 si_guid; 2421da177e4SLinus Torvalds u32 cap_mask; 2431da177e4SLinus Torvalds }; 2441da177e4SLinus Torvalds 24580fd8238SRoland Dreier int mthca_cmd_init(struct mthca_dev *dev); 24680fd8238SRoland Dreier void mthca_cmd_cleanup(struct mthca_dev *dev); 2471da177e4SLinus Torvalds int mthca_cmd_use_events(struct mthca_dev *dev); 2481da177e4SLinus Torvalds void mthca_cmd_use_polling(struct mthca_dev *dev); 2491da177e4SLinus Torvalds void mthca_cmd_event(struct mthca_dev *dev, u16 token, 2501da177e4SLinus Torvalds u8 status, u64 out_param); 2511da177e4SLinus Torvalds 252ed878458SRoland Dreier struct mthca_mailbox *mthca_alloc_mailbox(struct mthca_dev *dev, 25387b750dcSAl Viro gfp_t gfp_mask); 254ed878458SRoland Dreier void mthca_free_mailbox(struct mthca_dev *dev, struct mthca_mailbox *mailbox); 255ed878458SRoland Dreier 2561da177e4SLinus Torvalds int mthca_SYS_EN(struct mthca_dev *dev, u8 *status); 2571da177e4SLinus Torvalds int mthca_SYS_DIS(struct mthca_dev *dev, u8 *status); 2581da177e4SLinus Torvalds int mthca_MAP_FA(struct mthca_dev *dev, struct mthca_icm *icm, u8 *status); 2591da177e4SLinus Torvalds int mthca_UNMAP_FA(struct mthca_dev *dev, u8 *status); 2601da177e4SLinus Torvalds int mthca_RUN_FW(struct mthca_dev *dev, u8 *status); 2611da177e4SLinus Torvalds int mthca_QUERY_FW(struct mthca_dev *dev, u8 *status); 2621da177e4SLinus Torvalds int mthca_ENABLE_LAM(struct mthca_dev *dev, u8 *status); 2631da177e4SLinus Torvalds int mthca_DISABLE_LAM(struct mthca_dev *dev, u8 *status); 2641da177e4SLinus Torvalds int mthca_QUERY_DDR(struct mthca_dev *dev, u8 *status); 2651da177e4SLinus Torvalds int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, 2661da177e4SLinus Torvalds struct mthca_dev_lim *dev_lim, u8 *status); 2671da177e4SLinus Torvalds int mthca_QUERY_ADAPTER(struct mthca_dev *dev, 2681da177e4SLinus Torvalds struct mthca_adapter *adapter, u8 *status); 2691da177e4SLinus Torvalds int mthca_INIT_HCA(struct mthca_dev *dev, 2701da177e4SLinus Torvalds struct mthca_init_hca_param *param, 2711da177e4SLinus Torvalds u8 *status); 2721da177e4SLinus Torvalds int mthca_INIT_IB(struct mthca_dev *dev, 2731da177e4SLinus Torvalds struct mthca_init_ib_param *param, 2741da177e4SLinus Torvalds int port, u8 *status); 2751da177e4SLinus Torvalds int mthca_CLOSE_IB(struct mthca_dev *dev, int port, u8 *status); 2761da177e4SLinus Torvalds int mthca_CLOSE_HCA(struct mthca_dev *dev, int panic, u8 *status); 2771da177e4SLinus Torvalds int mthca_SET_IB(struct mthca_dev *dev, struct mthca_set_ib_param *param, 2781da177e4SLinus Torvalds int port, u8 *status); 2791da177e4SLinus Torvalds int mthca_MAP_ICM(struct mthca_dev *dev, struct mthca_icm *icm, u64 virt, u8 *status); 2801da177e4SLinus Torvalds int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt, u8 *status); 2811da177e4SLinus Torvalds int mthca_UNMAP_ICM(struct mthca_dev *dev, u64 virt, u32 page_count, u8 *status); 2821da177e4SLinus Torvalds int mthca_MAP_ICM_AUX(struct mthca_dev *dev, struct mthca_icm *icm, u8 *status); 2831da177e4SLinus Torvalds int mthca_UNMAP_ICM_AUX(struct mthca_dev *dev, u8 *status); 2841da177e4SLinus Torvalds int mthca_SET_ICM_SIZE(struct mthca_dev *dev, u64 icm_size, u64 *aux_pages, 2851da177e4SLinus Torvalds u8 *status); 286ed878458SRoland Dreier int mthca_SW2HW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 2871da177e4SLinus Torvalds int mpt_index, u8 *status); 288ed878458SRoland Dreier int mthca_HW2SW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 2891da177e4SLinus Torvalds int mpt_index, u8 *status); 290ed878458SRoland Dreier int mthca_WRITE_MTT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 2911da177e4SLinus Torvalds int num_mtt, u8 *status); 292b8ca06f6SMichael S. Tsirkin int mthca_SYNC_TPT(struct mthca_dev *dev, u8 *status); 2931da177e4SLinus Torvalds int mthca_MAP_EQ(struct mthca_dev *dev, u64 event_mask, int unmap, 2941da177e4SLinus Torvalds int eq_num, u8 *status); 295ed878458SRoland Dreier int mthca_SW2HW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 2961da177e4SLinus Torvalds int eq_num, u8 *status); 297ed878458SRoland Dreier int mthca_HW2SW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 2981da177e4SLinus Torvalds int eq_num, u8 *status); 299ed878458SRoland Dreier int mthca_SW2HW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 3001da177e4SLinus Torvalds int cq_num, u8 *status); 301ed878458SRoland Dreier int mthca_HW2SW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 3021da177e4SLinus Torvalds int cq_num, u8 *status); 3034885bf64SRoland Dreier int mthca_RESIZE_CQ(struct mthca_dev *dev, int cq_num, u32 lkey, u8 log_size, 3044885bf64SRoland Dreier u8 *status); 305ec34a922SRoland Dreier int mthca_SW2HW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 306ec34a922SRoland Dreier int srq_num, u8 *status); 307ec34a922SRoland Dreier int mthca_HW2SW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 308ec34a922SRoland Dreier int srq_num, u8 *status); 3098ebe5077SEli Cohen int mthca_QUERY_SRQ(struct mthca_dev *dev, u32 num, 3108ebe5077SEli Cohen struct mthca_mailbox *mailbox, u8 *status); 311ec34a922SRoland Dreier int mthca_ARM_SRQ(struct mthca_dev *dev, int srq_num, int limit, u8 *status); 312d844183dSRoland Dreier int mthca_MODIFY_QP(struct mthca_dev *dev, enum ib_qp_state cur, 313d844183dSRoland Dreier enum ib_qp_state next, u32 num, int is_ee, 314d844183dSRoland Dreier struct mthca_mailbox *mailbox, u32 optmask, 3151da177e4SLinus Torvalds u8 *status); 3161da177e4SLinus Torvalds int mthca_QUERY_QP(struct mthca_dev *dev, u32 num, int is_ee, 317ed878458SRoland Dreier struct mthca_mailbox *mailbox, u8 *status); 3181da177e4SLinus Torvalds int mthca_CONF_SPECIAL_QP(struct mthca_dev *dev, int type, u32 qpn, 3191da177e4SLinus Torvalds u8 *status); 3201da177e4SLinus Torvalds int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey, 3211da177e4SLinus Torvalds int port, struct ib_wc *in_wc, struct ib_grh *in_grh, 3221da177e4SLinus Torvalds void *in_mad, void *response_mad, u8 *status); 323ed878458SRoland Dreier int mthca_READ_MGM(struct mthca_dev *dev, int index, 324ed878458SRoland Dreier struct mthca_mailbox *mailbox, u8 *status); 325ed878458SRoland Dreier int mthca_WRITE_MGM(struct mthca_dev *dev, int index, 326ed878458SRoland Dreier struct mthca_mailbox *mailbox, u8 *status); 327ed878458SRoland Dreier int mthca_MGID_HASH(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 328ed878458SRoland Dreier u16 *hash, u8 *status); 3291da177e4SLinus Torvalds int mthca_NOP(struct mthca_dev *dev, u8 *status); 3301da177e4SLinus Torvalds 3311da177e4SLinus Torvalds #endif /* MTHCA_CMD_H */ 332