net/ice: fix flow director programming status check
[dpdk.git] / drivers / net / ice / ice_ethdev.c
index 3b20ea4..2e919c5 100644 (file)
@@ -2242,10 +2242,12 @@ ice_dev_init(struct rte_eth_dev *dev)
        /* get base queue pairs index  in the device */
        ice_base_queue_get(pf);
 
-       ret = ice_flow_init(ad);
-       if (ret) {
-               PMD_INIT_LOG(ERR, "Failed to initialize flow");
-               return ret;
+       if (!ad->is_safe_mode) {
+               ret = ice_flow_init(ad);
+               if (ret) {
+                       PMD_INIT_LOG(ERR, "Failed to initialize flow");
+                       return ret;
+               }
        }
 
        ret = ice_reset_fxp_resource(hw);
@@ -2392,7 +2394,8 @@ ice_dev_close(struct rte_eth_dev *dev)
 
        ice_dev_stop(dev);
 
-       ice_flow_uninit(ad);
+       if (!ad->is_safe_mode)
+               ice_flow_uninit(ad);
 
        /* release all queue resource */
        ice_free_queues(dev);
@@ -2442,7 +2445,8 @@ ice_dev_configure(struct rte_eth_dev *dev)
        ad->rx_bulk_alloc_allowed = true;
        ad->tx_simple_allowed = true;
 
-       dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
+       if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
+               dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
 
        return 0;
 }
@@ -2726,6 +2730,7 @@ ice_rxq_intr_setup(struct rte_eth_dev *dev)
 
        /* Enable FDIR MSIX interrupt */
        if (pf->fdir.fdir_vsi) {
+               pf->fdir.fdir_vsi->nb_used_qps = 1;
                ice_vsi_queues_bind_intr(pf->fdir.fdir_vsi);
                ice_vsi_enable_queues_intr(pf->fdir.fdir_vsi);
        }