net/mlx5: add VLAN push/pop DR commands to glue
[dpdk.git] / drivers / net / octeontx2 / otx2_flow.c
index 3ddecfb..bdbf123 100644 (file)
@@ -528,8 +528,10 @@ otx2_flow_destroy(struct rte_eth_dev *dev,
                        return -EINVAL;
 
                /* Clear mark offload flag if there are no more mark actions */
-               if (rte_atomic32_sub_return(&npc->mark_actions, 1) == 0)
+               if (rte_atomic32_sub_return(&npc->mark_actions, 1) == 0) {
                        hw->rx_offload_flags &= ~NIX_RX_OFFLOAD_MARK_UPDATE_F;
+                       otx2_eth_set_rx_function(dev);
+               }
        }
 
        rc = flow_free_rss_action(dev, flow);
@@ -682,6 +684,7 @@ flow_update_kex_info(struct npc_xtract_info *xtract_info,
        xtract_info->hdr_off = (val >> HDR_OFF_SHIFT) & 0xff;
        xtract_info->key_off = val & 0x3f;
        xtract_info->enable = ((val >> 7) & 0x1);
+       xtract_info->flags_enable = ((val >> 6) & 0x1);
 }
 
 static void
@@ -841,7 +844,7 @@ otx2_flow_init(struct otx2_eth_dev *hw)
        }
 
        npc->free_entries = rte_zmalloc(NULL, npc->flow_max_priority
-                                       * sizeof(struct rte_bitmap),
+                                       * sizeof(struct rte_bitmap *),
                                        0);
        if (npc->free_entries == NULL) {
                otx2_err("free_entries alloc failed");
@@ -850,7 +853,7 @@ otx2_flow_init(struct otx2_eth_dev *hw)
        }
 
        npc->free_entries_rev = rte_zmalloc(NULL, npc->flow_max_priority
-                                       * sizeof(struct rte_bitmap),
+                                       * sizeof(struct rte_bitmap *),
                                        0);
        if (npc->free_entries_rev == NULL) {
                otx2_err("free_entries_rev alloc failed");
@@ -859,7 +862,7 @@ otx2_flow_init(struct otx2_eth_dev *hw)
        }
 
        npc->live_entries = rte_zmalloc(NULL, npc->flow_max_priority
-                                       * sizeof(struct rte_bitmap),
+                                       * sizeof(struct rte_bitmap *),
                                        0);
        if (npc->live_entries == NULL) {
                otx2_err("live_entries alloc failed");
@@ -868,7 +871,7 @@ otx2_flow_init(struct otx2_eth_dev *hw)
        }
 
        npc->live_entries_rev = rte_zmalloc(NULL, npc->flow_max_priority
-                                       * sizeof(struct rte_bitmap),
+                                       * sizeof(struct rte_bitmap *),
                                        0);
        if (npc->live_entries_rev == NULL) {
                otx2_err("live_entries_rev alloc failed");
@@ -945,8 +948,6 @@ err:
                rte_free(npc->flow_entry_info);
        if (npc_mem)
                rte_free(npc_mem);
-       if (nix_mem)
-               rte_free(nix_mem);
        return rc;
 }