|
38 | 38 | #define TX_MAC "00:00:00:00:00:01" |
39 | 39 | #define RX_MAC "00:00:00:00:00:02" |
40 | 40 |
|
| 41 | +#define VLAN_ID 59 |
| 42 | +#define VLAN_PROTO "802.1Q" |
| 43 | +#define VLAN_PID htons(ETH_P_8021Q) |
| 44 | +#define TX_NAME_VLAN TX_NAME "." TO_STR(VLAN_ID) |
| 45 | + |
41 | 46 | #define XDP_RSS_TYPE_L4 BIT(3) |
| 47 | +#define VLAN_VID_MASK 0xfff |
42 | 48 |
|
43 | 49 | struct xsk { |
44 | 50 | void *umem_area; |
@@ -323,6 +329,12 @@ static int verify_xsk_metadata(struct xsk *xsk, bool sent_from_af_xdp) |
323 | 329 | if (!sent_from_af_xdp) { |
324 | 330 | if (!ASSERT_NEQ(meta->rx_hash_type & XDP_RSS_TYPE_L4, 0, "rx_hash_type")) |
325 | 331 | return -1; |
| 332 | + |
| 333 | + if (!ASSERT_EQ(meta->rx_vlan_tci & VLAN_VID_MASK, VLAN_ID, "rx_vlan_tci")) |
| 334 | + return -1; |
| 335 | + |
| 336 | + if (!ASSERT_EQ(meta->rx_vlan_proto, VLAN_PID, "rx_vlan_proto")) |
| 337 | + return -1; |
326 | 338 | goto done; |
327 | 339 | } |
328 | 340 |
|
@@ -378,10 +390,14 @@ void test_xdp_metadata(void) |
378 | 390 |
|
379 | 391 | SYS(out, "ip link set dev " TX_NAME " address " TX_MAC); |
380 | 392 | SYS(out, "ip link set dev " TX_NAME " up"); |
381 | | - SYS(out, "ip addr add " TX_ADDR "/" PREFIX_LEN " dev " TX_NAME); |
| 393 | + |
| 394 | + SYS(out, "ip link add link " TX_NAME " " TX_NAME_VLAN |
| 395 | + " type vlan proto " VLAN_PROTO " id " TO_STR(VLAN_ID)); |
| 396 | + SYS(out, "ip link set dev " TX_NAME_VLAN " up"); |
| 397 | + SYS(out, "ip addr add " TX_ADDR "/" PREFIX_LEN " dev " TX_NAME_VLAN); |
382 | 398 |
|
383 | 399 | /* Avoid ARP calls */ |
384 | | - SYS(out, "ip -4 neigh add " RX_ADDR " lladdr " RX_MAC " dev " TX_NAME); |
| 400 | + SYS(out, "ip -4 neigh add " RX_ADDR " lladdr " RX_MAC " dev " TX_NAME_VLAN); |
385 | 401 |
|
386 | 402 | switch_ns_to_rx(&tok); |
387 | 403 |
|
|
0 commit comments