net/hns3: support TSO
[dpdk.git] / drivers / net / hns3 / hns3_ethdev_vf.c
index f151e89..7b776ad 100644 (file)
@@ -592,6 +592,10 @@ hns3vf_dev_infos_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *info)
                                 DEV_TX_OFFLOAD_VLAN_INSERT |
                                 DEV_TX_OFFLOAD_QINQ_INSERT |
                                 DEV_TX_OFFLOAD_MULTI_SEGS |
+                                DEV_TX_OFFLOAD_TCP_TSO |
+                                DEV_TX_OFFLOAD_VXLAN_TNL_TSO |
+                                DEV_TX_OFFLOAD_GRE_TNL_TSO |
+                                DEV_TX_OFFLOAD_GENEVE_TNL_TSO |
                                 info->tx_queue_offload_capa);
 
        info->rx_desc_lim = (struct rte_eth_desc_lim) {
@@ -1559,6 +1563,7 @@ hns3vf_dev_start(struct rte_eth_dev *dev)
        hns3_set_rxtx_function(dev);
        hns3_mp_req_start_rxtx(dev);
        rte_eal_alarm_set(HNS3VF_SERVICE_INTERVAL, hns3vf_service_handler, dev);
+
        return ret;
 }
 
@@ -1671,7 +1676,8 @@ hns3vf_stop_service(struct hns3_adapter *hns)
        struct rte_eth_dev *eth_dev;
 
        eth_dev = &rte_eth_devices[hw->data->port_id];
-       rte_eal_alarm_cancel(hns3vf_service_handler, eth_dev);
+       if (hw->adapter_state == HNS3_NIC_STARTED)
+               rte_eal_alarm_cancel(hns3vf_service_handler, eth_dev);
        hw->mac.link_status = ETH_LINK_DOWN;
 
        hns3_set_rxtx_function(eth_dev);
@@ -1709,8 +1715,9 @@ hns3vf_start_service(struct hns3_adapter *hns)
        eth_dev = &rte_eth_devices[hw->data->port_id];
        hns3_set_rxtx_function(eth_dev);
        hns3_mp_req_start_rxtx(eth_dev);
+       if (hw->adapter_state == HNS3_NIC_STARTED)
+               hns3vf_service_handler(eth_dev);
 
-       hns3vf_service_handler(eth_dev);
        return 0;
 }