示例#1
0
文件: rxe.c 项目: Tyler-D/RXE
/* called by ifc layer to create new rxe device
   caller should allocate memory for rxe by calling
   ib_alloc_device */
int rxe_add(struct rxe_dev *rxe, unsigned int mtu)
{
	int err;
	unsigned port_num = 1;

	__module_get(THIS_MODULE);

	kref_init(&rxe->ref_cnt);

	err = rxe_init(rxe);
	if (err)
		goto err1;

	err = rxe_set_mtu(rxe, mtu, port_num);
	if (err)
		goto err2;

	err = rxe_register_device(rxe);
	if (err)
		goto err2;

	return 0;

err2:
	rxe_cleanup(rxe);
err1:
	kref_put(&rxe->ref_cnt, rxe_release);
	module_put(THIS_MODULE);
	return err;
}
示例#2
0
文件: rxe.c 项目: Anjali05/linux
/* called by ifc layer to create new rxe device.
 * The caller should allocate memory for rxe by calling ib_alloc_device.
 */
int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
{
	int err;

	err = rxe_init(rxe);
	if (err)
		return err;

	rxe_set_mtu(rxe, mtu);

	return rxe_register_device(rxe, ibdev_name);
}
示例#3
0
文件: rxe_net.c 项目: avagin/linux
static int rxe_notify(struct notifier_block *not_blk,
		      unsigned long event,
		      void *arg)
{
	struct net_device *ndev = netdev_notifier_info_to_dev(arg);
	struct rxe_dev *rxe = rxe_get_dev_from_net(ndev);

	if (!rxe)
		return NOTIFY_OK;

	switch (event) {
	case NETDEV_UNREGISTER:
		ib_unregister_device_queued(&rxe->ib_dev);
		break;
	case NETDEV_UP:
		rxe_port_up(rxe);
		break;
	case NETDEV_DOWN:
		rxe_port_down(rxe);
		break;
	case NETDEV_CHANGEMTU:
		pr_info("%s changed mtu to %d\n", ndev->name, ndev->mtu);
		rxe_set_mtu(rxe, ndev->mtu);
		break;
	case NETDEV_CHANGE:
		rxe_set_port_state(rxe);
		break;
	case NETDEV_REBOOT:
	case NETDEV_GOING_DOWN:
	case NETDEV_CHANGEADDR:
	case NETDEV_CHANGENAME:
	case NETDEV_FEAT_CHANGE:
	default:
		pr_info("ignoring netdev event = %ld for %s\n",
			event, ndev->name);
		break;
	}

	ib_device_put(&rxe->ib_dev);
	return NOTIFY_OK;
}