# em(4) can't enable device polling



## lubousa (Sep 25, 2022)

I'm trying to enable polling on em0 ( Intel  82583v chip) but not work.

After I compile custom kernel with options DEVICE_POLLING and HZ=1000 trying to set with `ifconfig em0 polling` but not appear in:

```
em0: flags=8867<UP,BROADCAST,DEBUG,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
```
I'm using 13.1-RELEASE.

If I try with some Realtek nic re(4) everything work fine and can enable polling.

Did I miss something or em(4) and polling not working?


----------



## gpw928 (Sep 25, 2022)

The manual page for polling(4) suggests that it works with the em(4) driver.

So I took a look at the device drivers in /usr/src/sys/dev/e1000/if_em.c and /usr/src/sys/dev/rl/if_rl.c.

The RealTek 8129/8139 PCI NIC rl(4) driver has numerous instances of `#ifdef DEVICE_POLLING`, along with the code segments to support polling.  The Intel(R) PRO/1000 Gigabit Ethernet adapter em(4) driver has none.

Then I found this in /usr/src/sys/dev/e1000/README: `Device Polling is only valid for non-SMP kernels`.

So my best guess is that support for polling in the em(4) driver got dropped when SMP support got added.  Maybe somebody more familiar with the landscape and history will comment.


----------



## lubousa (Sep 25, 2022)

gpw928 you are right! there no code segmentation for polling in if_em.c. Last driver em(4) that have polling is in 11.4-RELEASE.
I have old cyberoam hardware with 3 gigabits port (82583v) and 1Ghz single core AMD cpu. Have 400-480Mbits throughput with in-kernel nat. If I could be able to enable polling to got more performance...


----------

