aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2015-10-15 11:43:26 -0400
committerDavid S. Miller <davem@davemloft.net>2015-10-16 02:27:55 -0400
commitebb7963f9b14bbaa07b6074579225d6338318ecb (patch)
tree303e0859784d6766da2700643e0bb8981103173e
parentfa6ad058bc77b6ae69bd4512b538245ee5db39eb (diff)
mlxsw: Introduce mlxsw_reg_spms_vid_pack helper and use it
Introduce separate helper for packing SPMS VIDs, as it can be used for multiple VIDs and not only for one as previous SPMS pack function provided. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/reg.h8
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/switchx2.c3
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h
index 6fca13a65a75..7595cf1ce384 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/reg.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h
@@ -192,11 +192,15 @@ enum mlxsw_reg_spms_state {
192 */ 192 */
193MLXSW_ITEM_BIT_ARRAY(reg, spms, state, 0x04, 0x400, 2); 193MLXSW_ITEM_BIT_ARRAY(reg, spms, state, 0x04, 0x400, 2);
194 194
195static inline void mlxsw_reg_spms_pack(char *payload, u8 local_port, u16 vid, 195static inline void mlxsw_reg_spms_pack(char *payload, u8 local_port)
196 enum mlxsw_reg_spms_state state)
197{ 196{
198 MLXSW_REG_ZERO(spms, payload); 197 MLXSW_REG_ZERO(spms, payload);
199 mlxsw_reg_spms_local_port_set(payload, local_port); 198 mlxsw_reg_spms_local_port_set(payload, local_port);
199}
200
201static inline void mlxsw_reg_spms_vid_pack(char *payload, u16 vid,
202 enum mlxsw_reg_spms_state state)
203{
200 mlxsw_reg_spms_state_set(payload, vid, state); 204 mlxsw_reg_spms_state_set(payload, vid, state);
201} 205}
202 206
diff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
index 698b182c77a3..7d5c851a7b9b 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
@@ -923,7 +923,8 @@ static int mlxsw_sx_port_stp_state_set(struct mlxsw_sx_port *mlxsw_sx_port,
923 spms_pl = kmalloc(MLXSW_REG_SPMS_LEN, GFP_KERNEL); 923 spms_pl = kmalloc(MLXSW_REG_SPMS_LEN, GFP_KERNEL);
924 if (!spms_pl) 924 if (!spms_pl)
925 return -ENOMEM; 925 return -ENOMEM;
926 mlxsw_reg_spms_pack(spms_pl, mlxsw_sx_port->local_port, vid, state); 926 mlxsw_reg_spms_pack(spms_pl, mlxsw_sx_port->local_port);
927 mlxsw_reg_spms_vid_pack(spms_pl, vid, state);
927 err = mlxsw_reg_write(mlxsw_sx->core, MLXSW_REG(spms), spms_pl); 928 err = mlxsw_reg_write(mlxsw_sx->core, MLXSW_REG(spms), spms_pl);
928 kfree(spms_pl); 929 kfree(spms_pl);
929 return err; 930 return err;