diff options
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlxsw/reg.h')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/reg.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index bb77e2207804..ffe4c0305733 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h | |||
@@ -873,6 +873,62 @@ static inline void mlxsw_reg_spvm_pack(char *payload, u8 local_port, | |||
873 | } | 873 | } |
874 | } | 874 | } |
875 | 875 | ||
876 | /* SPAFT - Switch Port Acceptable Frame Types | ||
877 | * ------------------------------------------ | ||
878 | * The Switch Port Acceptable Frame Types register configures the frame | ||
879 | * admittance of the port. | ||
880 | */ | ||
881 | #define MLXSW_REG_SPAFT_ID 0x2010 | ||
882 | #define MLXSW_REG_SPAFT_LEN 0x08 | ||
883 | |||
884 | static const struct mlxsw_reg_info mlxsw_reg_spaft = { | ||
885 | .id = MLXSW_REG_SPAFT_ID, | ||
886 | .len = MLXSW_REG_SPAFT_LEN, | ||
887 | }; | ||
888 | |||
889 | /* reg_spaft_local_port | ||
890 | * Local port number. | ||
891 | * Access: Index | ||
892 | * | ||
893 | * Note: CPU port is not supported (all tag types are allowed). | ||
894 | */ | ||
895 | MLXSW_ITEM32(reg, spaft, local_port, 0x00, 16, 8); | ||
896 | |||
897 | /* reg_spaft_sub_port | ||
898 | * Virtual port within the physical port. | ||
899 | * Should be set to 0 when virtual ports are not enabled on the port. | ||
900 | * Access: RW | ||
901 | */ | ||
902 | MLXSW_ITEM32(reg, spaft, sub_port, 0x00, 8, 8); | ||
903 | |||
904 | /* reg_spaft_allow_untagged | ||
905 | * When set, untagged frames on the ingress are allowed (default). | ||
906 | * Access: RW | ||
907 | */ | ||
908 | MLXSW_ITEM32(reg, spaft, allow_untagged, 0x04, 31, 1); | ||
909 | |||
910 | /* reg_spaft_allow_prio_tagged | ||
911 | * When set, priority tagged frames on the ingress are allowed (default). | ||
912 | * Access: RW | ||
913 | */ | ||
914 | MLXSW_ITEM32(reg, spaft, allow_prio_tagged, 0x04, 30, 1); | ||
915 | |||
916 | /* reg_spaft_allow_tagged | ||
917 | * When set, tagged frames on the ingress are allowed (default). | ||
918 | * Access: RW | ||
919 | */ | ||
920 | MLXSW_ITEM32(reg, spaft, allow_tagged, 0x04, 29, 1); | ||
921 | |||
922 | static inline void mlxsw_reg_spaft_pack(char *payload, u8 local_port, | ||
923 | bool allow_untagged) | ||
924 | { | ||
925 | MLXSW_REG_ZERO(spaft, payload); | ||
926 | mlxsw_reg_spaft_local_port_set(payload, local_port); | ||
927 | mlxsw_reg_spaft_allow_untagged_set(payload, allow_untagged); | ||
928 | mlxsw_reg_spaft_allow_prio_tagged_set(payload, true); | ||
929 | mlxsw_reg_spaft_allow_tagged_set(payload, true); | ||
930 | } | ||
931 | |||
876 | /* SFGC - Switch Flooding Group Configuration | 932 | /* SFGC - Switch Flooding Group Configuration |
877 | * ------------------------------------------ | 933 | * ------------------------------------------ |
878 | * The following register controls the association of flooding tables and MIDs | 934 | * The following register controls the association of flooding tables and MIDs |
@@ -3203,6 +3259,8 @@ static inline const char *mlxsw_reg_id_str(u16 reg_id) | |||
3203 | return "SPVID"; | 3259 | return "SPVID"; |
3204 | case MLXSW_REG_SPVM_ID: | 3260 | case MLXSW_REG_SPVM_ID: |
3205 | return "SPVM"; | 3261 | return "SPVM"; |
3262 | case MLXSW_REG_SPAFT_ID: | ||
3263 | return "SPAFT"; | ||
3206 | case MLXSW_REG_SFGC_ID: | 3264 | case MLXSW_REG_SFGC_ID: |
3207 | return "SFGC"; | 3265 | return "SFGC"; |
3208 | case MLXSW_REG_SFTR_ID: | 3266 | case MLXSW_REG_SFTR_ID: |