Commit 6f119a22 authored by Laurent Dufour's avatar Laurent Dufour Committed by Pavel Emelyanov

test/zdtm: Fix pagesize issue in PACKET_RX/TX_RING

Calls to setsockopt(PACKET_RX_RING/PACKET_TX_RING) are dependent of the
system's page size.
Using sysconf() page size makes these tests working on ppc64 where page
size is 64K.
Signed-off-by: 's avatarLaurent Dufour <ldufour@linux.vnet.ibm.com>
Acked-by: 's avatarAndrew Vagin <avagin@odin.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent cf4496be
...@@ -138,10 +138,10 @@ int main(int argc, char **argv) ...@@ -138,10 +138,10 @@ int main(int argc, char **argv)
} }
memset(&ring, 0, sizeof(ring)); memset(&ring, 0, sizeof(ring));
ring.tp_block_size = 4096; ring.tp_block_size = PAGE_SIZE;
ring.tp_block_nr = 1; ring.tp_block_nr = 1;
ring.tp_frame_size = 1024; ring.tp_frame_size = 1024;
ring.tp_frame_nr = 4; ring.tp_frame_nr = (ring.tp_block_size / ring.tp_frame_size) * ring.tp_block_nr;
if (setsockopt(sk1, SOL_PACKET, PACKET_RX_RING, &ring, sizeof(ring)) < 0) { if (setsockopt(sk1, SOL_PACKET, PACKET_RX_RING, &ring, sizeof(ring)) < 0) {
err("Can't set rx ring %m"); err("Can't set rx ring %m");
return 1; return 1;
...@@ -183,10 +183,10 @@ int main(int argc, char **argv) ...@@ -183,10 +183,10 @@ int main(int argc, char **argv)
} }
memset(&ring, 0, sizeof(ring)); memset(&ring, 0, sizeof(ring));
ring.tp_block_size = 4096; ring.tp_block_size = PAGE_SIZE;
ring.tp_block_nr = 1; ring.tp_block_nr = 1;
ring.tp_frame_size = 1024; ring.tp_frame_size = 1024;
ring.tp_frame_nr = 4; ring.tp_frame_nr = (ring.tp_block_size / ring.tp_frame_size) * ring.tp_block_nr;
if (setsockopt(sk2, SOL_PACKET, PACKET_TX_RING, &ring, sizeof(ring)) < 0) { if (setsockopt(sk2, SOL_PACKET, PACKET_TX_RING, &ring, sizeof(ring)) < 0) {
err("Can't set tx ring %m"); err("Can't set tx ring %m");
return 1; return 1;
......
...@@ -69,26 +69,26 @@ int main(int argc, char **argv) ...@@ -69,26 +69,26 @@ int main(int argc, char **argv)
} }
memset(&ring, 0, sizeof(ring)); memset(&ring, 0, sizeof(ring));
ring.tp_block_size = 4096; ring.tp_block_size = PAGE_SIZE;
ring.tp_block_nr = 1; ring.tp_block_nr = 1;
ring.tp_frame_size = 1024; ring.tp_frame_size = 1024;
ring.tp_frame_nr = 4; ring.tp_frame_nr = (ring.tp_block_size / ring.tp_frame_size) * ring.tp_block_nr;
if (setsockopt(sk, SOL_PACKET, PACKET_RX_RING, &ring, sizeof(ring)) < 0) { if (setsockopt(sk, SOL_PACKET, PACKET_RX_RING, &ring, sizeof(ring)) < 0) {
err("Can't set rx ring %m"); err("Can't set rx ring %m");
return 1; return 1;
} }
memset(&ring, 0, sizeof(ring)); memset(&ring, 0, sizeof(ring));
ring.tp_block_size = 4096; ring.tp_block_size = PAGE_SIZE;
ring.tp_block_nr = 1; ring.tp_block_nr = 1;
ring.tp_frame_size = 1024; ring.tp_frame_size = 1024;
ring.tp_frame_nr = 4; ring.tp_frame_nr = (ring.tp_block_size / ring.tp_frame_size) * ring.tp_block_nr;
if (setsockopt(sk, SOL_PACKET, PACKET_TX_RING, &ring, sizeof(ring)) < 0) { if (setsockopt(sk, SOL_PACKET, PACKET_TX_RING, &ring, sizeof(ring)) < 0) {
err("Can't set tx ring %m"); err("Can't set tx ring %m");
return 1; return 1;
} }
mem = mmap(NULL, 2 * 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, sk, 0); mem = mmap(NULL, 2 * PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, sk, 0);
if (mem == MAP_FAILED) { if (mem == MAP_FAILED) {
err("Can't mmap socket %m"); err("Can't mmap socket %m");
return 1; return 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment