mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-18 14:58:25 -04:00
selftests/bpf: Fix SENDPAGE data logic in test_sockmap
In the SENDPAGE test, "opt->iov_length * cnt" size of data will be sent
cnt times by sendfile.
1. In push/pop tests, they will be invoked cnt times, for the simplicity of
msg_verify_data, change chunk_sz to iov_length
2. Change iov_length in test_send_large from 1024 to 8192. We have pop test
where txmsg_start_pop is 4096. 4096 > 1024, an error will be returned.
Fixes: 328aa08a08 ("bpf: Selftests, break down test_sockmap into subtests")
Signed-off-by: Zijian Zhang <zijianzhang@bytedance.com>
Reviewed-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/r/20241106222520.527076-3-zijianzhang@bytedance.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
This commit is contained in:
committed by
Martin KaFai Lau
parent
66c54c2040
commit
4095031463
@@ -420,16 +420,18 @@ static int msg_loop_sendpage(int fd, int iov_length, int cnt,
|
||||
{
|
||||
bool drop = opt->drop_expected;
|
||||
unsigned char k = 0;
|
||||
int i, j, fp;
|
||||
FILE *file;
|
||||
int i, fp;
|
||||
|
||||
file = tmpfile();
|
||||
if (!file) {
|
||||
perror("create file for sendpage");
|
||||
return 1;
|
||||
}
|
||||
for (i = 0; i < iov_length * cnt; i++, k++)
|
||||
fwrite(&k, sizeof(char), 1, file);
|
||||
for (i = 0; i < cnt; i++, k = 0) {
|
||||
for (j = 0; j < iov_length; j++, k++)
|
||||
fwrite(&k, sizeof(char), 1, file);
|
||||
}
|
||||
fflush(file);
|
||||
fseek(file, 0, SEEK_SET);
|
||||
|
||||
@@ -623,7 +625,9 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt,
|
||||
* This is really only useful for testing edge cases in code
|
||||
* paths.
|
||||
*/
|
||||
total_bytes = (float)iov_count * (float)iov_length * (float)cnt;
|
||||
total_bytes = (float)iov_length * (float)cnt;
|
||||
if (!opt->sendpage)
|
||||
total_bytes *= (float)iov_count;
|
||||
if (txmsg_apply)
|
||||
txmsg_pop_total = txmsg_pop * (total_bytes / txmsg_apply);
|
||||
else
|
||||
@@ -701,7 +705,7 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt,
|
||||
|
||||
if (data) {
|
||||
int chunk_sz = opt->sendpage ?
|
||||
iov_length * cnt :
|
||||
iov_length :
|
||||
iov_length * iov_count;
|
||||
|
||||
errno = msg_verify_data(&msg, recv, chunk_sz, &k, &bytes_cnt);
|
||||
@@ -1466,8 +1470,8 @@ static void test_send_many(struct sockmap_options *opt, int cgrp)
|
||||
|
||||
static void test_send_large(struct sockmap_options *opt, int cgrp)
|
||||
{
|
||||
opt->iov_length = 256;
|
||||
opt->iov_count = 1024;
|
||||
opt->iov_length = 8192;
|
||||
opt->iov_count = 32;
|
||||
opt->rate = 2;
|
||||
test_exec(cgrp, opt);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user