Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: dsa: mv88e6xxx: add port priority override op

Add a new operation to disable the DA, SA and VTU priority override.

Setting such limit is not likely to be used soon, so provide a
port_disable_pri_override operation directly. This can be changed later
for port_set_pri_override when we'll need it.

Also remove the now obsolete mv88e6xxx_6320_family helper.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Vivien Didelot and committed by
David S. Miller
9dbfb4e1 c8c94891

+35 -13
+26 -13
drivers/net/dsa/mv88e6xxx/chip.c
··· 687 687 return chip->info->family == MV88E6XXX_FAMILY_6165; 688 688 } 689 689 690 - static bool mv88e6xxx_6320_family(struct mv88e6xxx_chip *chip) 691 - { 692 - return chip->info->family == MV88E6XXX_FAMILY_6320; 693 - } 694 - 695 690 static bool mv88e6xxx_6341_family(struct mv88e6xxx_chip *chip) 696 691 { 697 692 return chip->info->family == MV88E6XXX_FAMILY_6341; ··· 2402 2407 return err; 2403 2408 } 2404 2409 2405 - if (mv88e6xxx_6352_family(chip) || mv88e6xxx_6351_family(chip) || 2406 - mv88e6xxx_6165_family(chip) || mv88e6xxx_6097_family(chip) || 2407 - mv88e6xxx_6320_family(chip) || mv88e6xxx_6341_family(chip)) { 2408 - /* Priority Override: disable DA, SA and VTU priority 2409 - * override. 2410 - */ 2411 - err = mv88e6xxx_port_write(chip, port, PORT_PRI_OVERRIDE, 2412 - 0x0000); 2410 + if (chip->info->ops->port_disable_pri_override) { 2411 + err = chip->info->ops->port_disable_pri_override(chip, port); 2413 2412 if (err) 2414 2413 return err; 2415 2414 } ··· 2829 2840 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 2830 2841 .port_pause_config = mv88e6097_port_pause_config, 2831 2842 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 2843 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 2832 2844 .stats_snapshot = mv88e6xxx_g1_stats_snapshot, 2833 2845 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 2834 2846 .stats_get_strings = mv88e6095_stats_get_strings, ··· 2880 2890 .port_egress_rate_limiting = mv88e6095_port_egress_rate_limiting, 2881 2891 .port_pause_config = mv88e6097_port_pause_config, 2882 2892 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 2893 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 2883 2894 .stats_snapshot = mv88e6xxx_g1_stats_snapshot, 2884 2895 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 2885 2896 .stats_get_strings = mv88e6095_stats_get_strings, ··· 2903 2912 .port_set_frame_mode = mv88e6085_port_set_frame_mode, 2904 2913 .port_set_egress_floods = mv88e6352_port_set_egress_floods, 2905 2914 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 2915 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 2906 2916 .stats_snapshot = mv88e6xxx_g1_stats_snapshot, 2907 2917 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 2908 2918 .stats_get_strings = mv88e6095_stats_get_strings, ··· 2960 2968 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 2961 2969 .port_pause_config = mv88e6097_port_pause_config, 2962 2970 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 2971 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 2963 2972 .stats_snapshot = mv88e6xxx_g1_stats_snapshot, 2964 2973 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 2965 2974 .stats_get_strings = mv88e6095_stats_get_strings, ··· 2981 2988 .port_set_duplex = mv88e6xxx_port_set_duplex, 2982 2989 .port_set_speed = mv88e6185_port_set_speed, 2983 2990 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 2991 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 2984 2992 .stats_snapshot = mv88e6xxx_g1_stats_snapshot, 2985 2993 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 2986 2994 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3010 3016 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3011 3017 .port_pause_config = mv88e6097_port_pause_config, 3012 3018 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3019 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3013 3020 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3014 3021 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3015 3022 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3041 3046 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3042 3047 .port_pause_config = mv88e6097_port_pause_config, 3043 3048 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3049 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3044 3050 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3045 3051 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3046 3052 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3070 3074 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3071 3075 .port_pause_config = mv88e6097_port_pause_config, 3072 3076 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3077 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3073 3078 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3074 3079 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3075 3080 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3101 3104 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3102 3105 .port_pause_config = mv88e6097_port_pause_config, 3103 3106 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3107 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3104 3108 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3105 3109 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3106 3110 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3155 3157 .port_set_ether_type = mv88e6351_port_set_ether_type, 3156 3158 .port_pause_config = mv88e6390_port_pause_config, 3157 3159 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3160 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3158 3161 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3159 3162 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3160 3163 .stats_get_sset_count = mv88e6320_stats_get_sset_count, ··· 3185 3186 .port_set_ether_type = mv88e6351_port_set_ether_type, 3186 3187 .port_pause_config = mv88e6390_port_pause_config, 3187 3188 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3189 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3188 3190 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3189 3191 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3190 3192 .stats_get_sset_count = mv88e6320_stats_get_sset_count, ··· 3215 3215 .port_set_ether_type = mv88e6351_port_set_ether_type, 3216 3216 .port_pause_config = mv88e6390_port_pause_config, 3217 3217 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3218 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3218 3219 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3219 3220 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3220 3221 .stats_get_sset_count = mv88e6320_stats_get_sset_count, ··· 3247 3246 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3248 3247 .port_pause_config = mv88e6097_port_pause_config, 3249 3248 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3249 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3250 3250 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3251 3251 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3252 3252 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3277 3275 .port_pause_config = mv88e6390_port_pause_config, 3278 3276 .port_set_cmode = mv88e6390x_port_set_cmode, 3279 3277 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3278 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3280 3279 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3281 3280 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3282 3281 .stats_get_sset_count = mv88e6320_stats_get_sset_count, ··· 3308 3305 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3309 3306 .port_pause_config = mv88e6097_port_pause_config, 3310 3307 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3308 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3311 3309 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3312 3310 .stats_get_sset_count = mv88e6320_stats_get_sset_count, 3313 3311 .stats_get_strings = mv88e6320_stats_get_strings, ··· 3337 3333 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3338 3334 .port_pause_config = mv88e6097_port_pause_config, 3339 3335 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3336 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3340 3337 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3341 3338 .stats_get_sset_count = mv88e6320_stats_get_sset_count, 3342 3339 .stats_get_strings = mv88e6320_stats_get_strings, ··· 3364 3359 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3365 3360 .port_pause_config = mv88e6097_port_pause_config, 3366 3361 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3362 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3367 3363 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3368 3364 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3369 3365 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3393 3387 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3394 3388 .port_pause_config = mv88e6097_port_pause_config, 3395 3389 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3390 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3396 3391 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3397 3392 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3398 3393 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3424 3417 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3425 3418 .port_pause_config = mv88e6097_port_pause_config, 3426 3419 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3420 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3427 3421 .stats_snapshot = mv88e6320_g1_stats_snapshot, 3428 3422 .stats_get_sset_count = mv88e6095_stats_get_sset_count, 3429 3423 .stats_get_strings = mv88e6095_stats_get_strings, ··· 3455 3447 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3456 3448 .port_pause_config = mv88e6097_port_pause_config, 3457 3449 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3450 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3458 3451 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3459 3452 .stats_get_sset_count = mv88e6320_stats_get_sset_count, 3460 3453 .stats_get_strings = mv88e6320_stats_get_strings, ··· 3486 3477 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3487 3478 .port_pause_config = mv88e6097_port_pause_config, 3488 3479 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3480 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3489 3481 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3490 3482 .stats_get_sset_count = mv88e6320_stats_get_sset_count, 3491 3483 .stats_get_strings = mv88e6320_stats_get_strings, ··· 3518 3508 .port_pause_config = mv88e6390_port_pause_config, 3519 3509 .port_set_cmode = mv88e6390x_port_set_cmode, 3520 3510 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3511 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3521 3512 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3522 3513 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3523 3514 .stats_get_sset_count = mv88e6320_stats_get_sset_count, ··· 3550 3539 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3551 3540 .port_pause_config = mv88e6390_port_pause_config, 3552 3541 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3542 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3553 3543 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3554 3544 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3555 3545 .stats_get_sset_count = mv88e6320_stats_get_sset_count, ··· 3580 3568 .port_set_ether_type = mv88e6351_port_set_ether_type, 3581 3569 .port_pause_config = mv88e6390_port_pause_config, 3582 3570 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3571 + .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3583 3572 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3584 3573 .stats_set_histogram = mv88e6390_g1_stats_set_histogram, 3585 3574 .stats_get_sset_count = mv88e6320_stats_get_sset_count,
+1
drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
··· 872 872 int (*port_egress_rate_limiting)(struct mv88e6xxx_chip *chip, int port); 873 873 int (*port_pause_config)(struct mv88e6xxx_chip *chip, int port); 874 874 int (*port_disable_learn_limit)(struct mv88e6xxx_chip *chip, int port); 875 + int (*port_disable_pri_override)(struct mv88e6xxx_chip *chip, int port); 875 876 876 877 /* CMODE control what PHY mode the MAC will use, eg. SGMII, RGMII, etc. 877 878 * Some chips allow this to be configured on specific ports.
+7
drivers/net/dsa/mv88e6xxx/port.c
··· 812 812 return mv88e6xxx_port_write(chip, port, PORT_ATU_CONTROL, 0); 813 813 } 814 814 815 + /* Offset 0x0D: (Priority) Override Register */ 816 + 817 + int mv88e6xxx_port_disable_pri_override(struct mv88e6xxx_chip *chip, int port) 818 + { 819 + return mv88e6xxx_port_write(chip, port, PORT_PRI_OVERRIDE, 0); 820 + } 821 + 815 822 /* Offset 0x0f: Port Ether type */ 816 823 817 824 int mv88e6351_port_set_ether_type(struct mv88e6xxx_chip *chip, int port,
+1
drivers/net/dsa/mv88e6xxx/port.h
··· 77 77 int upstream_port); 78 78 79 79 int mv88e6xxx_port_disable_learn_limit(struct mv88e6xxx_chip *chip, int port); 80 + int mv88e6xxx_port_disable_pri_override(struct mv88e6xxx_chip *chip, int port); 80 81 81 82 #endif /* _MV88E6XXX_PORT_H */