+ struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
+ int mark_actions = 0, vtag_actions = 0;
+ struct roc_npc *npc = &dev->npc;
+
+ mark_actions = roc_npc_mark_actions_get(npc);
+ if (mark_actions) {
+ mark_actions = roc_npc_mark_actions_sub_return(npc, 1);
+ if (mark_actions == 0) {
+ dev->rx_offload_flags &= ~NIX_RX_OFFLOAD_MARK_UPDATE_F;
+ cn9k_eth_set_rx_function(eth_dev);
+ }
+ }
+
+ vtag_actions = roc_npc_vtag_actions_get(npc);
+ if (vtag_actions) {
+ if (flow->nix_intf == ROC_NPC_INTF_RX) {
+ vtag_actions = roc_npc_vtag_actions_sub_return(npc, 1);
+ if (vtag_actions == 0) {
+ dev->rx_offload_flags &=
+ ~NIX_RX_OFFLOAD_VLAN_STRIP_F;
+ cn9k_eth_set_rx_function(eth_dev);
+ }
+ }
+ }