Hello all, I use X553 SFP+ port to configure SRIOV mode. In the dpdk application, a vlan interface is configured on a VF, and vlan filter table is configured appropriately. All unicast packets are passed to/from the application without any issue, however, multicast packets are filtered out by PF (the last statement is my conclusion, as soon as promisc mode is enabled on PF, all works fine). VF is configured additionally to be in promisc mode and in allmulti. Are there any limitations on using vlan on SRIOV VF? Below is the output of eth_dev->data:
rx_mbuf_alloc_failed = 0, mac_addrs = 0x10ea7f200, mac_pool_sel = {0 <repeats 128 times>}, hash_mac_addrs = 0x0, port_id = 2, promiscuous= 1 '\001', scattered_rx = 1 '\001', all_multicast= 1 '\001', dev_started = 1 '\001', lro = 0 '\000', rx_queue_state = '\000' <repeats 1023 times>, tx_queue_state = '\000' <repeats 1023 times>, dev_flags = 64, numa_node = 0, vlan_filter_conf= {ids = {1024, 0 <repeats 63 times>}}, More detailed: (gdb) p *rte_eth_devices[2].data $3 = {name = "05:10.1", '\000' <repeats 56 times>, rx_queues = 0x1118ff400, tx_queues = 0x1118ff340, nb_rx_queues = 2, nb_tx_queues = 2, sriov = {active = 0 '\000', nb_q_per_pool = 0 '\000', def_vmdq_idx = 0, def_pool_q_idx = 0}, dev_private = 0x10ea7f580, dev_link = {link_speed = 0, link_duplex = 0, link_autoneg = 1, link_status = 0}, dev_conf = {link_speeds = 0, rxmode = {mq_mode = ETH_MQ_RX_RSS, max_rx_pkt_len = 9728, max_lro_pkt_size = 0, split_hdr_size = 0, offloads = 535041, reserved_64s = {0, 0}, reserved_ptrs = {0x0, 0x0}}, txmode = {mq_mode = ETH_MQ_TX_NONE, offloads = 32768, pvid = 0, hw_vlan_reject_tagged = 0 '\000', hw_vlan_reject_untagged = 0 '\000', hw_vlan_insert_pvid = 0 '\000', reserved_64s = {0, 0}, reserved_ptrs = {0x0, 0x0}}, lpbk_mode = 0, rx_adv_conf = {rss_conf = { rss_key = 0x0, rss_key_len = 0 '\000', rss_hf = 232756}, vmdq_dcb_conf = {nb_queue_pools = (unknown: 0), enable_default_pool = 0 '\000', default_pool = 0 '\000', nb_pool_maps = 0 '\000', pool_map = {{vlan_id = 0, pools = 0} <repeats 64 times>}, dcb_tc = "\000\000\000\000\000\000\000"}, dcb_rx_conf = {nb_tcs = (unknown: 0), dcb_tc = "\000\000\000\000\000\000\000"}, vmdq_rx_conf = {nb_queue_pools = (unknown: 0), enable_default_pool = 0 '\000', default_pool = 0 '\000', enable_loop_back = 0 '\000', nb_pool_maps = 0 '\000', rx_mode = 0, pool_map = {{vlan_id = 0, pools = 0} <repeats 64 times>}}}, tx_adv_conf = {vmdq_dcb_tx_conf = { nb_queue_pools = (unknown: 0), dcb_tc = "\000\000\000\000\000\000\000"}, dcb_tx_conf = {nb_tcs = (unknown: 0), dcb_tc = "\000\000\000\000\000\000\000"}, vmdq_tx_conf = {nb_queue_pools = (unknown: 0)}}, dcb_capability_en = 0, fdir_conf = {mode = RTE_FDIR_MODE_NONE, pballoc = RTE_FDIR_PBALLOC_64K, status = RTE_FDIR_NO_REPORT_STATUS, drop_queue = 0 '\000', mask = {vlan_tci_mask = 0, ipv4_mask = {src_ip = 0, dst_ip = 0, tos = 0 '\000', ttl = 0 '\000', proto = 0 '\000'}, ipv6_mask = {src_ip = {0, 0, 0, 0}, dst_ip = {0, 0, 0, 0}, tc = 0 '\000', proto = 0 '\000', hop_limits = 0 '\000'}, src_port_mask = 0, dst_port_mask = 0, mac_addr_byte_mask = 0 '\000', tunnel_id_mask = 0, tunnel_type_mask = 0 '\000'}, flex_conf = {nb_payloads = 0, nb_flexmasks = 0, flex_set = {{ type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, { type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, { type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, { type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16 times>}}}, flex_mask = {{ flow_type = 0, mask = '\000' <repeats 15 times>} <repeats 24 times>}}}, intr_conf = {lsc = 0, rxq = 0, rmv = 0}}, mtu = 1500, min_rx_buf_size = 2176, rx_mbuf_alloc_failed = 0, mac_addrs = 0x10ea7f200, mac_pool_sel = {0 <repeats 128 times>}, hash_mac_addrs = 0x0, port_id = 2, promiscuous = 1 '\001', scattered_rx = 1 '\001', all_multicast = 1 '\001', dev_started = 1 '\001', lro = 0 '\000', rx_queue_state = '\000' <repeats 1023 times>, tx_queue_state = '\000' <repeats 1023 times>, dev_flags = 64, numa_node = 0, vlan_filter_conf = {ids = {1024, 0 <repeats 63 times>}}, owner = {id = 0, name = '\000' <repeats 63 times>}, representor_id = 0, flow_ops_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}, reserved_64s = {0, 0, 0, 0}, reserved_ptrs = {0x0, 0x0, 0x0, 0x0}} What am I missing in my config to make it work for multicast packets? Kind regards, Renata