X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Frdma%2Fapi.c;h=7fe771055968d5d1280e2e34e65c98be0b011fca;hb=f5a45680ee1c9c586ab2b037e3d71354789e4403;hp=06e7385136f66cf149b91371784bbf183cbbb22a;hpb=ee60ac638c9abcd0763c57fce0e3e646723ea0e0;p=vpp.git diff --git a/src/plugins/rdma/api.c b/src/plugins/rdma/api.c index 06e7385136f..7fe77105596 100644 --- a/src/plugins/rdma/api.c +++ b/src/plugins/rdma/api.c @@ -44,6 +44,69 @@ rdma_api_mode (vl_api_rdma_mode_t mode) return RDMA_MODE_AUTO; } +static rdma_rss4_t +rdma_api_rss4 (const vl_api_rdma_rss4_t rss4) +{ + switch (rss4) + { + case RDMA_API_RSS4_AUTO: + return RDMA_RSS4_AUTO; + case RDMA_API_RSS4_IP: + return RDMA_RSS4_IP; + case RDMA_API_RSS4_IP_UDP: + return RDMA_RSS4_IP_UDP; + case RDMA_API_RSS4_IP_TCP: + return RDMA_RSS4_IP_TCP; + } + return RDMA_RSS4_AUTO; +} + +static rdma_rss6_t +rdma_api_rss6 (const vl_api_rdma_rss6_t rss6) +{ + switch (rss6) + { + case RDMA_API_RSS6_AUTO: + return RDMA_RSS6_AUTO; + case RDMA_API_RSS6_IP: + return RDMA_RSS6_IP; + case RDMA_API_RSS6_IP_UDP: + return RDMA_RSS6_IP_UDP; + case RDMA_API_RSS6_IP_TCP: + return RDMA_RSS6_IP_TCP; + } + return RDMA_RSS6_AUTO; +} + +static void +vl_api_rdma_create_v3_t_handler (vl_api_rdma_create_v3_t *mp) +{ + vlib_main_t *vm = vlib_get_main (); + rdma_main_t *rm = &rdma_main; + vl_api_rdma_create_v3_reply_t *rmp; + rdma_create_if_args_t args; + int rv; + + clib_memset (&args, 0, sizeof (rdma_create_if_args_t)); + + args.ifname = mp->host_if; + args.name = mp->name; + args.rxq_num = ntohs (mp->rxq_num); + args.rxq_size = ntohs (mp->rxq_size); + args.txq_size = ntohs (mp->txq_size); + args.mode = rdma_api_mode (mp->mode); + args.disable_striding_rq = 0; + args.no_multi_seg = mp->no_multi_seg; + args.max_pktlen = ntohs (mp->max_pktlen); + args.rss4 = rdma_api_rss4 (mp->rss4); + args.rss6 = rdma_api_rss6 (mp->rss6); + rdma_create_if (vm, &args); + rv = args.rv; + + REPLY_MACRO2 (VL_API_RDMA_CREATE_V3_REPLY + rm->msg_id_base, + ({ rmp->sw_if_index = ntohl (args.sw_if_index); })); +} + static void vl_api_rdma_create_v2_t_handler (vl_api_rdma_create_v2_t * mp) {