Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3055246 authored by Anuradha Karuppiah's avatar Anuradha Karuppiah Committed by David S. Miller
Browse files

rocker: Handle protodown notifications.



protodown can be set by user space applications like MLAG on detecting
errors on a switch port. This patch provides sample switch driver changes
for handling protodown. Rocker PHYS disables the port in response to
protodown.

Signed-off-by: default avatarAnuradha Karuppiah <anuradhak@cumulusnetworks.com>
Signed-off-by: default avatarAndy Gospodarek <gospo@cumulusnetworks.com>
Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: default avatarWilson Kok <wkok@cumulusnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 88d6378b
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -4015,6 +4015,7 @@ static int rocker_port_open(struct net_device *dev)

	napi_enable(&rocker_port->napi_tx);
	napi_enable(&rocker_port->napi_rx);
	if (!dev->proto_down)
		rocker_port_set_enable(rocker_port, true);
	netif_start_queue(dev);
	return 0;
@@ -4227,6 +4228,17 @@ static int rocker_port_get_phys_port_name(struct net_device *dev,
	return err ? -EOPNOTSUPP : 0;
}

static int rocker_port_change_proto_down(struct net_device *dev,
					 bool proto_down)
{
	struct rocker_port *rocker_port = netdev_priv(dev);

	if (rocker_port->dev->flags & IFF_UP)
		rocker_port_set_enable(rocker_port, !proto_down);
	rocker_port->dev->proto_down = proto_down;
	return 0;
}

static const struct net_device_ops rocker_port_netdev_ops = {
	.ndo_open			= rocker_port_open,
	.ndo_stop			= rocker_port_stop,
@@ -4240,6 +4252,7 @@ static const struct net_device_ops rocker_port_netdev_ops = {
	.ndo_fdb_del			= switchdev_port_fdb_del,
	.ndo_fdb_dump			= switchdev_port_fdb_dump,
	.ndo_get_phys_port_name		= rocker_port_get_phys_port_name,
	.ndo_change_proto_down		= rocker_port_change_proto_down,
};

/********************