]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
net/mlx5: Separate between E-Switch and MPFS
[mirror_ubuntu-jammy-kernel.git] / drivers / net / ethernet / mellanox / mlx5 / core / eswitch.h
index 834a33050969719ca6e13b27c11b6eb895c02257..701d228de4add9ba3782b3055a9ce619a4d544f6 100644 (file)
@@ -37,6 +37,7 @@
 #include <linux/if_link.h>
 #include <net/devlink.h>
 #include <linux/mlx5/device.h>
+#include "lib/mpfs.h"
 
 #define MLX5_MAX_UC_PER_VPORT(dev) \
        (1 << MLX5_CAP_GEN(dev, log_max_current_uc_list))
@@ -44,9 +45,6 @@
 #define MLX5_MAX_MC_PER_VPORT(dev) \
        (1 << MLX5_CAP_GEN(dev, log_max_current_mc_list))
 
-#define MLX5_L2_ADDR_HASH_SIZE (BIT(BITS_PER_BYTE))
-#define MLX5_L2_ADDR_HASH(addr) (addr[5])
-
 #define FDB_UPLINK_VPORT 0xffff
 
 #define MLX5_MIN_BW_SHARE 1
 #define MLX5_RATE_TO_BW_SHARE(rate, divider, limit) \
        min_t(u32, max_t(u32, (rate) / (divider), MLX5_MIN_BW_SHARE), limit)
 
-/* L2 -mac address based- hash helpers */
-struct l2addr_node {
-       struct hlist_node hlist;
-       u8                addr[ETH_ALEN];
-};
-
-#define for_each_l2hash_node(hn, tmp, hash, i) \
-       for (i = 0; i < MLX5_L2_ADDR_HASH_SIZE; i++) \
-               hlist_for_each_entry_safe(hn, tmp, &hash[i], hlist)
-
-#define l2addr_hash_find(hash, mac, type) ({                \
-       int ix = MLX5_L2_ADDR_HASH(mac);                    \
-       bool found = false;                                 \
-       type *ptr = NULL;                                   \
-                                                           \
-       hlist_for_each_entry(ptr, &hash[ix], node.hlist)    \
-               if (ether_addr_equal(ptr->node.addr, mac)) {\
-                       found = true;                       \
-                       break;                              \
-               }                                           \
-       if (!found)                                         \
-               ptr = NULL;                                 \
-       ptr;                                                \
-})
-
-#define l2addr_hash_add(hash, mac, type, gfp) ({            \
-       int ix = MLX5_L2_ADDR_HASH(mac);                    \
-       type *ptr = NULL;                                   \
-                                                           \
-       ptr = kzalloc(sizeof(type), gfp);                   \
-       if (ptr) {                                          \
-               ether_addr_copy(ptr->node.addr, mac);       \
-               hlist_add_head(&ptr->node.hlist, &hash[ix]);\
-       }                                                   \
-       ptr;                                                \
-})
-
-#define l2addr_hash_del(ptr) ({                             \
-       hlist_del(&ptr->node.hlist);                        \
-       kfree(ptr);                                         \
-})
-
 struct vport_ingress {
        struct mlx5_flow_table *acl;
        struct mlx5_flow_group *allow_untagged_spoofchk_grp;
@@ -150,12 +106,6 @@ struct mlx5_vport {
        u16                     enabled_events;
 };
 
-struct mlx5_l2_table {
-       struct hlist_head l2_hash[MLX5_L2_ADDR_HASH_SIZE];
-       u32                  size;
-       unsigned long        *bitmap;
-};
-
 struct mlx5_eswitch_fdb {
        void *fdb;
        union {
@@ -222,7 +172,6 @@ struct esw_mc_addr { /* SRIOV only */
 
 struct mlx5_eswitch {
        struct mlx5_core_dev    *dev;
-       struct mlx5_l2_table    l2_table;
        struct mlx5_eswitch_fdb fdb_table;
        struct hlist_head       mc_table[MLX5_L2_ADDR_HASH_SIZE];
        struct workqueue_struct *work_queue;
@@ -250,8 +199,6 @@ int esw_offloads_init(struct mlx5_eswitch *esw, int nvports);
 /* E-Switch API */
 int mlx5_eswitch_init(struct mlx5_core_dev *dev);
 void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw);
-void mlx5_eswitch_attach(struct mlx5_eswitch *esw);
-void mlx5_eswitch_detach(struct mlx5_eswitch *esw);
 void mlx5_eswitch_vport_event(struct mlx5_eswitch *esw, struct mlx5_eqe *eqe);
 int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs, int mode);
 void mlx5_eswitch_disable_sriov(struct mlx5_eswitch *esw);