Skip to content

Commit 0898432

Browse files
viviendavem330
authored andcommitted
net: dsa: mv88e6xxx: rework pause limit operation
All Marvell chips supporting Pause frames limiting use 1-byte value for input and output. Old chips have both bytes adjacent in a 16-bit register. New ones have an indirect table using 8-bit data. The mv88e6xxx library functions (such as in port.c) must not contain driver logic, but only generic helpers. This patch changes the port_pause_config operation for port_pause_limit taking two u8 arguments for input and output limits. There is no functional changes. Reviewed-by: Andrew Lunn <[email protected]> Signed-off-by: Vivien Didelot <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent fa8d117 commit 0898432

File tree

4 files changed

+37
-32
lines changed

4 files changed

+37
-32
lines changed

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1901,8 +1901,8 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
19011901
if (err)
19021902
return err;
19031903

1904-
if (chip->info->ops->port_pause_config) {
1905-
err = chip->info->ops->port_pause_config(chip, port);
1904+
if (chip->info->ops->port_pause_limit) {
1905+
err = chip->info->ops->port_pause_limit(chip, port, 0, 0);
19061906
if (err)
19071907
return err;
19081908
}
@@ -2362,7 +2362,7 @@ static const struct mv88e6xxx_ops mv88e6085_ops = {
23622362
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
23632363
.port_set_ether_type = mv88e6351_port_set_ether_type,
23642364
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2365-
.port_pause_config = mv88e6097_port_pause_config,
2365+
.port_pause_limit = mv88e6097_port_pause_limit,
23662366
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
23672367
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
23682368
.stats_snapshot = mv88e6xxx_g1_stats_snapshot,
@@ -2417,7 +2417,7 @@ static const struct mv88e6xxx_ops mv88e6097_ops = {
24172417
.port_set_ether_type = mv88e6351_port_set_ether_type,
24182418
.port_jumbo_config = mv88e6165_port_jumbo_config,
24192419
.port_egress_rate_limiting = mv88e6095_port_egress_rate_limiting,
2420-
.port_pause_config = mv88e6097_port_pause_config,
2420+
.port_pause_limit = mv88e6097_port_pause_limit,
24212421
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
24222422
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
24232423
.stats_snapshot = mv88e6xxx_g1_stats_snapshot,
@@ -2473,7 +2473,7 @@ static const struct mv88e6xxx_ops mv88e6131_ops = {
24732473
.port_set_upstream_port = mv88e6095_port_set_upstream_port,
24742474
.port_jumbo_config = mv88e6165_port_jumbo_config,
24752475
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2476-
.port_pause_config = mv88e6097_port_pause_config,
2476+
.port_pause_limit = mv88e6097_port_pause_limit,
24772477
.stats_snapshot = mv88e6xxx_g1_stats_snapshot,
24782478
.stats_get_sset_count = mv88e6095_stats_get_sset_count,
24792479
.stats_get_strings = mv88e6095_stats_get_strings,
@@ -2506,7 +2506,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
25062506
.port_set_ether_type = mv88e6351_port_set_ether_type,
25072507
.port_jumbo_config = mv88e6165_port_jumbo_config,
25082508
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2509-
.port_pause_config = mv88e6097_port_pause_config,
2509+
.port_pause_limit = mv88e6097_port_pause_limit,
25102510
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
25112511
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
25122512
.stats_snapshot = mv88e6390_g1_stats_snapshot,
@@ -2536,7 +2536,7 @@ static const struct mv88e6xxx_ops mv88e6161_ops = {
25362536
.port_set_ether_type = mv88e6351_port_set_ether_type,
25372537
.port_jumbo_config = mv88e6165_port_jumbo_config,
25382538
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2539-
.port_pause_config = mv88e6097_port_pause_config,
2539+
.port_pause_limit = mv88e6097_port_pause_limit,
25402540
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
25412541
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
25422542
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2590,7 +2590,7 @@ static const struct mv88e6xxx_ops mv88e6171_ops = {
25902590
.port_set_ether_type = mv88e6351_port_set_ether_type,
25912591
.port_jumbo_config = mv88e6165_port_jumbo_config,
25922592
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2593-
.port_pause_config = mv88e6097_port_pause_config,
2593+
.port_pause_limit = mv88e6097_port_pause_limit,
25942594
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
25952595
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
25962596
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2623,7 +2623,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
26232623
.port_set_ether_type = mv88e6351_port_set_ether_type,
26242624
.port_jumbo_config = mv88e6165_port_jumbo_config,
26252625
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2626-
.port_pause_config = mv88e6097_port_pause_config,
2626+
.port_pause_limit = mv88e6097_port_pause_limit,
26272627
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
26282628
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
26292629
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2655,7 +2655,7 @@ static const struct mv88e6xxx_ops mv88e6175_ops = {
26552655
.port_set_ether_type = mv88e6351_port_set_ether_type,
26562656
.port_jumbo_config = mv88e6165_port_jumbo_config,
26572657
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2658-
.port_pause_config = mv88e6097_port_pause_config,
2658+
.port_pause_limit = mv88e6097_port_pause_limit,
26592659
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
26602660
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
26612661
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2688,7 +2688,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
26882688
.port_set_ether_type = mv88e6351_port_set_ether_type,
26892689
.port_jumbo_config = mv88e6165_port_jumbo_config,
26902690
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2691-
.port_pause_config = mv88e6097_port_pause_config,
2691+
.port_pause_limit = mv88e6097_port_pause_limit,
26922692
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
26932693
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
26942694
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2747,7 +2747,7 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
27472747
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
27482748
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
27492749
.port_set_ether_type = mv88e6351_port_set_ether_type,
2750-
.port_pause_config = mv88e6390_port_pause_config,
2750+
.port_pause_limit = mv88e6390_port_pause_limit,
27512751
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
27522752
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
27532753
.stats_snapshot = mv88e6390_g1_stats_snapshot,
@@ -2780,7 +2780,7 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
27802780
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
27812781
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
27822782
.port_set_ether_type = mv88e6351_port_set_ether_type,
2783-
.port_pause_config = mv88e6390_port_pause_config,
2783+
.port_pause_limit = mv88e6390_port_pause_limit,
27842784
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
27852785
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
27862786
.stats_snapshot = mv88e6390_g1_stats_snapshot,
@@ -2813,7 +2813,7 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
28132813
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
28142814
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
28152815
.port_set_ether_type = mv88e6351_port_set_ether_type,
2816-
.port_pause_config = mv88e6390_port_pause_config,
2816+
.port_pause_limit = mv88e6390_port_pause_limit,
28172817
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
28182818
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
28192819
.stats_snapshot = mv88e6390_g1_stats_snapshot,
@@ -2848,7 +2848,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
28482848
.port_set_ether_type = mv88e6351_port_set_ether_type,
28492849
.port_jumbo_config = mv88e6165_port_jumbo_config,
28502850
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2851-
.port_pause_config = mv88e6097_port_pause_config,
2851+
.port_pause_limit = mv88e6097_port_pause_limit,
28522852
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
28532853
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
28542854
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2880,7 +2880,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
28802880
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
28812881
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
28822882
.port_set_ether_type = mv88e6351_port_set_ether_type,
2883-
.port_pause_config = mv88e6390_port_pause_config,
2883+
.port_pause_limit = mv88e6390_port_pause_limit,
28842884
.port_set_cmode = mv88e6390x_port_set_cmode,
28852885
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
28862886
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
@@ -2915,7 +2915,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
29152915
.port_set_ether_type = mv88e6351_port_set_ether_type,
29162916
.port_jumbo_config = mv88e6165_port_jumbo_config,
29172917
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2918-
.port_pause_config = mv88e6097_port_pause_config,
2918+
.port_pause_limit = mv88e6097_port_pause_limit,
29192919
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
29202920
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
29212921
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2946,7 +2946,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
29462946
.port_set_ether_type = mv88e6351_port_set_ether_type,
29472947
.port_jumbo_config = mv88e6165_port_jumbo_config,
29482948
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2949-
.port_pause_config = mv88e6097_port_pause_config,
2949+
.port_pause_limit = mv88e6097_port_pause_limit,
29502950
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
29512951
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
29522952
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -2977,7 +2977,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
29772977
.port_set_ether_type = mv88e6351_port_set_ether_type,
29782978
.port_jumbo_config = mv88e6165_port_jumbo_config,
29792979
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
2980-
.port_pause_config = mv88e6097_port_pause_config,
2980+
.port_pause_limit = mv88e6097_port_pause_limit,
29812981
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
29822982
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
29832983
.stats_snapshot = mv88e6390_g1_stats_snapshot,
@@ -3008,7 +3008,7 @@ static const struct mv88e6xxx_ops mv88e6350_ops = {
30083008
.port_set_ether_type = mv88e6351_port_set_ether_type,
30093009
.port_jumbo_config = mv88e6165_port_jumbo_config,
30103010
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
3011-
.port_pause_config = mv88e6097_port_pause_config,
3011+
.port_pause_limit = mv88e6097_port_pause_limit,
30123012
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
30133013
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
30143014
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -3039,7 +3039,7 @@ static const struct mv88e6xxx_ops mv88e6351_ops = {
30393039
.port_set_ether_type = mv88e6351_port_set_ether_type,
30403040
.port_jumbo_config = mv88e6165_port_jumbo_config,
30413041
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
3042-
.port_pause_config = mv88e6097_port_pause_config,
3042+
.port_pause_limit = mv88e6097_port_pause_limit,
30433043
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
30443044
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
30453045
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -3072,7 +3072,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
30723072
.port_set_ether_type = mv88e6351_port_set_ether_type,
30733073
.port_jumbo_config = mv88e6165_port_jumbo_config,
30743074
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
3075-
.port_pause_config = mv88e6097_port_pause_config,
3075+
.port_pause_limit = mv88e6097_port_pause_limit,
30763076
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
30773077
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
30783078
.stats_snapshot = mv88e6320_g1_stats_snapshot,
@@ -3106,7 +3106,7 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
31063106
.port_set_ether_type = mv88e6351_port_set_ether_type,
31073107
.port_jumbo_config = mv88e6165_port_jumbo_config,
31083108
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
3109-
.port_pause_config = mv88e6390_port_pause_config,
3109+
.port_pause_limit = mv88e6390_port_pause_limit,
31103110
.port_set_cmode = mv88e6390x_port_set_cmode,
31113111
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
31123112
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
@@ -3142,7 +3142,7 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
31423142
.port_set_ether_type = mv88e6351_port_set_ether_type,
31433143
.port_jumbo_config = mv88e6165_port_jumbo_config,
31443144
.port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
3145-
.port_pause_config = mv88e6390_port_pause_config,
3145+
.port_pause_limit = mv88e6390_port_pause_limit,
31463146
.port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
31473147
.port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
31483148
.stats_snapshot = mv88e6390_g1_stats_snapshot,

drivers/net/dsa/mv88e6xxx/chip.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,8 @@ struct mv88e6xxx_ops {
425425
int (*port_jumbo_config)(struct mv88e6xxx_chip *chip, int port);
426426

427427
int (*port_egress_rate_limiting)(struct mv88e6xxx_chip *chip, int port);
428-
int (*port_pause_config)(struct mv88e6xxx_chip *chip, int port);
428+
int (*port_pause_limit)(struct mv88e6xxx_chip *chip, int port, u8 in,
429+
u8 out);
429430
int (*port_disable_learn_limit)(struct mv88e6xxx_chip *chip, int port);
430431
int (*port_disable_pri_override)(struct mv88e6xxx_chip *chip, int port);
431432

drivers/net/dsa/mv88e6xxx/port.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -376,22 +376,24 @@ int mv88e6xxx_port_get_cmode(struct mv88e6xxx_chip *chip, int port, u8 *cmode)
376376
* the remote end or the period of time that this port can pause the
377377
* remote end.
378378
*/
379-
int mv88e6097_port_pause_config(struct mv88e6xxx_chip *chip, int port)
379+
int mv88e6097_port_pause_limit(struct mv88e6xxx_chip *chip, int port, u8 in,
380+
u8 out)
380381
{
381-
return mv88e6xxx_port_write(chip, port, PORT_PAUSE_CTRL, 0x0000);
382+
return mv88e6xxx_port_write(chip, port, PORT_PAUSE_CTRL, out << 8 | in);
382383
}
383384

384-
int mv88e6390_port_pause_config(struct mv88e6xxx_chip *chip, int port)
385+
int mv88e6390_port_pause_limit(struct mv88e6xxx_chip *chip, int port, u8 in,
386+
u8 out)
385387
{
386388
int err;
387389

388390
err = mv88e6xxx_port_write(chip, port, PORT_PAUSE_CTRL,
389-
PORT_FLOW_CTRL_LIMIT_IN | 0);
391+
PORT_FLOW_CTRL_LIMIT_IN | in);
390392
if (err)
391393
return err;
392394

393395
return mv88e6xxx_port_write(chip, port, PORT_PAUSE_CTRL,
394-
PORT_FLOW_CTRL_LIMIT_OUT | 0);
396+
PORT_FLOW_CTRL_LIMIT_OUT | out);
395397
}
396398

397399
/* Offset 0x04: Port Control Register */

drivers/net/dsa/mv88e6xxx/port.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,10 @@ int mv88e6xxx_port_set_message_port(struct mv88e6xxx_chip *chip, int port,
228228
int mv88e6165_port_jumbo_config(struct mv88e6xxx_chip *chip, int port);
229229
int mv88e6095_port_egress_rate_limiting(struct mv88e6xxx_chip *chip, int port);
230230
int mv88e6097_port_egress_rate_limiting(struct mv88e6xxx_chip *chip, int port);
231-
int mv88e6097_port_pause_config(struct mv88e6xxx_chip *chip, int port);
232-
int mv88e6390_port_pause_config(struct mv88e6xxx_chip *chip, int port);
231+
int mv88e6097_port_pause_limit(struct mv88e6xxx_chip *chip, int port, u8 in,
232+
u8 out);
233+
int mv88e6390_port_pause_limit(struct mv88e6xxx_chip *chip, int port, u8 in,
234+
u8 out);
233235
int mv88e6390x_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
234236
phy_interface_t mode);
235237
int mv88e6xxx_port_get_cmode(struct mv88e6xxx_chip *chip, int port, u8 *cmode);

0 commit comments

Comments
 (0)