Skip to content

Commit 82bbaa0

Browse files
Vadym Kochandavem330
authored andcommitted
net: marvell: prestera: do not propagate netdev events to prestera_switchdev.c
Replace prestera_bridge_port_event(...) by prestera_bridge_port_join(...) and prestera_bridge_port_leave(). It simplifies the code by reading netdev event specific handling only once in prestera_main.c Signed-off-by: Vadym Kochan <[email protected]> CC: Vladimir Oltean <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 3d5048c commit 82bbaa0

File tree

3 files changed

+19
-37
lines changed

3 files changed

+19
-37
lines changed

drivers/net/ethernet/marvell/prestera/prestera_main.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,7 @@ static int prestera_netdev_port_event(struct net_device *dev,
509509
unsigned long event, void *ptr)
510510
{
511511
struct netdev_notifier_changeupper_info *info = ptr;
512+
struct prestera_port *port = netdev_priv(dev);
512513
struct netlink_ext_ack *extack;
513514
struct net_device *upper;
514515

@@ -532,8 +533,12 @@ static int prestera_netdev_port_event(struct net_device *dev,
532533
break;
533534

534535
case NETDEV_CHANGEUPPER:
535-
if (netif_is_bridge_master(upper))
536-
return prestera_bridge_port_event(dev, event, ptr);
536+
if (netif_is_bridge_master(upper)) {
537+
if (info->linking)
538+
return prestera_bridge_port_join(upper, port);
539+
else
540+
prestera_bridge_port_leave(upper, port);
541+
}
537542
break;
538543
}
539544

drivers/net/ethernet/marvell/prestera/prestera_switchdev.c

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -422,17 +422,17 @@ prestera_bridge_1d_port_join(struct prestera_bridge_port *br_port)
422422
return err;
423423
}
424424

425-
static int prestera_port_bridge_join(struct prestera_port *port,
426-
struct net_device *upper)
425+
int prestera_bridge_port_join(struct net_device *br_dev,
426+
struct prestera_port *port)
427427
{
428428
struct prestera_switchdev *swdev = port->sw->swdev;
429429
struct prestera_bridge_port *br_port;
430430
struct prestera_bridge *bridge;
431431
int err;
432432

433-
bridge = prestera_bridge_by_dev(swdev, upper);
433+
bridge = prestera_bridge_by_dev(swdev, br_dev);
434434
if (!bridge) {
435-
bridge = prestera_bridge_create(swdev, upper);
435+
bridge = prestera_bridge_create(swdev, br_dev);
436436
if (IS_ERR(bridge))
437437
return PTR_ERR(bridge);
438438
}
@@ -505,14 +505,14 @@ static int prestera_port_vid_stp_set(struct prestera_port *port, u16 vid,
505505
return prestera_hw_vlan_port_stp_set(port, vid, hw_state);
506506
}
507507

508-
static void prestera_port_bridge_leave(struct prestera_port *port,
509-
struct net_device *upper)
508+
void prestera_bridge_port_leave(struct net_device *br_dev,
509+
struct prestera_port *port)
510510
{
511511
struct prestera_switchdev *swdev = port->sw->swdev;
512512
struct prestera_bridge_port *br_port;
513513
struct prestera_bridge *bridge;
514514

515-
bridge = prestera_bridge_by_dev(swdev, upper);
515+
bridge = prestera_bridge_by_dev(swdev, br_dev);
516516
if (!bridge)
517517
return;
518518

@@ -533,32 +533,6 @@ static void prestera_port_bridge_leave(struct prestera_port *port,
533533
prestera_bridge_port_put(br_port);
534534
}
535535

536-
int prestera_bridge_port_event(struct net_device *dev, unsigned long event,
537-
void *ptr)
538-
{
539-
struct netdev_notifier_changeupper_info *info = ptr;
540-
struct prestera_port *port;
541-
struct net_device *upper;
542-
int err;
543-
544-
port = netdev_priv(dev);
545-
upper = info->upper_dev;
546-
547-
switch (event) {
548-
case NETDEV_CHANGEUPPER:
549-
if (info->linking) {
550-
err = prestera_port_bridge_join(port, upper);
551-
if (err)
552-
return err;
553-
} else {
554-
prestera_port_bridge_leave(port, upper);
555-
}
556-
break;
557-
}
558-
559-
return 0;
560-
}
561-
562536
static int prestera_port_attr_br_flags_set(struct prestera_port *port,
563537
struct net_device *dev,
564538
struct switchdev_brport_flags flags)

drivers/net/ethernet/marvell/prestera/prestera_switchdev.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
int prestera_switchdev_init(struct prestera_switch *sw);
88
void prestera_switchdev_fini(struct prestera_switch *sw);
99

10-
int prestera_bridge_port_event(struct net_device *dev, unsigned long event,
11-
void *ptr);
10+
int prestera_bridge_port_join(struct net_device *br_dev,
11+
struct prestera_port *port);
12+
13+
void prestera_bridge_port_leave(struct net_device *br_dev,
14+
struct prestera_port *port);
1215

1316
#endif /* _PRESTERA_SWITCHDEV_H_ */

0 commit comments

Comments
 (0)