<div dir="ltr">Typo: /sys/bus/pci/driver should be /sys/bus/pci/drivers<div><br></div><div>Sorry,</div><div><br></div><div>J.</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-02-28 10:04 GMT+01:00 Jeroen Van den Keybus <span dir="ltr"><<a href="mailto:jeroen.vandenkeybus@gmail.com" target="_blank">jeroen.vandenkeybus@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">There are some disadvantages to using the ec_... drivers for normal networking. Especially during development it can be a serious hindrance.<div>
<br></div><div>An alternative is to unbind and bind the PCI network devices manually:</div>
<div><br></div><div>Given is that the kernel (non-ECAT) driver is loaded for a couple of e.g. e1000 devices (you cannot do anything about that; the kernel internally enumerates all matching VIDs and PIDs so udev is of no help here).</div>

<div><br></div><div>Load the ec_ driver (ec_e1000 in the example) for your device. Since there's already a driver loaded, it will load but not probe.</div><div><br></div><div>Next you need to find the PCI device bus address for the device you want to use for ECAT using (e.g. eth2):</div>

<div><br></div><div># ethtool -i eth2</div><div><br></div><div>and note the 0000:xx:xx.x PCI bus address ('bus-info')</div><div><br></div><div>Then, as root, you unbind the kernel driver (e1000) for this device:</div>

<div><br></div><div># echo <PCI bus address> > /sys/bus/pci/driver/<name of driver to unbind>/unbind</div><div><br></div><div>Finally, bind the EtherCAT capable driver (ec_e1000) for this device using:</div>

<div><br></div><div># echo <PCI bus address> > sys/bus/pci/driver/<name of loaded EtherCAT capable driver>/bind</div><div><br></div><div><br></div><div>Now two different drivers are loaded for the same type of device.</div>

<div><br></div><div><br></div><div>J.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-02-27 22:37 GMT+01:00 Gavin Lambert <span dir="ltr"><<a href="mailto:gavinl@compacsort.com" target="_blank">gavinl@compacsort.com</a>></span>:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Quoth Fredrik Viksten:<br>
<div>> How would I go about setting the system up so I can A) use NIC eth0 for<br>
> normal network traffic and B) use an EtherCAT-optimized kernel driver<br>
> for NIC eth1 when they are both using the same chipset?<br>
<br>
</div>All you should need to do is to explicitly specify the MAC that you want to use for EtherCAT in the /etc/sysconfig/ethercat file, and let it load the EtherCAT-optimised driver as normal.<br>
<br>
The modified driver includes checks to see whether it's being used in EtherCAT mode or not for each individual instance, so the EtherCAT one will operate in optimised polling mode and the Ethernet one will operate in regular interrupt mode.<br>


<br>
You may also need to edit additional config files to avoid treating it as a standard Ethernet port (eg. DHCP, network management, etc), but that will vary by distribution.  I can't really help with that as I've only used EtherCAT on small systems (no GUI, minimal number of installed packages).<br>


<br>
<br>
_______________________________________________<br>
etherlab-users mailing list<br>
<a href="mailto:etherlab-users@etherlab.org" target="_blank">etherlab-users@etherlab.org</a><br>
<a href="http://lists.etherlab.org/mailman/listinfo/etherlab-users" target="_blank">http://lists.etherlab.org/mailman/listinfo/etherlab-users</a><br>
</blockquote></div></div></div><br></div>
</blockquote></div><br></div>