++static int imq_close(struct net_device *dev)
++{
++ struct imq_private *priv = netdev_priv(dev);
++
++ tasklet_kill(&priv->tasklet);
++ netif_stop_queue(dev);
++
++ return 0;
++}
++
++static int imq_open(struct net_device *dev)
++{
++ struct imq_private *priv = netdev_priv(dev);
++
++ tasklet_init(&priv->tasklet, qdisc_run_tasklet, (unsigned long)dev);
++ netif_start_queue(dev);
++
++ return 0;
++}
++
++static void imq_setup(struct net_device *dev)
++{
++ dev->hard_start_xmit = imq_dev_xmit;
++ dev->open = imq_open;
++ dev->get_stats = imq_get_stats;
++ dev->stop = imq_close;
++ dev->type = ARPHRD_VOID;
++ dev->mtu = 16000;
++ dev->tx_queue_len = 11000;
++ dev->flags = IFF_NOARP;
++}
++
++static struct rtnl_link_ops imq_link_ops __read_mostly = {
++ .kind = "imq",
++ .priv_size = sizeof(struct imq_private),
++ .setup = imq_setup,
++};