X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface.c;h=18c7696e9a449d848c3ae1133ac0dd4f1a75d64c;hb=c4665093cdb0a8122d9640b6f5b3acd627918f32;hp=6d5b3561f19c5efe96b48c49686dd6a3c72ef470;hpb=765008670bec75cab679c4f549c5dac744842887;p=vpp.git diff --git a/src/vnet/interface.c b/src/vnet/interface.c index 6d5b3561f19..18c7696e9a4 100644 --- a/src/vnet/interface.c +++ b/src/vnet/interface.c @@ -1692,6 +1692,42 @@ default_update_adjacency (vnet_main_t * vnm, u32 sw_if_index, u32 ai) } } +clib_error_t * +vnet_hw_interface_set_rss_queues (vnet_main_t * vnm, + vnet_hw_interface_t * hi, + clib_bitmap_t * bitmap) +{ + clib_error_t *error = 0; + vnet_device_class_t *dev_class = + vnet_get_device_class (vnm, hi->dev_class_index); + + if (dev_class->set_rss_queues_function) + { + if (clib_bitmap_count_set_bits (bitmap) == 0) + { + error = clib_error_return (0, + "must assign at least one valid rss queue"); + goto done; + } + + error = dev_class->set_rss_queues_function (vnm, hi, bitmap); + } + else + { + error = clib_error_return (0, + "setting rss queues is not supported on this interface"); + } + + if (!error) + { + clib_bitmap_free (hi->rss_queues); + hi->rss_queues = clib_bitmap_dup (bitmap); + } + +done: + return error; +} + int collect_detailed_interface_stats_flag = 0; void