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 351da177e4SLinus Torvalds #ifndef MTHCA_CMD_H 361da177e4SLinus Torvalds #define MTHCA_CMD_H 371da177e4SLinus Torvalds 38a4d61e84SRoland Dreier #include <rdma/ib_verbs.h> 391da177e4SLinus Torvalds 40ed878458SRoland Dreier #define MTHCA_MAILBOX_SIZE 4096 411da177e4SLinus Torvalds 421da177e4SLinus Torvalds enum { 431da177e4SLinus Torvalds /* command completed successfully: */ 441da177e4SLinus Torvalds MTHCA_CMD_STAT_OK = 0x00, 451da177e4SLinus Torvalds /* Internal error (such as a bus error) occurred while processing command: */ 461da177e4SLinus Torvalds MTHCA_CMD_STAT_INTERNAL_ERR = 0x01, 471da177e4SLinus Torvalds /* Operation/command not supported or opcode modifier not supported: */ 481da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_OP = 0x02, 491da177e4SLinus Torvalds /* Parameter not supported or parameter out of range: */ 501da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_PARAM = 0x03, 511da177e4SLinus Torvalds /* System not enabled or bad system state: */ 521da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_SYS_STATE = 0x04, 531da177e4SLinus Torvalds /* Attempt to access reserved or unallocaterd resource: */ 541da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_RESOURCE = 0x05, 551da177e4SLinus Torvalds /* Requested resource is currently executing a command, or is otherwise busy: */ 561da177e4SLinus Torvalds MTHCA_CMD_STAT_RESOURCE_BUSY = 0x06, 571da177e4SLinus Torvalds /* memory error: */ 581da177e4SLinus Torvalds MTHCA_CMD_STAT_DDR_MEM_ERR = 0x07, 591da177e4SLinus Torvalds /* Required capability exceeds device limits: */ 601da177e4SLinus Torvalds MTHCA_CMD_STAT_EXCEED_LIM = 0x08, 611da177e4SLinus Torvalds /* Resource is not in the appropriate state or ownership: */ 621da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_RES_STATE = 0x09, 631da177e4SLinus Torvalds /* Index out of range: */ 641da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_INDEX = 0x0a, 651da177e4SLinus Torvalds /* FW image corrupted: */ 661da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_NVMEM = 0x0b, 671da177e4SLinus Torvalds /* Attempt to modify a QP/EE which is not in the presumed state: */ 681da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_QPEE_STATE = 0x10, 691da177e4SLinus Torvalds /* Bad segment parameters (Address/Size): */ 701da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_SEG_PARAM = 0x20, 711da177e4SLinus Torvalds /* Memory Region has Memory Windows bound to: */ 721da177e4SLinus Torvalds MTHCA_CMD_STAT_REG_BOUND = 0x21, 731da177e4SLinus Torvalds /* HCA local attached memory not present: */ 741da177e4SLinus Torvalds MTHCA_CMD_STAT_LAM_NOT_PRE = 0x22, 751da177e4SLinus Torvalds /* Bad management packet (silently discarded): */ 761da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_PKT = 0x30, 771da177e4SLinus Torvalds /* More outstanding CQEs in CQ than new CQ size: */ 781da177e4SLinus Torvalds MTHCA_CMD_STAT_BAD_SIZE = 0x40 791da177e4SLinus Torvalds }; 801da177e4SLinus Torvalds 811da177e4SLinus Torvalds enum { 821da177e4SLinus Torvalds MTHCA_TRANS_INVALID = 0, 831da177e4SLinus Torvalds MTHCA_TRANS_RST2INIT, 841da177e4SLinus Torvalds MTHCA_TRANS_INIT2INIT, 851da177e4SLinus Torvalds MTHCA_TRANS_INIT2RTR, 861da177e4SLinus Torvalds MTHCA_TRANS_RTR2RTS, 871da177e4SLinus Torvalds MTHCA_TRANS_RTS2RTS, 881da177e4SLinus Torvalds MTHCA_TRANS_SQERR2RTS, 891da177e4SLinus Torvalds MTHCA_TRANS_ANY2ERR, 901da177e4SLinus Torvalds MTHCA_TRANS_RTS2SQD, 911da177e4SLinus Torvalds MTHCA_TRANS_SQD2SQD, 921da177e4SLinus Torvalds MTHCA_TRANS_SQD2RTS, 931da177e4SLinus Torvalds MTHCA_TRANS_ANY2RST, 941da177e4SLinus Torvalds }; 951da177e4SLinus Torvalds 961da177e4SLinus Torvalds enum { 971da177e4SLinus Torvalds DEV_LIM_FLAG_RC = 1 << 0, 981da177e4SLinus Torvalds DEV_LIM_FLAG_UC = 1 << 1, 991da177e4SLinus Torvalds DEV_LIM_FLAG_UD = 1 << 2, 1001da177e4SLinus Torvalds DEV_LIM_FLAG_RD = 1 << 3, 1011da177e4SLinus Torvalds DEV_LIM_FLAG_RAW_IPV6 = 1 << 4, 1021da177e4SLinus Torvalds DEV_LIM_FLAG_RAW_ETHER = 1 << 5, 1031da177e4SLinus Torvalds DEV_LIM_FLAG_SRQ = 1 << 6, 104680b575fSEli Cohen DEV_LIM_FLAG_IPOIB_CSUM = 1 << 7, 1051da177e4SLinus Torvalds DEV_LIM_FLAG_BAD_PKEY_CNTR = 1 << 8, 1061da177e4SLinus Torvalds DEV_LIM_FLAG_BAD_QKEY_CNTR = 1 << 9, 1071da177e4SLinus Torvalds DEV_LIM_FLAG_MW = 1 << 16, 1081da177e4SLinus Torvalds DEV_LIM_FLAG_AUTO_PATH_MIG = 1 << 17, 1091da177e4SLinus Torvalds DEV_LIM_FLAG_ATOMIC = 1 << 18, 1101da177e4SLinus Torvalds DEV_LIM_FLAG_RAW_MULTI = 1 << 19, 1111da177e4SLinus Torvalds DEV_LIM_FLAG_UD_AV_PORT_ENFORCE = 1 << 20, 1121da177e4SLinus Torvalds DEV_LIM_FLAG_UD_MULTI = 1 << 21, 1131da177e4SLinus Torvalds }; 1141da177e4SLinus Torvalds 115ed878458SRoland Dreier struct mthca_mailbox { 116ed878458SRoland Dreier dma_addr_t dma; 117ed878458SRoland Dreier void *buf; 118ed878458SRoland Dreier }; 119ed878458SRoland Dreier 1201da177e4SLinus Torvalds struct mthca_dev_lim { 1211da177e4SLinus Torvalds int max_srq_sz; 1221da177e4SLinus Torvalds int max_qp_sz; 1231da177e4SLinus Torvalds int reserved_qps; 1241da177e4SLinus Torvalds int max_qps; 1251da177e4SLinus Torvalds int reserved_srqs; 1261da177e4SLinus Torvalds int max_srqs; 1271da177e4SLinus Torvalds int reserved_eecs; 1281da177e4SLinus Torvalds int max_eecs; 1291da177e4SLinus Torvalds int max_cq_sz; 1301da177e4SLinus Torvalds int reserved_cqs; 1311da177e4SLinus Torvalds int max_cqs; 1321da177e4SLinus Torvalds int max_mpts; 1331da177e4SLinus Torvalds int reserved_eqs; 1341da177e4SLinus Torvalds int max_eqs; 1351da177e4SLinus Torvalds int reserved_mtts; 1361da177e4SLinus Torvalds int max_mrw_sz; 1371da177e4SLinus Torvalds int reserved_mrws; 1381da177e4SLinus Torvalds int max_mtt_seg; 1391da177e4SLinus Torvalds int max_requester_per_qp; 1401da177e4SLinus Torvalds int max_responder_per_qp; 1411da177e4SLinus Torvalds int max_rdma_global; 1421da177e4SLinus Torvalds int local_ca_ack_delay; 1431da177e4SLinus Torvalds int max_mtu; 1441da177e4SLinus Torvalds int max_port_width; 1451da177e4SLinus Torvalds int max_vl; 1461da177e4SLinus Torvalds int num_ports; 1471da177e4SLinus Torvalds int max_gids; 148bf6a9e31SJack Morgenstein u16 stat_rate_support; 1491da177e4SLinus Torvalds int max_pkeys; 1501da177e4SLinus Torvalds u32 flags; 1511da177e4SLinus Torvalds int reserved_uars; 1521da177e4SLinus Torvalds int uar_size; 1531da177e4SLinus Torvalds int min_page_sz; 1541da177e4SLinus Torvalds int max_sg; 1551da177e4SLinus Torvalds int max_desc_sz; 1561da177e4SLinus Torvalds int max_qp_per_mcg; 1571da177e4SLinus Torvalds int reserved_mgms; 1581da177e4SLinus Torvalds int max_mcgs; 1591da177e4SLinus Torvalds int reserved_pds; 1601da177e4SLinus Torvalds int max_pds; 1611da177e4SLinus Torvalds int reserved_rdds; 1621da177e4SLinus Torvalds int max_rdds; 1631da177e4SLinus Torvalds int eec_entry_sz; 1641da177e4SLinus Torvalds int qpc_entry_sz; 1651da177e4SLinus Torvalds int eeec_entry_sz; 1661da177e4SLinus Torvalds int eqpc_entry_sz; 1671da177e4SLinus Torvalds int eqc_entry_sz; 1681da177e4SLinus Torvalds int cqc_entry_sz; 1691da177e4SLinus Torvalds int srq_entry_sz; 1701da177e4SLinus Torvalds int uar_scratch_entry_sz; 1711da177e4SLinus Torvalds int mpt_entry_sz; 1721da177e4SLinus Torvalds union { 1731da177e4SLinus Torvalds struct { 1741da177e4SLinus Torvalds int max_avs; 1751da177e4SLinus Torvalds } tavor; 1761da177e4SLinus Torvalds struct { 1771da177e4SLinus Torvalds int resize_srq; 1781da177e4SLinus Torvalds int max_pbl_sz; 1791da177e4SLinus Torvalds u8 bmme_flags; 1801da177e4SLinus Torvalds u32 reserved_lkey; 1811da177e4SLinus Torvalds int lam_required; 1821da177e4SLinus Torvalds u64 max_icm_sz; 1831da177e4SLinus Torvalds } arbel; 1841da177e4SLinus Torvalds } hca; 1851da177e4SLinus Torvalds }; 1861da177e4SLinus Torvalds 1871da177e4SLinus Torvalds struct mthca_adapter { 1881da177e4SLinus Torvalds u32 vendor_id; 1891da177e4SLinus Torvalds u32 device_id; 1901da177e4SLinus Torvalds u32 revision_id; 1912e8b981cSMichael S. Tsirkin char board_id[MTHCA_BOARD_ID_LEN]; 1921da177e4SLinus Torvalds u8 inta_pin; 1931da177e4SLinus Torvalds }; 1941da177e4SLinus Torvalds 1951da177e4SLinus Torvalds struct mthca_init_hca_param { 1961da177e4SLinus Torvalds u64 qpc_base; 1971da177e4SLinus Torvalds u64 eec_base; 1981da177e4SLinus Torvalds u64 srqc_base; 1991da177e4SLinus Torvalds u64 cqc_base; 2001da177e4SLinus Torvalds u64 eqpc_base; 2011da177e4SLinus Torvalds u64 eeec_base; 2021da177e4SLinus Torvalds u64 eqc_base; 2031da177e4SLinus Torvalds u64 rdb_base; 2041da177e4SLinus Torvalds u64 mc_base; 2051da177e4SLinus Torvalds u64 mpt_base; 2061da177e4SLinus Torvalds u64 mtt_base; 2071da177e4SLinus Torvalds u64 uar_scratch_base; 2081da177e4SLinus Torvalds u64 uarc_base; 2091da177e4SLinus Torvalds u16 log_mc_entry_sz; 2101da177e4SLinus Torvalds u16 mc_hash_sz; 2111da177e4SLinus Torvalds u8 log_num_qps; 2121da177e4SLinus Torvalds u8 log_num_eecs; 2131da177e4SLinus Torvalds u8 log_num_srqs; 2141da177e4SLinus Torvalds u8 log_num_cqs; 2151da177e4SLinus Torvalds u8 log_num_eqs; 2161da177e4SLinus Torvalds u8 log_mc_table_sz; 2171da177e4SLinus Torvalds u8 mtt_seg_sz; 2181da177e4SLinus Torvalds u8 log_mpt_sz; 2191da177e4SLinus Torvalds u8 log_uar_sz; 2201da177e4SLinus Torvalds u8 log_uarc_sz; 2211da177e4SLinus Torvalds }; 2221da177e4SLinus Torvalds 2231da177e4SLinus Torvalds struct mthca_init_ib_param { 224da6561c2SRoland Dreier int port_width; 2251da177e4SLinus Torvalds int vl_cap; 2261da177e4SLinus Torvalds int mtu_cap; 2271da177e4SLinus Torvalds u16 gid_cap; 2281da177e4SLinus Torvalds u16 pkey_cap; 2291da177e4SLinus Torvalds int set_guid0; 2301da177e4SLinus Torvalds u64 guid0; 2311da177e4SLinus Torvalds int set_node_guid; 2321da177e4SLinus Torvalds u64 node_guid; 2331da177e4SLinus Torvalds int set_si_guid; 2341da177e4SLinus Torvalds u64 si_guid; 2351da177e4SLinus Torvalds }; 2361da177e4SLinus Torvalds 2371da177e4SLinus Torvalds struct mthca_set_ib_param { 2381da177e4SLinus Torvalds int set_si_guid; 2391da177e4SLinus Torvalds int reset_qkey_viol; 2401da177e4SLinus Torvalds u64 si_guid; 2411da177e4SLinus Torvalds u32 cap_mask; 2421da177e4SLinus Torvalds }; 2431da177e4SLinus Torvalds 24480fd8238SRoland Dreier int mthca_cmd_init(struct mthca_dev *dev); 24580fd8238SRoland Dreier void mthca_cmd_cleanup(struct mthca_dev *dev); 2461da177e4SLinus Torvalds int mthca_cmd_use_events(struct mthca_dev *dev); 2471da177e4SLinus Torvalds void mthca_cmd_use_polling(struct mthca_dev *dev); 2481da177e4SLinus Torvalds void mthca_cmd_event(struct mthca_dev *dev, u16 token, 2491da177e4SLinus Torvalds u8 status, u64 out_param); 2501da177e4SLinus Torvalds 251ed878458SRoland Dreier struct mthca_mailbox *mthca_alloc_mailbox(struct mthca_dev *dev, 25287b750dcSAl Viro gfp_t gfp_mask); 253ed878458SRoland Dreier void mthca_free_mailbox(struct mthca_dev *dev, struct mthca_mailbox *mailbox); 254ed878458SRoland Dreier 255cdb73db0SGoldwyn Rodrigues int mthca_SYS_EN(struct mthca_dev *dev); 256cdb73db0SGoldwyn Rodrigues int mthca_SYS_DIS(struct mthca_dev *dev); 257cdb73db0SGoldwyn Rodrigues int mthca_MAP_FA(struct mthca_dev *dev, struct mthca_icm *icm); 258cdb73db0SGoldwyn Rodrigues int mthca_UNMAP_FA(struct mthca_dev *dev); 259cdb73db0SGoldwyn Rodrigues int mthca_RUN_FW(struct mthca_dev *dev); 260cdb73db0SGoldwyn Rodrigues int mthca_QUERY_FW(struct mthca_dev *dev); 261cdb73db0SGoldwyn Rodrigues int mthca_ENABLE_LAM(struct mthca_dev *dev); 262cdb73db0SGoldwyn Rodrigues int mthca_DISABLE_LAM(struct mthca_dev *dev); 263cdb73db0SGoldwyn Rodrigues int mthca_QUERY_DDR(struct mthca_dev *dev); 2641da177e4SLinus Torvalds int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, 265cdb73db0SGoldwyn Rodrigues struct mthca_dev_lim *dev_lim); 2661da177e4SLinus Torvalds int mthca_QUERY_ADAPTER(struct mthca_dev *dev, 267cdb73db0SGoldwyn Rodrigues struct mthca_adapter *adapter); 2681da177e4SLinus Torvalds int mthca_INIT_HCA(struct mthca_dev *dev, 269cdb73db0SGoldwyn Rodrigues struct mthca_init_hca_param *param); 2701da177e4SLinus Torvalds int mthca_INIT_IB(struct mthca_dev *dev, 2711da177e4SLinus Torvalds struct mthca_init_ib_param *param, 272cdb73db0SGoldwyn Rodrigues int port); 273cdb73db0SGoldwyn Rodrigues int mthca_CLOSE_IB(struct mthca_dev *dev, int port); 274cdb73db0SGoldwyn Rodrigues int mthca_CLOSE_HCA(struct mthca_dev *dev, int panic); 2751da177e4SLinus Torvalds int mthca_SET_IB(struct mthca_dev *dev, struct mthca_set_ib_param *param, 276cdb73db0SGoldwyn Rodrigues int port); 277cdb73db0SGoldwyn Rodrigues int mthca_MAP_ICM(struct mthca_dev *dev, struct mthca_icm *icm, u64 virt); 278cdb73db0SGoldwyn Rodrigues int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt); 279cdb73db0SGoldwyn Rodrigues int mthca_UNMAP_ICM(struct mthca_dev *dev, u64 virt, u32 page_count); 280cdb73db0SGoldwyn Rodrigues int mthca_MAP_ICM_AUX(struct mthca_dev *dev, struct mthca_icm *icm); 281cdb73db0SGoldwyn Rodrigues int mthca_UNMAP_ICM_AUX(struct mthca_dev *dev); 282cdb73db0SGoldwyn Rodrigues int mthca_SET_ICM_SIZE(struct mthca_dev *dev, u64 icm_size, u64 *aux_pages); 283ed878458SRoland Dreier int mthca_SW2HW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 284cdb73db0SGoldwyn Rodrigues int mpt_index); 285ed878458SRoland Dreier int mthca_HW2SW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 286cdb73db0SGoldwyn Rodrigues int mpt_index); 287ed878458SRoland Dreier int mthca_WRITE_MTT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 288cdb73db0SGoldwyn Rodrigues int num_mtt); 289cdb73db0SGoldwyn Rodrigues int mthca_SYNC_TPT(struct mthca_dev *dev); 2901da177e4SLinus Torvalds int mthca_MAP_EQ(struct mthca_dev *dev, u64 event_mask, int unmap, 291cdb73db0SGoldwyn Rodrigues int eq_num); 292ed878458SRoland Dreier int mthca_SW2HW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 293cdb73db0SGoldwyn Rodrigues int eq_num); 294ed878458SRoland Dreier int mthca_HW2SW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 295cdb73db0SGoldwyn Rodrigues int eq_num); 296ed878458SRoland Dreier int mthca_SW2HW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 297cdb73db0SGoldwyn Rodrigues int cq_num); 298ed878458SRoland Dreier int mthca_HW2SW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 299cdb73db0SGoldwyn Rodrigues int cq_num); 300cdb73db0SGoldwyn Rodrigues int mthca_RESIZE_CQ(struct mthca_dev *dev, int cq_num, u32 lkey, u8 log_size); 301ec34a922SRoland Dreier int mthca_SW2HW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 302cdb73db0SGoldwyn Rodrigues int srq_num); 303ec34a922SRoland Dreier int mthca_HW2SW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 304cdb73db0SGoldwyn Rodrigues int srq_num); 3058ebe5077SEli Cohen int mthca_QUERY_SRQ(struct mthca_dev *dev, u32 num, 306cdb73db0SGoldwyn Rodrigues struct mthca_mailbox *mailbox); 307cdb73db0SGoldwyn Rodrigues int mthca_ARM_SRQ(struct mthca_dev *dev, int srq_num, int limit); 308d844183dSRoland Dreier int mthca_MODIFY_QP(struct mthca_dev *dev, enum ib_qp_state cur, 309d844183dSRoland Dreier enum ib_qp_state next, u32 num, int is_ee, 310cdb73db0SGoldwyn Rodrigues struct mthca_mailbox *mailbox, u32 optmask); 3111da177e4SLinus Torvalds int mthca_QUERY_QP(struct mthca_dev *dev, u32 num, int is_ee, 312cdb73db0SGoldwyn Rodrigues struct mthca_mailbox *mailbox); 313cdb73db0SGoldwyn Rodrigues int mthca_CONF_SPECIAL_QP(struct mthca_dev *dev, int type, u32 qpn); 3141da177e4SLinus Torvalds int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey, 3151da177e4SLinus Torvalds int port, struct ib_wc *in_wc, struct ib_grh *in_grh, 316cdb73db0SGoldwyn Rodrigues void *in_mad, void *response_mad); 317ed878458SRoland Dreier int mthca_READ_MGM(struct mthca_dev *dev, int index, 318cdb73db0SGoldwyn Rodrigues struct mthca_mailbox *mailbox); 319ed878458SRoland Dreier int mthca_WRITE_MGM(struct mthca_dev *dev, int index, 320cdb73db0SGoldwyn Rodrigues struct mthca_mailbox *mailbox); 321ed878458SRoland Dreier int mthca_MGID_HASH(struct mthca_dev *dev, struct mthca_mailbox *mailbox, 322cdb73db0SGoldwyn Rodrigues u16 *hash); 323cdb73db0SGoldwyn Rodrigues int mthca_NOP(struct mthca_dev *dev); 3241da177e4SLinus Torvalds 3251da177e4SLinus Torvalds #endif /* MTHCA_CMD_H */ 326