Hi,

We have a quite complex API for VLAN filter/push/pop,
per port, per queue or per flow.

These are the old per-port functions:
        rte_eth_dev_vlan_filter
        rte_eth_dev_set_vlan_strip_on_queue
        rte_eth_dev_set_vlan_ether_type
        rte_eth_dev_set_vlan_offload
        rte_eth_dev_get_vlan_offload
        rte_eth_dev_set_vlan_pvid

In rte_eth_dev_data:
        struct rte_vlan_filter_conf vlan_filter_conf

In rte_eth_txmode struct:
        uint16_t pvid;
        hw_vlan_reject_tagged : 1,
        hw_vlan_reject_untagged : 1,
        hw_vlan_insert_pvid : 1;

Configurartion flags:
        ETH_VLAN_STRIP_OFFLOAD
        ETH_VLAN_FILTER_OFFLOAD
        ETH_VLAN_EXTEND_OFFLOAD
        ETH_QINQ_STRIP_OFFLOAD

RX offload capabilities:
        DEV_RX_OFFLOAD_VLAN_STRIP
        DEV_RX_OFFLOAD_VLAN_FILTER
        DEV_RX_OFFLOAD_VLAN_EXTEND
        DEV_RX_OFFLOAD_QINQ_STRIP

TX offload capabilities:
        DEV_TX_OFFLOAD_VLAN_INSERT

Types:
        ETH_VLAN_TYPE_UNKNOWN
        ETH_VLAN_TYPE_INNER
        ETH_VLAN_TYPE_OUTER

rte_flow configuration:
        RTE_FLOW_ITEM_TYPE_VLAN
        RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
        RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
        RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
        RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP

What can be done to simplify this mess?
Wouldn't it be simpler to keep only rte_flow?


Reply via email to