Hello All,
Recently I started to use IgH EtherCAT Master.
There is a following error in ethernet.c and generic.c. It occurs
when complying with linux kernel > 3.17
error: macro "alloc_netdev" requires 4 arguments, but only 3 given
dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null,
ether_setup);
I made a patch which resolves the problem and would like to share it.
Hope it is useful.
best regards,
Alexey
--- ./master/ethernet.c 2015-08-02 12:41:04.569315351 +0200
+++ ./master/ethernet.c 2015-08-02 12:38:52.575250918 +0200
@@ -176,7 +176,12 @@
snprintf(eoe->datagram.name, EC_DATAGRAM_NAME_SIZE, name);
- if (!(eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name, ether_setup))) {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0))
+ eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name, ether_setup);
+#else
+ eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name, NET_NAME_UNKNOWN, ether_setup);
+#endif
+ if (!eoe->dev) {
EC_SLAVE_ERR(slave, "Unable to allocate net_device %s"
" for EoE handler!\n", name);
ret = -ENODEV;
--- ./devices/generic.c 2015-08-02 12:41:04.697318456 +0200
+++ ./devices/generic.c 2015-08-02 12:44:46.004735091 +0200
@@ -149,7 +149,11 @@
dev->socket = NULL;
dev->rx_buf = NULL;
- dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, ether_setup);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0))
+ dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, ether_setup);
+#else
+ dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, NET_NAME_UNKNOWN, ether_setup);
+#endif
if (!dev->netdev) {
return -ENOMEM;
}
_______________________________________________
etherlab-dev mailing list
[email protected]
http://lists.etherlab.org/mailman/listinfo/etherlab-dev