build/freebsd: rename macro BSDPAPP to FREEBSD
[dpdk.git] / drivers / net / failsafe / failsafe_private.h
index 2d16ba4..ca2442a 100644 (file)
@@ -1,11 +1,12 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright 2017 6WIND S.A.
- * Copyright 2017 Mellanox.
+ * Copyright 2017 Mellanox Technologies, Ltd
  */
 
 #ifndef _RTE_ETH_FAILSAFE_PRIVATE_H_
 #define _RTE_ETH_FAILSAFE_PRIVATE_H_
 
+#include <stdint.h>
 #include <sys/queue.h>
 #include <pthread.h>
 
@@ -13,6 +14,7 @@
 #include <rte_dev.h>
 #include <rte_ethdev_driver.h>
 #include <rte_devargs.h>
+#include <rte_flow.h>
 #include <rte_interrupts.h>
 
 #define FAILSAFE_DRIVER_NAME "Fail-safe PMD"
@@ -81,7 +83,8 @@ struct rte_flow {
        /* sub_flows */
        struct rte_flow *flows[FAILSAFE_MAX_ETHPORTS];
        /* flow description for synchronization */
-       struct rte_flow_desc *fd;
+       struct rte_flow_conv_rule rule;
+       uint8_t rule_data[];
 };
 
 enum dev_state {
@@ -119,6 +122,10 @@ struct sub_device {
        volatile unsigned int remove:1;
        /* flow isolation state */
        int flow_isolated:1;
+       /* RMV callback registration state */
+       unsigned int rmv_callback:1;
+       /* LSC callback registration state */
+       unsigned int lsc_callback:1;
 };
 
 struct fs_priv {
@@ -139,6 +146,8 @@ struct fs_priv {
        uint32_t nb_mac_addr;
        struct ether_addr mac_addrs[FAILSAFE_MAX_ETHADDR];
        uint32_t mac_addr_pool[FAILSAFE_MAX_ETHADDR];
+       uint32_t nb_mcast_addr;
+       struct ether_addr *mcast_addrs;
        /* current capabilities */
        struct rte_eth_dev_info infos;
        struct rte_eth_dev_owner my_owner; /* Unique owner. */
@@ -184,7 +193,7 @@ int failsafe_hotplug_alarm_cancel(struct rte_eth_dev *dev);
 
 /* RX / TX */
 
-void set_burst_fn(struct rte_eth_dev *dev, int force_safe);
+void failsafe_set_burst_fn(struct rte_eth_dev *dev, int force_safe);
 
 uint16_t failsafe_rx_burst(void *rxq,
                struct rte_mbuf **rx_pkts, uint16_t nb_pkts);
@@ -211,6 +220,7 @@ int failsafe_eal_uninit(struct rte_eth_dev *dev);
 /* ETH_DEV */
 
 int failsafe_eth_dev_state_sync(struct rte_eth_dev *dev);
+void failsafe_eth_dev_unregister_callbacks(struct sub_device *sdev);
 void failsafe_dev_remove(struct rte_eth_dev *dev);
 void failsafe_stats_increment(struct rte_eth_stats *to,
                                struct rte_eth_stats *from);
@@ -220,14 +230,17 @@ int failsafe_eth_rmv_event_callback(uint16_t port_id,
 int failsafe_eth_lsc_event_callback(uint16_t port_id,
                                    enum rte_eth_event_type event,
                                    void *cb_arg, void *out);
+int failsafe_eth_new_event_callback(uint16_t port_id,
+                                   enum rte_eth_event_type event,
+                                   void *cb_arg, void *out);
 
 /* GLOBALS */
 
 extern const char pmd_failsafe_driver_name[];
 extern const struct eth_dev_ops failsafe_ops;
 extern const struct rte_flow_ops fs_flow_ops;
-extern uint64_t hotplug_poll;
-extern int mac_from_arg;
+extern uint64_t failsafe_hotplug_poll;
+extern int failsafe_mac_from_arg;
 
 /* HELPERS */
 
@@ -318,7 +331,7 @@ extern int mac_from_arg;
         &((struct txq *)((s)->fs_dev->data->tx_queues[i]))->refcnt[(s)->sid] \
        )
 
-#ifdef RTE_EXEC_ENV_BSDAPP
+#ifdef RTE_EXEC_ENV_FREEBSD
 #define FS_THREADID_TYPE void*
 #define FS_THREADID_FMT  "p"
 #else
@@ -326,8 +339,12 @@ extern int mac_from_arg;
 #define FS_THREADID_FMT  "lu"
 #endif
 
-#define LOG__(level, m, ...) \
-       RTE_LOG(level, PMD, "net_failsafe: " m "%c", __VA_ARGS__)
+extern int failsafe_logtype;
+
+#define LOG__(l, m, ...) \
+       rte_log(RTE_LOG_ ## l, failsafe_logtype, \
+               "net_failsafe: " m "%c", __VA_ARGS__)
+
 #define LOG_(level, ...) LOG__(level, __VA_ARGS__, '\n')
 #define DEBUG(...) LOG_(DEBUG, __VA_ARGS__)
 #define INFO(...) LOG_(INFO, __VA_ARGS__)
@@ -382,9 +399,6 @@ fs_lock(struct rte_eth_dev *dev, unsigned int is_alarm)
                        return ret;
                }
        }
-       DEBUG("Hot-plug mutex was locked by thread %" FS_THREADID_FMT "%s",
-             (FS_THREADID_TYPE)pthread_self(),
-             PRIV(dev)->alarm_lock ? " by the hot-plug alarm" : "");
        return ret;
 }
 
@@ -396,7 +410,6 @@ static inline void
 fs_unlock(struct rte_eth_dev *dev, unsigned int is_alarm)
 {
        int ret;
-       unsigned int prev_alarm_lock = PRIV(dev)->alarm_lock;
 
        if (is_alarm) {
                RTE_ASSERT(PRIV(dev)->alarm_lock == 1);
@@ -405,10 +418,6 @@ fs_unlock(struct rte_eth_dev *dev, unsigned int is_alarm)
        ret = pthread_mutex_unlock(&PRIV(dev)->hotplug_mutex);
        if (ret)
                ERROR("Cannot unlock hot-plug mutex(%s)", strerror(ret));
-       else
-               DEBUG("Hot-plug mutex was unlocked by thread %" FS_THREADID_FMT "%s",
-                     (FS_THREADID_TYPE)pthread_self(),
-                     prev_alarm_lock ? " by the hot-plug alarm" : "");
 }
 
 /*
@@ -456,7 +465,7 @@ fs_switch_dev(struct rte_eth_dev *dev,
        } else {
                return;
        }
-       set_burst_fn(dev, 0);
+       failsafe_set_burst_fn(dev, 0);
        rte_wmb();
 }