Exemplo n.º 1
0
static int rxe_param_set_add(const char *val, const struct kernel_param *kp)
{
	int len;
	int err = 0;
	char intf[32];
	struct net_device *ndev = NULL;
	struct rxe_dev *rxe;

	len = sanitize_arg(val, intf, sizeof(intf));
	if (!len) {
		pr_err("add: invalid interface name\n");
		err = -EINVAL;
		goto err;
	}

	ndev = dev_get_by_name(&init_net, intf);
	if (!ndev) {
		pr_err("interface %s not found\n", intf);
		err = -EINVAL;
		goto err;
	}

	if (net_to_rxe(ndev)) {
		pr_err("already configured on %s\n", intf);
		err = -EINVAL;
		goto err;
	}

	rxe = rxe_net_add(ndev);
	if (!rxe) {
		pr_err("failed to add %s\n", intf);
		err = -EINVAL;
		goto err;
	}

	rxe_set_port_state(ndev);
	pr_info("added %s to %s\n", rxe->ib_dev.name, intf);
err:
	if (ndev)
		dev_put(ndev);
	return err;
}
Exemplo n.º 2
0
Arquivo: rxe.c Projeto: Anjali05/linux
static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
{
	struct rxe_dev *exists;
	int err = 0;

	exists = rxe_get_dev_from_net(ndev);
	if (exists) {
		ib_device_put(&exists->ib_dev);
		pr_err("already configured on %s\n", ndev->name);
		err = -EEXIST;
		goto err;
	}

	err = rxe_net_add(ibdev_name, ndev);
	if (err) {
		pr_err("failed to add %s\n", ndev->name);
		goto err;
	}
err:
	return err;
}