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;
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);
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);
}
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;
}