X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_bpf.c;h=7fcf92e716feeeac26f09c3f0f4b73c6cb5ddc02;hb=88caad251c8de3a84e353b0b2a27014bc303df87;hp=7c3de96c62369c22ada339dd636f7dc5b86ba785;hpb=b901d928361cc6f2ff03909a0f7a18640252ee27;p=dpdk.git diff --git a/app/test/test_bpf.c b/app/test/test_bpf.c index 7c3de96c62..7fcf92e716 100644 --- a/app/test/test_bpf.c +++ b/app/test/test_bpf.c @@ -59,6 +59,9 @@ struct dummy_mbuf { #define TEST_SHIFT_1 15 #define TEST_SHIFT_2 33 +#define TEST_SHIFT32_MASK (CHAR_BIT * sizeof(uint32_t) - 1) +#define TEST_SHIFT64_MASK (CHAR_BIT * sizeof(uint64_t) - 1) + #define TEST_JCC_1 0 #define TEST_JCC_2 -123 #define TEST_JCC_3 5678 @@ -548,15 +551,25 @@ static const struct ebpf_insn test_shift1_prog[] = { .off = offsetof(struct dummy_vect8, out[1].u64), }, { - .code = (BPF_ALU | BPF_RSH | BPF_X), - .dst_reg = EBPF_REG_2, - .src_reg = EBPF_REG_4, + .code = (BPF_ALU | BPF_AND | BPF_K), + .dst_reg = EBPF_REG_4, + .imm = TEST_SHIFT64_MASK, }, { .code = (EBPF_ALU64 | BPF_LSH | BPF_X), .dst_reg = EBPF_REG_3, .src_reg = EBPF_REG_4, }, + { + .code = (BPF_ALU | BPF_AND | BPF_K), + .dst_reg = EBPF_REG_4, + .imm = TEST_SHIFT32_MASK, + }, + { + .code = (BPF_ALU | BPF_RSH | BPF_X), + .dst_reg = EBPF_REG_2, + .src_reg = EBPF_REG_4, + }, { .code = (BPF_STX | BPF_MEM | EBPF_DW), .dst_reg = EBPF_REG_1, @@ -590,7 +603,7 @@ static const struct ebpf_insn test_shift1_prog[] = { { .code = (BPF_ALU | BPF_AND | BPF_K), .dst_reg = EBPF_REG_2, - .imm = sizeof(uint64_t) * CHAR_BIT - 1, + .imm = TEST_SHIFT64_MASK, }, { .code = (EBPF_ALU64 | EBPF_ARSH | BPF_X), @@ -600,7 +613,7 @@ static const struct ebpf_insn test_shift1_prog[] = { { .code = (BPF_ALU | BPF_AND | BPF_K), .dst_reg = EBPF_REG_2, - .imm = sizeof(uint32_t) * CHAR_BIT - 1, + .imm = TEST_SHIFT32_MASK, }, { .code = (BPF_ALU | BPF_LSH | BPF_X), @@ -666,8 +679,10 @@ test_shift1_check(uint64_t rc, const void *arg) dve.out[0].u64 = r2; dve.out[1].u64 = r3; - r2 = (uint32_t)r2 >> r4; + r4 &= TEST_SHIFT64_MASK; r3 <<= r4; + r4 &= TEST_SHIFT32_MASK; + r2 = (uint32_t)r2 >> r4; dve.out[2].u64 = r2; dve.out[3].u64 = r3; @@ -676,9 +691,9 @@ test_shift1_check(uint64_t rc, const void *arg) r3 = dvt->in[1].u64; r4 = dvt->in[2].u32; - r2 &= sizeof(uint64_t) * CHAR_BIT - 1; + r2 &= TEST_SHIFT64_MASK; r3 = (int64_t)r3 >> r2; - r2 &= sizeof(uint32_t) * CHAR_BIT - 1; + r2 &= TEST_SHIFT32_MASK; r4 = (uint32_t)r4 << r2; dve.out[4].u64 = r4; @@ -1008,9 +1023,9 @@ test_jump2_prepare(void *arg) * Initialize ether header. */ rte_ether_addr_copy((struct rte_ether_addr *)dst_mac, - &dn->eth_hdr.d_addr); + &dn->eth_hdr.dst_addr); rte_ether_addr_copy((struct rte_ether_addr *)src_mac, - &dn->eth_hdr.s_addr); + &dn->eth_hdr.src_addr); dn->eth_hdr.ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_VLAN); /* @@ -3207,7 +3222,7 @@ run_test(const struct bpf_test *tst) printf("%s@%d: check_result(%s) failed, " "error: %d(%s);\n", __func__, __LINE__, tst->name, - rv, strerror(ret)); + rv, strerror(rv)); } }