mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
selftests: ncdevmem: Remove hard-coded queue numbers
Use single last queue of the device and probe it dynamically. Reviewed-by: Mina Almasry <almasrymina@google.com> Reviewed-by: Joe Damato <jdamato@fastly.com> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://patch.msgid.link/20241107181211.3934153-10-sdf@fomichev.me Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
798d822e5d
commit
d4ef05d211
1 changed files with 38 additions and 2 deletions
|
@ -75,8 +75,8 @@ static char *server_ip;
|
|||
static char *client_ip;
|
||||
static char *port;
|
||||
static size_t do_validation;
|
||||
static int start_queue = 8;
|
||||
static int num_queues = 8;
|
||||
static int start_queue = -1;
|
||||
static int num_queues = 1;
|
||||
static char *ifname;
|
||||
static unsigned int ifindex;
|
||||
static unsigned int dmabuf_id;
|
||||
|
@ -208,6 +208,33 @@ void validate_buffer(void *line, size_t size)
|
|||
fprintf(stdout, "Validated buffer\n");
|
||||
}
|
||||
|
||||
static int rxq_num(int ifindex)
|
||||
{
|
||||
struct ethtool_channels_get_req *req;
|
||||
struct ethtool_channels_get_rsp *rsp;
|
||||
struct ynl_error yerr;
|
||||
struct ynl_sock *ys;
|
||||
int num = -1;
|
||||
|
||||
ys = ynl_sock_create(&ynl_ethtool_family, &yerr);
|
||||
if (!ys) {
|
||||
fprintf(stderr, "YNL: %s\n", yerr.msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
req = ethtool_channels_get_req_alloc();
|
||||
ethtool_channels_get_req_set_header_dev_index(req, ifindex);
|
||||
rsp = ethtool_channels_get(ys, req);
|
||||
if (rsp)
|
||||
num = rsp->rx_count + rsp->combined_count;
|
||||
ethtool_channels_get_req_free(req);
|
||||
ethtool_channels_get_rsp_free(rsp);
|
||||
|
||||
ynl_sock_destroy(ys);
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
#define run_command(cmd, ...) \
|
||||
({ \
|
||||
char command[256]; \
|
||||
|
@ -711,6 +738,15 @@ int main(int argc, char *argv[])
|
|||
|
||||
ifindex = if_nametoindex(ifname);
|
||||
|
||||
if (start_queue < 0) {
|
||||
start_queue = rxq_num(ifindex) - 1;
|
||||
|
||||
if (start_queue < 0)
|
||||
error(1, 0, "couldn't detect number of queues\n");
|
||||
|
||||
fprintf(stderr, "using queues %d..%d\n", start_queue, start_queue + num_queues);
|
||||
}
|
||||
|
||||
for (; optind < argc; optind++)
|
||||
fprintf(stderr, "extra arguments: %s\n", argv[optind]);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue