mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 06:55:13 +08:00
Merge branch 'mlxsw-Minor-cleanup'
Jiri Pirko says: ==================== mlxsw: Minor cleanup Fix small issues I noticed during the refactoring. First patch adds file name comments in the header file to make it clear what goes where. Second patch fixes a typo and third patch simply aligns RIF index allocation with similar allocations in the driver. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
aae1a2ce14
@ -958,7 +958,7 @@ enum mlxsw_flood_table_type {
|
||||
MLXSW_REG_SFGC_TABLE_TYPE_VID = 1,
|
||||
MLXSW_REG_SFGC_TABLE_TYPE_SINGLE = 2,
|
||||
MLXSW_REG_SFGC_TABLE_TYPE_ANY = 0,
|
||||
MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFEST = 3,
|
||||
MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET = 3,
|
||||
MLXSW_REG_SFGC_TABLE_TYPE_FID = 4,
|
||||
};
|
||||
|
||||
|
@ -233,12 +233,6 @@ struct mlxsw_sp_port {
|
||||
struct list_head vlans_list;
|
||||
};
|
||||
|
||||
bool mlxsw_sp_port_dev_check(const struct net_device *dev);
|
||||
struct mlxsw_sp *mlxsw_sp_lower_get(struct net_device *dev);
|
||||
struct mlxsw_sp_port *mlxsw_sp_port_dev_lower_find(struct net_device *dev);
|
||||
struct mlxsw_sp_port *mlxsw_sp_port_lower_dev_hold(struct net_device *dev);
|
||||
void mlxsw_sp_port_dev_put(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
|
||||
static inline bool
|
||||
mlxsw_sp_port_is_pause_en(const struct mlxsw_sp_port *mlxsw_sp_port)
|
||||
{
|
||||
@ -278,6 +272,7 @@ enum mlxsw_sp_flood_type {
|
||||
MLXSW_SP_FLOOD_TYPE_MC,
|
||||
};
|
||||
|
||||
/* spectrum_buffers.c */
|
||||
int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp);
|
||||
void mlxsw_sp_buffers_fini(struct mlxsw_sp *mlxsw_sp);
|
||||
int mlxsw_sp_port_buffers_init(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
@ -315,12 +310,11 @@ int mlxsw_sp_sb_occ_tc_port_bind_get(struct mlxsw_core_port *mlxsw_core_port,
|
||||
u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells);
|
||||
u32 mlxsw_sp_bytes_cells(const struct mlxsw_sp *mlxsw_sp, u32 bytes);
|
||||
|
||||
/* spectrum_switchdev.c */
|
||||
int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp);
|
||||
void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp);
|
||||
void mlxsw_sp_port_switchdev_init(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
void mlxsw_sp_port_switchdev_fini(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
int mlxsw_sp_port_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid_begin,
|
||||
u16 vid_end, bool is_member, bool untagged);
|
||||
int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid,
|
||||
bool adding);
|
||||
void
|
||||
@ -332,6 +326,7 @@ void mlxsw_sp_port_bridge_leave(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct net_device *brport_dev,
|
||||
struct net_device *br_dev);
|
||||
|
||||
/* spectrum.c */
|
||||
int mlxsw_sp_port_ets_set(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
enum mlxsw_reg_qeec_hr hr, u8 index, u8 next_index,
|
||||
bool dwrr, u8 dwrr_weight);
|
||||
@ -352,24 +347,35 @@ int mlxsw_sp_port_pvid_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid);
|
||||
struct mlxsw_sp_port_vlan *
|
||||
mlxsw_sp_port_vlan_get(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid);
|
||||
void mlxsw_sp_port_vlan_put(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan);
|
||||
int mlxsw_sp_port_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid_begin,
|
||||
u16 vid_end, bool is_member, bool untagged);
|
||||
int mlxsw_sp_flow_counter_get(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned int counter_index, u64 *packets,
|
||||
u64 *bytes);
|
||||
int mlxsw_sp_flow_counter_alloc(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned int *p_counter_index);
|
||||
void mlxsw_sp_flow_counter_free(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned int counter_index);
|
||||
bool mlxsw_sp_port_dev_check(const struct net_device *dev);
|
||||
struct mlxsw_sp *mlxsw_sp_lower_get(struct net_device *dev);
|
||||
struct mlxsw_sp_port *mlxsw_sp_port_dev_lower_find(struct net_device *dev);
|
||||
struct mlxsw_sp_port *mlxsw_sp_port_lower_dev_hold(struct net_device *dev);
|
||||
void mlxsw_sp_port_dev_put(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
|
||||
/* spectrum_dcb.c */
|
||||
#ifdef CONFIG_MLXSW_SPECTRUM_DCB
|
||||
|
||||
int mlxsw_sp_port_dcb_init(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
void mlxsw_sp_port_dcb_fini(struct mlxsw_sp_port *mlxsw_sp_port);
|
||||
|
||||
#else
|
||||
|
||||
static inline int mlxsw_sp_port_dcb_init(struct mlxsw_sp_port *mlxsw_sp_port)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void mlxsw_sp_port_dcb_fini(struct mlxsw_sp_port *mlxsw_sp_port)
|
||||
{}
|
||||
|
||||
#endif
|
||||
|
||||
/* spectrum_router.c */
|
||||
int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp);
|
||||
void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp);
|
||||
int mlxsw_sp_router_netevent_event(struct notifier_block *unused,
|
||||
@ -383,12 +389,11 @@ void
|
||||
mlxsw_sp_port_vlan_router_leave(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan);
|
||||
void mlxsw_sp_rif_destroy(struct mlxsw_sp_rif *rif);
|
||||
|
||||
/* spectrum_kvdl.c */
|
||||
int mlxsw_sp_kvdl_alloc(struct mlxsw_sp *mlxsw_sp, unsigned int entry_count,
|
||||
u32 *p_entry_index);
|
||||
void mlxsw_sp_kvdl_free(struct mlxsw_sp *mlxsw_sp, int entry_index);
|
||||
|
||||
struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl);
|
||||
|
||||
struct mlxsw_sp_acl_rule_info {
|
||||
unsigned int priority;
|
||||
struct mlxsw_afk_element_values values;
|
||||
@ -429,6 +434,8 @@ struct mlxsw_sp_acl_ops {
|
||||
|
||||
struct mlxsw_sp_acl_ruleset;
|
||||
|
||||
/* spectrum_acl.c */
|
||||
struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl);
|
||||
struct mlxsw_sp_acl_ruleset *
|
||||
mlxsw_sp_acl_ruleset_get(struct mlxsw_sp *mlxsw_sp,
|
||||
struct net_device *dev, bool ingress,
|
||||
@ -492,22 +499,18 @@ struct mlxsw_sp_fid *mlxsw_sp_acl_dummy_fid(struct mlxsw_sp *mlxsw_sp);
|
||||
int mlxsw_sp_acl_init(struct mlxsw_sp *mlxsw_sp);
|
||||
void mlxsw_sp_acl_fini(struct mlxsw_sp *mlxsw_sp);
|
||||
|
||||
/* spectrum_acl_tcam.c */
|
||||
extern const struct mlxsw_sp_acl_ops mlxsw_sp_acl_tcam_ops;
|
||||
|
||||
/* spectrum_flower.c */
|
||||
int mlxsw_sp_flower_replace(struct mlxsw_sp_port *mlxsw_sp_port, bool ingress,
|
||||
__be16 protocol, struct tc_cls_flower_offload *f);
|
||||
void mlxsw_sp_flower_destroy(struct mlxsw_sp_port *mlxsw_sp_port, bool ingress,
|
||||
struct tc_cls_flower_offload *f);
|
||||
int mlxsw_sp_flower_stats(struct mlxsw_sp_port *mlxsw_sp_port, bool ingress,
|
||||
struct tc_cls_flower_offload *f);
|
||||
int mlxsw_sp_flow_counter_get(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned int counter_index, u64 *packets,
|
||||
u64 *bytes);
|
||||
int mlxsw_sp_flow_counter_alloc(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned int *p_counter_index);
|
||||
void mlxsw_sp_flow_counter_free(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned int counter_index);
|
||||
|
||||
/* spectrum_fid.c */
|
||||
int mlxsw_sp_fid_flood_set(struct mlxsw_sp_fid *fid,
|
||||
enum mlxsw_sp_flood_type packet_type, u8 local_port,
|
||||
bool member);
|
||||
|
@ -373,19 +373,19 @@ static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021q_flood_tables[] = {
|
||||
{
|
||||
.packet_type = MLXSW_SP_FLOOD_TYPE_UC,
|
||||
.bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID,
|
||||
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFEST,
|
||||
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET,
|
||||
.table_index = 0,
|
||||
},
|
||||
{
|
||||
.packet_type = MLXSW_SP_FLOOD_TYPE_MC,
|
||||
.bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID,
|
||||
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFEST,
|
||||
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET,
|
||||
.table_index = 1,
|
||||
},
|
||||
{
|
||||
.packet_type = MLXSW_SP_FLOOD_TYPE_BC,
|
||||
.bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID,
|
||||
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFEST,
|
||||
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET,
|
||||
.table_index = 2,
|
||||
},
|
||||
};
|
||||
|
@ -2979,16 +2979,18 @@ mlxsw_sp_dev_rif_type(const struct mlxsw_sp *mlxsw_sp,
|
||||
return mlxsw_sp_fid_type_rif_type(mlxsw_sp, type);
|
||||
}
|
||||
|
||||
#define MLXSW_SP_INVALID_INDEX_RIF 0xffff
|
||||
static int mlxsw_sp_avail_rif_get(struct mlxsw_sp *mlxsw_sp)
|
||||
static int mlxsw_sp_rif_index_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_rif_index)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++)
|
||||
if (!mlxsw_sp->router->rifs[i])
|
||||
return i;
|
||||
for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++) {
|
||||
if (!mlxsw_sp->router->rifs[i]) {
|
||||
*p_rif_index = i;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return MLXSW_SP_INVALID_INDEX_RIF;
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
static struct mlxsw_sp_rif *mlxsw_sp_rif_alloc(size_t rif_size, u16 rif_index,
|
||||
@ -3048,11 +3050,9 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
|
||||
if (IS_ERR(vr))
|
||||
return ERR_CAST(vr);
|
||||
|
||||
rif_index = mlxsw_sp_avail_rif_get(mlxsw_sp);
|
||||
if (rif_index == MLXSW_SP_INVALID_INDEX_RIF) {
|
||||
err = -ERANGE;
|
||||
goto err_avail_rif_get;
|
||||
}
|
||||
err = mlxsw_sp_rif_index_alloc(mlxsw_sp, &rif_index);
|
||||
if (err)
|
||||
goto err_rif_index_alloc;
|
||||
|
||||
rif = mlxsw_sp_rif_alloc(ops->rif_size, rif_index, vr->id, params->dev);
|
||||
if (!rif) {
|
||||
@ -3095,7 +3095,7 @@ err_configure:
|
||||
err_fid_get:
|
||||
kfree(rif);
|
||||
err_rif_alloc:
|
||||
err_avail_rif_get:
|
||||
err_rif_index_alloc:
|
||||
mlxsw_sp_vr_put(vr);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user