net/mlx5: Bridge, move additional data structures to priv header
Following patches in series will require accessing flow tables and groups sizes, table levels and struct mlx5_esw_bridge from new the new source file dedicated to multicast code. Expose these data in bridge_priv.h to reduce clutter in following patches that will implement the actual functionality. Signed-off-by: Vlad Buslov <vladbu@nvidia.com> Reviewed-by: Maor Dickman <maord@nvidia.com> Reviewed-by: Roi Dayan <roid@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
9071b423c3
commit
6767c97d7a
@ -13,66 +13,6 @@
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "diag/bridge_tracepoint.h"
|
||||
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE 131072
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_UNTAGGED_GRP_SIZE 524288
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_FROM 0
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_UNTAGGED_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_SIZE \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO + 1)
|
||||
static_assert(MLX5_ESW_BRIDGE_INGRESS_TABLE_SIZE == 1048576);
|
||||
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_SIZE 131072
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_SIZE (262144 - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_FROM 0
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_TO \
|
||||
MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_FROM
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_SIZE \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_TO + 1)
|
||||
static_assert(MLX5_ESW_BRIDGE_EGRESS_TABLE_SIZE == 524288);
|
||||
|
||||
#define MLX5_ESW_BRIDGE_SKIP_TABLE_SIZE 0
|
||||
|
||||
enum {
|
||||
MLX5_ESW_BRIDGE_LEVEL_INGRESS_TABLE,
|
||||
MLX5_ESW_BRIDGE_LEVEL_EGRESS_TABLE,
|
||||
MLX5_ESW_BRIDGE_LEVEL_SKIP_TABLE,
|
||||
};
|
||||
|
||||
static const struct rhashtable_params fdb_ht_params = {
|
||||
.key_offset = offsetof(struct mlx5_esw_bridge_fdb_entry, key),
|
||||
.key_len = sizeof(struct mlx5_esw_bridge_fdb_key),
|
||||
@ -80,31 +20,6 @@ static const struct rhashtable_params fdb_ht_params = {
|
||||
.automatic_shrinking = true,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_ESW_BRIDGE_VLAN_FILTERING_FLAG = BIT(0),
|
||||
};
|
||||
|
||||
struct mlx5_esw_bridge {
|
||||
int ifindex;
|
||||
int refcnt;
|
||||
struct list_head list;
|
||||
struct mlx5_esw_bridge_offloads *br_offloads;
|
||||
|
||||
struct list_head fdb_list;
|
||||
struct rhashtable fdb_ht;
|
||||
|
||||
struct mlx5_flow_table *egress_ft;
|
||||
struct mlx5_flow_group *egress_vlan_fg;
|
||||
struct mlx5_flow_group *egress_qinq_fg;
|
||||
struct mlx5_flow_group *egress_mac_fg;
|
||||
struct mlx5_flow_group *egress_miss_fg;
|
||||
struct mlx5_pkt_reformat *egress_miss_pkt_reformat;
|
||||
struct mlx5_flow_handle *egress_miss_handle;
|
||||
unsigned long ageing_time;
|
||||
u32 flags;
|
||||
u16 vlan_proto;
|
||||
};
|
||||
|
||||
static void
|
||||
mlx5_esw_bridge_fdb_offload_notify(struct net_device *dev, const unsigned char *addr, u16 vid,
|
||||
unsigned long val)
|
||||
|
@ -12,6 +12,70 @@
|
||||
#include <linux/xarray.h>
|
||||
#include "fs_core.h"
|
||||
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE 131072
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_UNTAGGED_GRP_SIZE 524288
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_FROM 0
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_FILTER_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_QINQ_FILTER_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_INGRESS_TABLE_UNTAGGED_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_INGRESS_TABLE_SIZE \
|
||||
(MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO + 1)
|
||||
static_assert(MLX5_ESW_BRIDGE_INGRESS_TABLE_SIZE == 1048576);
|
||||
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_SIZE 131072
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_SIZE (262144 - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_FROM 0
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_QINQ_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_TO \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_FROM + \
|
||||
MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_SIZE - 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_FROM \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_MAC_GRP_IDX_TO + 1)
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_TO \
|
||||
MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_FROM
|
||||
#define MLX5_ESW_BRIDGE_EGRESS_TABLE_SIZE \
|
||||
(MLX5_ESW_BRIDGE_EGRESS_TABLE_MISS_GRP_IDX_TO + 1)
|
||||
static_assert(MLX5_ESW_BRIDGE_EGRESS_TABLE_SIZE == 524288);
|
||||
|
||||
#define MLX5_ESW_BRIDGE_SKIP_TABLE_SIZE 0
|
||||
|
||||
enum {
|
||||
MLX5_ESW_BRIDGE_LEVEL_INGRESS_TABLE,
|
||||
MLX5_ESW_BRIDGE_LEVEL_EGRESS_TABLE,
|
||||
MLX5_ESW_BRIDGE_LEVEL_SKIP_TABLE,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_ESW_BRIDGE_VLAN_FILTERING_FLAG = BIT(0),
|
||||
};
|
||||
|
||||
struct mlx5_esw_bridge_fdb_key {
|
||||
unsigned char addr[ETH_ALEN];
|
||||
u16 vid;
|
||||
@ -60,4 +124,25 @@ struct mlx5_esw_bridge_port {
|
||||
struct xarray vlans;
|
||||
};
|
||||
|
||||
struct mlx5_esw_bridge {
|
||||
int ifindex;
|
||||
int refcnt;
|
||||
struct list_head list;
|
||||
struct mlx5_esw_bridge_offloads *br_offloads;
|
||||
|
||||
struct list_head fdb_list;
|
||||
struct rhashtable fdb_ht;
|
||||
|
||||
struct mlx5_flow_table *egress_ft;
|
||||
struct mlx5_flow_group *egress_vlan_fg;
|
||||
struct mlx5_flow_group *egress_qinq_fg;
|
||||
struct mlx5_flow_group *egress_mac_fg;
|
||||
struct mlx5_flow_group *egress_miss_fg;
|
||||
struct mlx5_pkt_reformat *egress_miss_pkt_reformat;
|
||||
struct mlx5_flow_handle *egress_miss_handle;
|
||||
unsigned long ageing_time;
|
||||
u32 flags;
|
||||
u16 vlan_proto;
|
||||
};
|
||||
|
||||
#endif /* _MLX5_ESW_BRIDGE_PRIVATE_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user