net/mlx5: support 16 hardware priorities
[dpdk.git] / drivers / net / failsafe / failsafe_ops.c
index fe64c68..6d44884 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright 2017 6WIND S.A.
- * Copyright 2017 Mellanox.
+ * Copyright 2017 Mellanox Technologies, Ltd
  */
 
 #include <stdbool.h>
@@ -81,7 +81,8 @@ static struct rte_eth_dev_info default_infos = {
                DEV_TX_OFFLOAD_MULTI_SEGS |
                DEV_TX_OFFLOAD_IPV4_CKSUM |
                DEV_TX_OFFLOAD_UDP_CKSUM |
-               DEV_TX_OFFLOAD_TCP_CKSUM,
+               DEV_TX_OFFLOAD_TCP_CKSUM |
+               DEV_TX_OFFLOAD_TCP_TSO,
        .flow_type_rss_offloads = 0x0,
 };
 
@@ -110,7 +111,8 @@ fs_dev_configure(struct rte_eth_dev *dev)
                int lsc_interrupt = 0;
                int lsc_enabled;
 
-               if (sdev->state != DEV_PROBED)
+               if (sdev->state != DEV_PROBED &&
+                   !(PRIV(dev)->alarm_lock == 0 && sdev->state == DEV_ACTIVE))
                        continue;
 
                rmv_interrupt = ETH(sdev)->data->dev_flags &
@@ -996,16 +998,27 @@ fs_mac_addr_add(struct rte_eth_dev *dev,
        return 0;
 }
 
-static void
+static int
 fs_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 {
        struct sub_device *sdev;
        uint8_t i;
+       int ret;
 
        fs_lock(dev, 0);
-       FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE)
-               rte_eth_dev_default_mac_addr_set(PORT_ID(sdev), mac_addr);
+       FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
+               ret = rte_eth_dev_default_mac_addr_set(PORT_ID(sdev), mac_addr);
+               ret = fs_err(sdev, ret);
+               if (ret) {
+                       ERROR("Operation rte_eth_dev_mac_addr_set failed for sub_device %d with error %d",
+                               i, ret);
+                       fs_unlock(dev, 0);
+                       return ret;
+               }
+       }
        fs_unlock(dev, 0);
+
+       return 0;
 }
 
 static int