net/ice/base: add command to LLDP
[dpdk.git] / drivers / net / ice / ice_dcf_ethdev.c
index 23f82a4..e5ba1a6 100644 (file)
@@ -115,8 +115,8 @@ ice_dcf_dev_allmulticast_disable(__rte_unused struct rte_eth_dev *dev)
 static int
 ice_dcf_dev_filter_ctrl(struct rte_eth_dev *dev,
                        enum rte_filter_type filter_type,
-                       __rte_unused enum rte_filter_op filter_op,
-                       __rte_unused void *arg)
+                       enum rte_filter_op filter_op,
+                       void *arg)
 {
        int ret = 0;
 
@@ -124,6 +124,12 @@ ice_dcf_dev_filter_ctrl(struct rte_eth_dev *dev,
                return -EINVAL;
 
        switch (filter_type) {
+       case RTE_ETH_FILTER_GENERIC:
+               if (filter_op != RTE_ETH_FILTER_GET)
+                       return -EINVAL;
+               *(const void **)arg = &ice_flow_ops;
+               break;
+
        default:
                PMD_DRV_LOG(WARNING, "Filter type (%d) not supported",
                            filter_type);
@@ -145,8 +151,8 @@ ice_dcf_dev_close(struct rte_eth_dev *dev)
        dev->dev_ops = NULL;
        dev->rx_pkt_burst = NULL;
        dev->tx_pkt_burst = NULL;
-       dev->data->mac_addrs = NULL;
 
+       ice_dcf_uninit_parent_adapter(dev);
        ice_dcf_uninit_hw(dev, &adapter->real_hw);
 }
 
@@ -225,13 +231,17 @@ ice_dcf_dev_init(struct rte_eth_dev *eth_dev)
 
        eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
 
+       adapter->real_hw.vc_event_msg_cb = ice_dcf_handle_pf_event_msg;
        if (ice_dcf_init_hw(eth_dev, &adapter->real_hw) != 0) {
                PMD_INIT_LOG(ERR, "Failed to init DCF hardware");
                return -1;
        }
 
-       rte_eth_random_addr(adapter->mac_addr.addr_bytes);
-       eth_dev->data->mac_addrs = &adapter->mac_addr;
+       if (ice_dcf_init_parent_adapter(eth_dev) != 0) {
+               PMD_INIT_LOG(ERR, "Failed to init DCF parent adapter");
+               ice_dcf_uninit_hw(eth_dev, &adapter->real_hw);
+               return -1;
+       }
 
        return 0;
 }