Example #1
0
void hsr_set_carrier(struct net_device *hsr_dev, struct net_device *slave1,
		     struct net_device *slave2)
{
	if (is_slave_up(slave1) || is_slave_up(slave2))
		netif_carrier_on(hsr_dev);
	else
		netif_carrier_off(hsr_dev);
}
Example #2
0
void hsr_set_operstate(struct net_device *hsr_dev, struct net_device *slave1,
		       struct net_device *slave2)
{
	if (!is_admin_up(hsr_dev)) {
		__hsr_set_operstate(hsr_dev, IF_OPER_DOWN);
		return;
	}

	if (is_slave_up(slave1) || is_slave_up(slave2))
		__hsr_set_operstate(hsr_dev, IF_OPER_UP);
	else
		__hsr_set_operstate(hsr_dev, IF_OPER_LOWERLAYERDOWN);
}
Example #3
0
static int hsr_dev_open(struct net_device *dev)
{
	struct hsr_priv *hsr;
	struct hsr_port *port;
	char designation;

	hsr = netdev_priv(dev);
	designation = '\0';

	rcu_read_lock();
	hsr_for_each_port(hsr, port) {
		if (port->type == HSR_PT_MASTER)
			continue;
		switch (port->type) {
		case HSR_PT_SLAVE_A:
			designation = 'A';
			break;
		case HSR_PT_SLAVE_B:
			designation = 'B';
			break;
		default:
			designation = '?';
		}
		if (!is_slave_up(port->dev))
			netdev_warn(dev, "Slave %c (%s) is not up; please bring it up to get a fully working HSR network\n",
				    designation, port->dev->name);
	}
	rcu_read_unlock();

	if (designation == '\0')
		netdev_warn(dev, "No slave devices configured\n");

	return 0;
}
Example #4
0
static int hsr_dev_open(struct net_device *dev)
{
	struct hsr_priv *hsr_priv;
	int i;
	char *slave_name;

	hsr_priv = netdev_priv(dev);

	for (i = 0; i < HSR_MAX_SLAVE; i++) {
		if (hsr_priv->slave[i])
			slave_name = hsr_priv->slave[i]->name;
		else
			slave_name = "null";

		if (!is_slave_up(hsr_priv->slave[i]))
			netdev_warn(dev, "Slave %c (%s) is not up; please bring it up to get a working HSR network\n",
				    'A' + i, slave_name);
	}

	return 0;
}
Example #5
0
static bool hsr_check_carrier(struct hsr_port *master)
{
	struct hsr_port *port;
	bool has_carrier;

	has_carrier = false;

	rcu_read_lock();
	hsr_for_each_port(master->hsr, port)
		if ((port->type != HSR_PT_MASTER) && is_slave_up(port->dev)) {
			has_carrier = true;
			break;
		}
	rcu_read_unlock();

	if (has_carrier)
		netif_carrier_on(master->dev);
	else
		netif_carrier_off(master->dev);

	return has_carrier;
}