1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright (c) 2023, Intel Corporation 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are met: 7# 8# 1. Redistributions of source code must retain the above copyright notice, 9# this list of conditions and the following disclaimer. 10# 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# 3. Neither the name of the Intel Corporation nor the names of its 16# contributors may be used to endorse or promote products derived from 17# this software without specific prior written permission. 18# 19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29# POSSIBILITY OF SUCH DAMAGE. 30 31/** 32 * @file irdma_di_if.m 33 * @brief RDMA client kobject driver interface 34 * 35 * KObject methods implemented by the ice driver. These functions are called 36 * by the RDMA client driver to connect with the ice driver and request 37 * operations or notify the driver of RDMA events. 38 */ 39#include "ice_rdma.h" 40 41INTERFACE irdma_di; 42 43/** 44 * reset - Request the ice driver to perform a reset 45 * @peer: the RDMA peer structure 46 * 47 * Called by the RDMA client driver to request a reset of the ice device. 48 * @return 0 on success 49 */ 50METHOD int reset { 51 struct ice_rdma_peer *peer; 52}; 53 54/** 55 * msix_init - Initialize MSI-X resources for the RDMA driver 56 * @peer: the RDMA peer structure 57 * @msix_info: the requested MSI-X mapping 58 * 59 * Called by the RDMA client driver to request initialization of the MSI-X 60 * resources used for RDMA functionality. 61 * @returns ENOSYS 62 */ 63METHOD int msix_init { 64 struct ice_rdma_peer *peer; 65 struct ice_rdma_msix_mapping *msix_info; 66}; 67 68/** 69 * qset_register_request - RDMA client interface request qset 70 * registration or deregistration 71 * @peer: the RDMA peer client structure 72 * @res: resources to be registered or unregistered 73 * @returns 0 on success, EINVAL on argument issues, ENOMEM on memory 74 * allocation failure, EXDEV on vsi device mismatch 75 */ 76METHOD int qset_register_request { 77 struct ice_rdma_peer *peer; 78 struct ice_rdma_qset_update *res; 79}; 80 81/** 82 * vsi_filter_update - configure vsi information 83 * when opening or closing rdma driver 84 * @peer: the RDMA peer client structure 85 * @enable: enable or disable the rdma filter 86 * @return 0 on success, EINVAL on wrong vsi 87 */ 88METHOD int vsi_filter_update { 89 struct ice_rdma_peer *peer; 90 bool enable; 91}; 92 93/** 94 * req_handler - handle requests incoming from RDMA driver 95 * @peer: the RDMA peer client structure 96 * @req: structure containing request 97 */ 98METHOD void req_handler { 99 struct ice_rdma_peer *peer; 100 struct ice_rdma_request *req; 101}; 102