net/ice: optimize maximum queue number calculation
[dpdk.git] / drivers / net / ice / ice_dcf_ethdev.c
index 164d834..59610e0 100644 (file)
@@ -681,6 +681,7 @@ ice_dcf_dev_info_get(struct rte_eth_dev *dev,
                RTE_ETH_TX_OFFLOAD_TCP_CKSUM |
                RTE_ETH_TX_OFFLOAD_SCTP_CKSUM |
                RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM |
+               RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM |
                RTE_ETH_TX_OFFLOAD_TCP_TSO |
                RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
                RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
@@ -956,6 +957,13 @@ ice_dcf_link_update(struct rte_eth_dev *dev,
        return rte_eth_linkstatus_set(dev, &new_link);
 }
 
+bool
+ice_dcf_adminq_need_retry(struct ice_adapter *ad)
+{
+       return ad->hw.dcf_enabled &&
+              !__atomic_load_n(&ad->dcf_state_on, __ATOMIC_RELAXED);
+}
+
 /* Add UDP tunneling port */
 static int
 ice_dcf_dev_udp_tunnel_port_add(struct rte_eth_dev *dev,
@@ -1105,6 +1113,7 @@ static int
 ice_dcf_dev_init(struct rte_eth_dev *eth_dev)
 {
        struct ice_dcf_adapter *adapter = eth_dev->data->dev_private;
+       struct ice_adapter *parent_adapter = &adapter->parent;
 
        eth_dev->dev_ops = &ice_dcf_eth_dev_ops;
        eth_dev->rx_pkt_burst = ice_dcf_recv_pkts;
@@ -1116,9 +1125,13 @@ ice_dcf_dev_init(struct rte_eth_dev *eth_dev)
        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");
+               __atomic_store_n(&parent_adapter->dcf_state_on, false,
+                                __ATOMIC_RELAXED);
                return -1;
        }
 
+       __atomic_store_n(&parent_adapter->dcf_state_on, true, __ATOMIC_RELAXED);
+
        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);