net/virtio: fix memory leak when reinitializing device
[dpdk.git] / drivers / net / mlx4 / mlx4_flow.c
index a41d99d..fb84060 100644 (file)
@@ -57,7 +57,7 @@
 #include <rte_byteorder.h>
 #include <rte_errno.h>
 #include <rte_eth_ctrl.h>
-#include <rte_ethdev.h>
+#include <rte_ethdev_driver.h>
 #include <rte_ether.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
@@ -158,8 +158,11 @@ mlx4_conv_rss_hf(struct priv *priv, uint64_t rss_hf)
                        conv |= out[i];
                }
        if ((conv & priv->hw_rss_sup) == conv) {
-               if (rss_hf == (uint64_t)-1)
+               if (rss_hf == (uint64_t)-1) {
+                       /* Include inner RSS by default if supported. */
+                       conv |= priv->hw_rss_sup & IBV_RX_HASH_INNER;
                        return conv;
+               }
                if (!(rss_hf & ~seen))
                        return conv;
        }
@@ -1229,7 +1232,7 @@ mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan)
  * - MAC flow rules are generated from @p dev->data->mac_addrs
  *   (@p priv->mac array).
  * - An additional flow rule for Ethernet broadcasts is also generated.
- * - All these are per-VLAN if @p dev->data->dev_conf.rxmode.hw_vlan_filter
+ * - All these are per-VLAN if @p DEV_RX_OFFLOAD_VLAN_FILTER
  *   is enabled and VLAN filters are configured.
  *
  * @param priv
@@ -1297,7 +1300,8 @@ mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error)
        };
        struct ether_addr *rule_mac = &eth_spec.dst;
        rte_be16_t *rule_vlan =
-               priv->dev->data->dev_conf.rxmode.hw_vlan_filter &&
+               (priv->dev->data->dev_conf.rxmode.offloads &
+                DEV_RX_OFFLOAD_VLAN_FILTER) &&
                !priv->dev->data->promiscuous ?
                &vlan_spec.tci :
                NULL;