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: 328aa08a081b ("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:
parent
4116625fb3
commit
b1293e8098
1 changed files with 11 additions and 7 deletions
|
@ -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);
|
||||
|
||||
|
@ -614,7 +616,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
|
||||
|
@ -676,7 +680,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);
|
||||
|
@ -1425,8 +1429,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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue