Да, вы пропустили один элемент в struct net_device_ops
Добавить .ndo_start_xmit также, и функция должна возвращать NETDEV_TX_OK или NETDEV_TX_BUSY.
использовать следующим образом
static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)
{
return NETDEV_TX_OK;
}
А также изменить open на
static int veth_open(struct net_device *dev)
{
memcpy(dev->dev_addr, "\0ABCD0", ETH_ALEN);
netif_start_queue(dev);
return 0;
}
Затем в veth_ops
static struct net_device_ops veth_ops = {
.ndo_init = veth_dev_init,
.ndo_open = veth_open,
.ndo_stop = veth_close,
.ndo_start_xmit = veth_xmit,
.ndo_do_ioctl = veth_ioctl,
};
Затем послевставив модуль
дайте ifconfig my_dev 192.168.10.98 ...