1 /* 2 * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * BSD license below: 9 * 10 * Redistribution and use in source and binary forms, with or 11 * without modification, are permitted provided that the following 12 * conditions are met: 13 * 14 * - Redistributions of source code must retain the above 15 * copyright notice, this list of conditions and the following 16 * disclaimer. 17 * 18 * - Redistributions in binary form must reproduce the above 19 * copyright notice, this list of conditions and the following 20 * disclaimer in the documentation and/or other materials 21 * 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 OF 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 * 32 */ 33 34 35 #ifndef USNIC_ABI_H 36 #define USNIC_ABI_H 37 38 /* ABI between userspace and kernel */ 39 #define USNIC_UVERBS_ABI_VERSION 4 40 41 #define USNIC_QP_GRP_MAX_WQS 8 42 #define USNIC_QP_GRP_MAX_RQS 8 43 #define USNIC_QP_GRP_MAX_CQS 16 44 45 enum usnic_transport_type { 46 USNIC_TRANSPORT_UNKNOWN = 0, 47 USNIC_TRANSPORT_ROCE_CUSTOM = 1, 48 USNIC_TRANSPORT_IPV4_UDP = 2, 49 USNIC_TRANSPORT_MAX = 3, 50 }; 51 52 struct usnic_transport_spec { 53 enum usnic_transport_type trans_type; 54 union { 55 struct { 56 uint16_t port_num; 57 } usnic_roce; 58 struct { 59 uint32_t sock_fd; 60 } udp; 61 }; 62 }; 63 64 struct usnic_ib_create_qp_cmd { 65 struct usnic_transport_spec spec; 66 }; 67 68 /*TODO: Future - usnic_modify_qp needs to pass in generic filters */ 69 struct usnic_ib_create_qp_resp { 70 u32 vfid; 71 u32 qp_grp_id; 72 u64 bar_bus_addr; 73 u32 bar_len; 74 /* 75 * WQ, RQ, CQ are explicity specified bc exposing a generic resources inteface 76 * expands the scope of ABI to many files. 77 */ 78 u32 wq_cnt; 79 u32 rq_cnt; 80 u32 cq_cnt; 81 u32 wq_idx[USNIC_QP_GRP_MAX_WQS]; 82 u32 rq_idx[USNIC_QP_GRP_MAX_RQS]; 83 u32 cq_idx[USNIC_QP_GRP_MAX_CQS]; 84 u32 transport; 85 u32 reserved[9]; 86 }; 87 88 #endif /* USNIC_ABI_H */