Commit 725ff532 authored by Petr Machata's avatar Petr Machata Committed by Jakub Kicinski
Browse files

mlxsw: Revert "Prepare for XM implementation - prefix insertion and removal"



This reverts commit e7086213 ("Merge branch
'mlxsw-spectrum-prepare-for-xm-implementation-prefix-insertion-and-removal'").

Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 6a4b02b8
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -7848,11 +7848,10 @@ static inline void mlxsw_reg_ralue_pack4(char *payload,
					 enum mlxsw_reg_ralxx_protocol protocol,
					 enum mlxsw_reg_ralue_op op,
					 u16 virtual_router, u8 prefix_len,
					 u32 *dip)
					 u32 dip)
{
	mlxsw_reg_ralue_pack(payload, protocol, op, virtual_router, prefix_len);
	if (dip)
		mlxsw_reg_ralue_dip4_set(payload, *dip);
	mlxsw_reg_ralue_dip4_set(payload, dip);
}

static inline void mlxsw_reg_ralue_pack6(char *payload,
@@ -7862,7 +7861,6 @@ static inline void mlxsw_reg_ralue_pack6(char *payload,
					 const void *dip)
{
	mlxsw_reg_ralue_pack(payload, protocol, op, virtual_router, prefix_len);
	if (dip)
	mlxsw_reg_ralue_dip6_memcpy_to(payload, dip);
}

+206 −530

File changed.

Preview size limit exceeded, changes collapsed.

+0 −54
Original line number Diff line number Diff line
@@ -15,26 +15,6 @@ struct mlxsw_sp_router_nve_decap {
	u8 valid:1;
};

struct mlxsw_sp_fib_entry_op_ctx {
	u8 bulk_ok:1, /* Indicate to the low-level op it is ok to bulk
		       * the actual entry with the one that is the next
		       * in queue.
		       */
	   initialized:1; /* Bit that the low-level op sets in case
			   * the context priv is initialized.
			   */
	struct list_head fib_entry_priv_list;
	unsigned long ll_priv[];
};

static inline void
mlxsw_sp_fib_entry_op_ctx_clear(struct mlxsw_sp_fib_entry_op_ctx *op_ctx)
{
	WARN_ON_ONCE(!list_empty(&op_ctx->fib_entry_priv_list));
	memset(op_ctx, 0, sizeof(*op_ctx));
	INIT_LIST_HEAD(&op_ctx->fib_entry_priv_list);
}

struct mlxsw_sp_router {
	struct mlxsw_sp *mlxsw_sp;
	struct mlxsw_sp_rif **rifs;
@@ -71,9 +51,6 @@ struct mlxsw_sp_router {
	const struct mlxsw_sp_ipip_ops **ipip_ops_arr;
	struct mlxsw_sp_router_nve_decap nve_decap_config;
	struct mutex lock; /* Protects shared router resources */
	struct work_struct fib_event_work;
	struct list_head fib_event_queue;
	spinlock_t fib_event_queue_lock; /* Protects fib event queue list */
	/* One set of ops for each protocol: IPv4 and IPv6 */
	const struct mlxsw_sp_router_ll_ops *proto_ll_ops[MLXSW_SP_L3_PROTO_MAX];
	struct mlxsw_sp_fib_entry_op_ctx *ll_op_ctx;
@@ -87,18 +64,6 @@ struct mlxsw_sp_router {
	u32 adj_trap_index;
};

struct mlxsw_sp_fib_entry_priv {
	refcount_t refcnt;
	struct list_head list; /* Member in op_ctx->fib_entry_priv_list */
	unsigned long priv[];
};

enum mlxsw_sp_fib_entry_op {
	MLXSW_SP_FIB_ENTRY_OP_WRITE,
	MLXSW_SP_FIB_ENTRY_OP_UPDATE,
	MLXSW_SP_FIB_ENTRY_OP_DELETE,
};

/* Low-level router ops. Basically this is to handle the different
 * register sets to work with ordinary and XM trees and FIB entries.
 */
@@ -106,25 +71,6 @@ struct mlxsw_sp_router_ll_ops {
	int (*ralta_write)(struct mlxsw_sp *mlxsw_sp, char *xralta_pl);
	int (*ralst_write)(struct mlxsw_sp *mlxsw_sp, char *xralst_pl);
	int (*raltb_write)(struct mlxsw_sp *mlxsw_sp, char *xraltb_pl);
	size_t fib_entry_op_ctx_size;
	size_t fib_entry_priv_size;
	void (*fib_entry_pack)(struct mlxsw_sp_fib_entry_op_ctx *op_ctx,
			       enum mlxsw_sp_l3proto proto, enum mlxsw_sp_fib_entry_op op,
			       u16 virtual_router, u8 prefix_len, unsigned char *addr,
			       struct mlxsw_sp_fib_entry_priv *priv);
	void (*fib_entry_act_remote_pack)(struct mlxsw_sp_fib_entry_op_ctx *op_ctx,
					  enum mlxsw_reg_ralue_trap_action trap_action,
					  u16 trap_id, u32 adjacency_index, u16 ecmp_size);
	void (*fib_entry_act_local_pack)(struct mlxsw_sp_fib_entry_op_ctx *op_ctx,
					 enum mlxsw_reg_ralue_trap_action trap_action,
					 u16 trap_id, u16 local_erif);
	void (*fib_entry_act_ip2me_pack)(struct mlxsw_sp_fib_entry_op_ctx *op_ctx);
	void (*fib_entry_act_ip2me_tun_pack)(struct mlxsw_sp_fib_entry_op_ctx *op_ctx,
					     u32 tunnel_ptr);
	int (*fib_entry_commit)(struct mlxsw_sp *mlxsw_sp,
				struct mlxsw_sp_fib_entry_op_ctx *op_ctx,
				bool *postponed_for_bulk);
	bool (*fib_entry_is_committed)(struct mlxsw_sp_fib_entry_priv *priv);
};

struct mlxsw_sp_rif_ipip_lb;