mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
selftests/bpf: Fix SENDPAGE data logic in test_sockmap
[ Upstream commit 4095031463d4e99b534d2cd82035a417295764ae ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c8803b286d
commit
a1820f63dd
@@ -419,16 +419,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);
|
||||
|
||||
@@ -622,7 +624,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
|
||||
@@ -700,7 +704,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);
|
||||
@@ -1469,8 +1473,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