diff options
author | Chenmin Sun <chenmin.sun@intel.com> | 2020-07-06 08:20:39 +0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2020-09-09 10:12:06 +0000 |
commit | c4665093cdb0a8122d9640b6f5b3acd627918f32 (patch) | |
tree | 08a3babefc4f126dec07740628d094fd24413e36 /src/vnet/interface_format.c | |
parent | 765008670bec75cab679c4f549c5dac744842887 (diff) |
interface: support configuring RSS steering queues
This patch adds the RSS steering queues set interface, and it's
implementation in DPDK device:
/* Interface to set rss queues of the interface */
typedef clib_error_t *(vnet_interface_rss_queues_set_t)
(struct vnet_main_t * vnm, struct vnet_hw_interface_t * hi,
clib_bitmap_t *bitmap);
This patch also introduces a command line to set the RSS queues:
set interface rss queues <interface> <list <queue-list>>
To display the rss queues, use "show hardware-interfaces"
Below is the example to configure rss queues for interface Gig0:
vpp# set interface rss queues Gig0 list 0,2,4-7
vpp# show hardware-interfaces brief
Name Idx Link Hardware
VirtualFunctionEthernet18/1/0 1 down VirtualFunctionEthernet18/1/0
Link speed: unknown
RSS queues: 0 2 4 5 6 7
local0 0 down local0
Link speed: unknown
vpp#
Users can also configure the rss queues on a dpdk interface in
startup.conf:
dpdk {
dev 0000:18:01.0 {
rss-queues 0,2,5-7
}
}
Type: feature
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I1835595a1c54016a84eabee9fd62ce137935385d
Diffstat (limited to 'src/vnet/interface_format.c')
-rw-r--r-- | src/vnet/interface_format.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/vnet/interface_format.c b/src/vnet/interface_format.c index 8278102c644..2b691a66071 100644 --- a/src/vnet/interface_format.c +++ b/src/vnet/interface_format.c @@ -130,6 +130,26 @@ format_vnet_hw_interface_link_speed (u8 * s, va_list * args) return format (s, "%u Kbps", link_speed); } +u8 * +format_vnet_hw_interface_rss_queues (u8 * s, va_list * args) +{ + clib_bitmap_t *bitmap = va_arg (*args, clib_bitmap_t *); + int i; + + if (bitmap == NULL) + return s; + + if (bitmap) + { + /* *INDENT-OFF* */ + clib_bitmap_foreach (i, bitmap, ({ + s = format (s, "%u ", i); + })); + /* *INDENT-ON* */ + } + + return s; +} u8 * format_vnet_hw_interface (u8 * s, va_list * args) @@ -172,6 +192,12 @@ format_vnet_hw_interface (u8 * s, va_list * args) s = format (s, "\n%ULink speed: %U", format_white_space, indent + 2, format_vnet_hw_interface_link_speed, hi->link_speed); + if (hi->rss_queues) + { + s = format (s, "\n%URSS queues: %U", format_white_space, indent + 2, + format_vnet_hw_interface_rss_queues, hi->rss_queues); + } + if (verbose) { if (hw_class->format_device) |