@@ -2381,6 +2381,7 @@ static int mv88e6xxx_stats_setup(struct mv88e6xxx_chip *chip)
2381
2381
static int mv88e6xxx_setup (struct dsa_switch * ds )
2382
2382
{
2383
2383
struct mv88e6xxx_chip * chip = ds -> priv ;
2384
+ u8 cmode ;
2384
2385
int err ;
2385
2386
int i ;
2386
2387
@@ -2389,6 +2390,17 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)
2389
2390
2390
2391
mutex_lock (& chip -> reg_lock );
2391
2392
2393
+ /* Cache the cmode of each port. */
2394
+ for (i = 0 ; i < mv88e6xxx_num_ports (chip ); i ++ ) {
2395
+ if (chip -> info -> ops -> port_get_cmode ) {
2396
+ err = chip -> info -> ops -> port_get_cmode (chip , i , & cmode );
2397
+ if (err )
2398
+ return err ;
2399
+
2400
+ chip -> ports [i ].cmode = cmode ;
2401
+ }
2402
+ }
2403
+
2392
2404
/* Setup Switch Port Registers */
2393
2405
for (i = 0 ; i < mv88e6xxx_num_ports (chip ); i ++ ) {
2394
2406
if (dsa_is_unused_port (ds , i ))
@@ -2697,6 +2709,7 @@ static const struct mv88e6xxx_ops mv88e6085_ops = {
2697
2709
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2698
2710
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2699
2711
.port_link_state = mv88e6352_port_link_state ,
2712
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2700
2713
.stats_snapshot = mv88e6xxx_g1_stats_snapshot ,
2701
2714
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2702
2715
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2730,6 +2743,7 @@ static const struct mv88e6xxx_ops mv88e6095_ops = {
2730
2743
.port_set_egress_floods = mv88e6185_port_set_egress_floods ,
2731
2744
.port_set_upstream_port = mv88e6095_port_set_upstream_port ,
2732
2745
.port_link_state = mv88e6185_port_link_state ,
2746
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2733
2747
.stats_snapshot = mv88e6xxx_g1_stats_snapshot ,
2734
2748
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2735
2749
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2765,6 +2779,7 @@ static const struct mv88e6xxx_ops mv88e6097_ops = {
2765
2779
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2766
2780
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2767
2781
.port_link_state = mv88e6352_port_link_state ,
2782
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2768
2783
.stats_snapshot = mv88e6xxx_g1_stats_snapshot ,
2769
2784
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2770
2785
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2798,6 +2813,7 @@ static const struct mv88e6xxx_ops mv88e6123_ops = {
2798
2813
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2799
2814
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2800
2815
.port_link_state = mv88e6352_port_link_state ,
2816
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2801
2817
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
2802
2818
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2803
2819
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2834,6 +2850,7 @@ static const struct mv88e6xxx_ops mv88e6131_ops = {
2834
2850
.port_pause_limit = mv88e6097_port_pause_limit ,
2835
2851
.port_set_pause = mv88e6185_port_set_pause ,
2836
2852
.port_link_state = mv88e6352_port_link_state ,
2853
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2837
2854
.stats_snapshot = mv88e6xxx_g1_stats_snapshot ,
2838
2855
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2839
2856
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2876,6 +2893,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
2876
2893
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2877
2894
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2878
2895
.port_link_state = mv88e6352_port_link_state ,
2896
+ .port_get_cmode = mv88e6352_port_get_cmode ,
2879
2897
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
2880
2898
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2881
2899
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -2915,6 +2933,7 @@ static const struct mv88e6xxx_ops mv88e6161_ops = {
2915
2933
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2916
2934
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2917
2935
.port_link_state = mv88e6352_port_link_state ,
2936
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2918
2937
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
2919
2938
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2920
2939
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2947,6 +2966,7 @@ static const struct mv88e6xxx_ops mv88e6165_ops = {
2947
2966
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2948
2967
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2949
2968
.port_link_state = mv88e6352_port_link_state ,
2969
+ .port_get_cmode = mv88e6185_port_get_cmode ,
2950
2970
.stats_snapshot = mv88e6xxx_g1_stats_snapshot ,
2951
2971
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2952
2972
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -2987,6 +3007,7 @@ static const struct mv88e6xxx_ops mv88e6171_ops = {
2987
3007
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
2988
3008
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
2989
3009
.port_link_state = mv88e6352_port_link_state ,
3010
+ .port_get_cmode = mv88e6352_port_get_cmode ,
2990
3011
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
2991
3012
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
2992
3013
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3027,6 +3048,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
3027
3048
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3028
3049
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3029
3050
.port_link_state = mv88e6352_port_link_state ,
3051
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3030
3052
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3031
3053
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3032
3054
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3068,6 +3090,7 @@ static const struct mv88e6xxx_ops mv88e6175_ops = {
3068
3090
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3069
3091
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3070
3092
.port_link_state = mv88e6352_port_link_state ,
3093
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3071
3094
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3072
3095
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3073
3096
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3108,6 +3131,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
3108
3131
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3109
3132
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3110
3133
.port_link_state = mv88e6352_port_link_state ,
3134
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3111
3135
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3112
3136
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3113
3137
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3143,6 +3167,7 @@ static const struct mv88e6xxx_ops mv88e6185_ops = {
3143
3167
.port_set_upstream_port = mv88e6095_port_set_upstream_port ,
3144
3168
.port_set_pause = mv88e6185_port_set_pause ,
3145
3169
.port_link_state = mv88e6185_port_link_state ,
3170
+ .port_get_cmode = mv88e6185_port_get_cmode ,
3146
3171
.stats_snapshot = mv88e6xxx_g1_stats_snapshot ,
3147
3172
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3148
3173
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3181,6 +3206,7 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
3181
3206
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3182
3207
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3183
3208
.port_link_state = mv88e6352_port_link_state ,
3209
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3184
3210
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3185
3211
.stats_set_histogram = mv88e6390_g1_stats_set_histogram ,
3186
3212
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3220,6 +3246,7 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
3220
3246
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3221
3247
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3222
3248
.port_link_state = mv88e6352_port_link_state ,
3249
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3223
3250
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3224
3251
.stats_set_histogram = mv88e6390_g1_stats_set_histogram ,
3225
3252
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3259,6 +3286,7 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
3259
3286
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3260
3287
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3261
3288
.port_link_state = mv88e6352_port_link_state ,
3289
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3262
3290
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3263
3291
.stats_set_histogram = mv88e6390_g1_stats_set_histogram ,
3264
3292
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3303,6 +3331,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
3303
3331
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3304
3332
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3305
3333
.port_link_state = mv88e6352_port_link_state ,
3334
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3306
3335
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3307
3336
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3308
3337
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3345,6 +3374,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
3345
3374
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3346
3375
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3347
3376
.port_link_state = mv88e6352_port_link_state ,
3377
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3348
3378
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3349
3379
.stats_set_histogram = mv88e6390_g1_stats_set_histogram ,
3350
3380
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3389,6 +3419,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
3389
3419
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3390
3420
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3391
3421
.port_link_state = mv88e6352_port_link_state ,
3422
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3392
3423
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3393
3424
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3394
3425
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3430,6 +3461,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
3430
3461
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3431
3462
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3432
3463
.port_link_state = mv88e6352_port_link_state ,
3464
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3433
3465
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3434
3466
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3435
3467
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3470,6 +3502,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
3470
3502
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3471
3503
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3472
3504
.port_link_state = mv88e6352_port_link_state ,
3505
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3473
3506
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3474
3507
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3475
3508
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3512,6 +3545,7 @@ static const struct mv88e6xxx_ops mv88e6350_ops = {
3512
3545
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3513
3546
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3514
3547
.port_link_state = mv88e6352_port_link_state ,
3548
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3515
3549
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3516
3550
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3517
3551
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3550,6 +3584,7 @@ static const struct mv88e6xxx_ops mv88e6351_ops = {
3550
3584
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3551
3585
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3552
3586
.port_link_state = mv88e6352_port_link_state ,
3587
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3553
3588
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3554
3589
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3555
3590
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3592,6 +3627,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
3592
3627
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3593
3628
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3594
3629
.port_link_state = mv88e6352_port_link_state ,
3630
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3595
3631
.stats_snapshot = mv88e6320_g1_stats_snapshot ,
3596
3632
.stats_set_histogram = mv88e6095_g1_stats_set_histogram ,
3597
3633
.stats_get_sset_count = mv88e6095_stats_get_sset_count ,
@@ -3639,6 +3675,7 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
3639
3675
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3640
3676
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3641
3677
.port_link_state = mv88e6352_port_link_state ,
3678
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3642
3679
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3643
3680
.stats_set_histogram = mv88e6390_g1_stats_set_histogram ,
3644
3681
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
@@ -3683,6 +3720,7 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
3683
3720
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit ,
3684
3721
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override ,
3685
3722
.port_link_state = mv88e6352_port_link_state ,
3723
+ .port_get_cmode = mv88e6352_port_get_cmode ,
3686
3724
.stats_snapshot = mv88e6390_g1_stats_snapshot ,
3687
3725
.stats_set_histogram = mv88e6390_g1_stats_set_histogram ,
3688
3726
.stats_get_sset_count = mv88e6320_stats_get_sset_count ,
0 commit comments