Files
vpp/src/plugins/rdma/rdma.api
Vratko Polak 04d262d1eb rdma: add rdma_create_v4 that handles flags properly
The _v3 was not handling endianness on flags (e.g. mode).
Marking _v3 as deprecated, but keeping it
as there might be users who learned to preprocess their flag values.

+ Also, format PCI product_name as a vector, not a string.

Type: fix

Change-Id: I50c4b44f3570f02518dbd9a43239c1a37612d24a
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-12-15 08:44:10 +00:00

247 lines
7.2 KiB
Plaintext

/*
*------------------------------------------------------------------
* Copyright (c) 2019 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*------------------------------------------------------------------
*/
option version = "3.0.0";
import "vnet/interface_types.api";
enum rdma_mode
{
RDMA_API_MODE_AUTO = 0,
RDMA_API_MODE_IBV = 1,
RDMA_API_MODE_DV = 2,
};
/** \brief
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param host_if - Linux netdev interface name
@param name - new rdma interface name
@param rxq_num - number of receive queues (optional)
@param rxq_size - receive queue size (optional)
@param txq_size - transmit queue size (optional)
@param mode - operation mode (optional)
*/
define rdma_create
{
option deprecated="21.01";
u32 client_index;
u32 context;
string host_if[64];
string name[64];
u16 rxq_num [default=1];
u16 rxq_size [default=1024];
u16 txq_size [default=1024];
vl_api_rdma_mode_t mode [default=0];
option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>]";
};
/** \brief
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param host_if - Linux netdev interface name
@param name - new rdma interface name
@param rxq_num - number of receive queues (optional)
@param rxq_size - receive queue size (optional)
@param txq_size - transmit queue size (optional)
@param mode - operation mode (optional)
@param no_multi_seg (optional) - disable chained buffer RX
@param max_pktlen (optional) - maximal RX packet size.
*/
define rdma_create_v2
{
option deprecated;
u32 client_index;
u32 context;
string host_if[64];
string name[64];
u16 rxq_num [default=1];
u16 rxq_size [default=1024];
u16 txq_size [default=1024];
vl_api_rdma_mode_t mode [default=0];
bool no_multi_seg [default=0];
u16 max_pktlen [default=0];
option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>] [no-multi-seg] [max-pktlen <size>]";
};
enum rdma_rss4
{
RDMA_API_RSS4_AUTO = 0,
RDMA_API_RSS4_IP = 1,
RDMA_API_RSS4_IP_UDP = 2,
RDMA_API_RSS4_IP_TCP = 3,
};
enum rdma_rss6
{
RDMA_API_RSS6_AUTO = 0,
RDMA_API_RSS6_IP = 1,
RDMA_API_RSS6_IP_UDP = 2,
RDMA_API_RSS6_IP_TCP = 3,
};
/** \brief
Same as v4, just not an autoendian (expect buggy handling of flag values).
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param host_if - Linux netdev interface name
@param name - new rdma interface name
@param rxq_num - number of receive queues (optional)
@param rxq_size - receive queue size (optional)
@param txq_size - transmit queue size (optional)
@param mode - operation mode (optional)
@param no_multi_seg (optional) - disable chained buffer RX
@param max_pktlen (optional) - maximal RX packet size.
@param rss4 (optional) - IPv4 RSS
@param rss6 (optional) - IPv6 RSS
*/
define rdma_create_v3
{
option deprecated;
option replaced_by="rdma_create_v4";
u32 client_index;
u32 context;
string host_if[64];
string name[64];
u16 rxq_num [default=1];
u16 rxq_size [default=1024];
u16 txq_size [default=1024];
vl_api_rdma_mode_t mode [default=0];
bool no_multi_seg [default=0];
u16 max_pktlen [default=0];
vl_api_rdma_rss4_t rss4 [default=0];
vl_api_rdma_rss6_t rss6 [default=0];
option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>] [no-multi-seg] [max-pktlen <size>] [rss <ipv4|ipv4-udp|ipv4-tcp>] [rss <ipv6|ipv6-udp|ipv6-tcp>]";
};
/** \brief
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param host_if - Linux netdev interface name
@param name - new rdma interface name
@param rxq_num - number of receive queues (optional)
@param rxq_size - receive queue size (optional)
@param txq_size - transmit queue size (optional)
@param mode - operation mode (optional)
@param no_multi_seg (optional) - disable chained buffer RX
@param max_pktlen (optional) - maximal RX packet size.
@param rss4 (optional) - IPv4 RSS
@param rss6 (optional) - IPv6 RSS
*/
autoendian define rdma_create_v4
{
u32 client_index;
u32 context;
string host_if[64];
string name[64];
u16 rxq_num [default=1];
u16 rxq_size [default=1024];
u16 txq_size [default=1024];
vl_api_rdma_mode_t mode [default=0];
bool no_multi_seg [default=0];
u16 max_pktlen [default=0];
vl_api_rdma_rss4_t rss4 [default=0];
vl_api_rdma_rss6_t rss6 [default=0];
option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>] [no-multi-seg] [max-pktlen <size>] [rss <ipv4|ipv4-udp|ipv4-tcp>] [rss <ipv6|ipv6-udp|ipv6-tcp>]";
};
/** \brief
@param context - sender context, to match reply w/ request
@param retval - return value for request
@param sw_if_index - software index for the new rdma interface
*/
define rdma_create_reply
{
option deprecated;
u32 context;
i32 retval;
vl_api_interface_index_t sw_if_index;
};
/** \brief
@param context - sender context, to match reply w/ request
@param retval - return value for request
@param sw_if_index - software index for the new rdma interface
*/
define rdma_create_v2_reply
{
option deprecated;
u32 context;
i32 retval;
vl_api_interface_index_t sw_if_index;
};
/** \brief
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface index
*/
define rdma_create_v3_reply
{
u32 context;
i32 retval;
vl_api_interface_index_t sw_if_index;
};
/** \brief
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface index
*/
autoendian define rdma_create_v4_reply
{
u32 context;
i32 retval;
vl_api_interface_index_t sw_if_index;
};
/** \brief
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface index
*/
autoreply define rdma_delete
{
u32 client_index;
u32 context;
vl_api_interface_index_t sw_if_index;
option vat_help = "<sw_if_index index>";
};
/*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
*/