[Bug 222744] Issues with Intel EM(4) drivers and iflib updates working with netmap
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Oct 2 23:46:44 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=222744
Bug ID: 222744
Summary: Issues with Intel EM(4) drivers and iflib updates
working with netmap
Product: Base System
Version: CURRENT
Hardware: amd64
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: freebsd-bugs at FreeBSD.org
Reporter: mshirk at daemon-security.com
Tested on 12-CURRENT
pciconf
em0 at pci0:1:0:0: class=0x020000 card=0x115e8086 chip=0x105e8086 rev=0x06
hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB Gigabit Ethernet Controller'
class= network
subclass= ethernet
I wanted to document this issue as things are being updated for the "iflib"
improvements in CURRENT. Up until the following commits, doing things with
netmap would cause a kernel panic on this intel nic.
https://reviews.freebsd.org/D12140
After this commit, it appeared that I could put this Intel 82571EB NIC into
netmap mode with something like tcpdump and see packet data:
tcpdump -i netmap:em0 -nns 0
However, tcpdump only logs 1024 packets, and then just stops logging packets. I
tested with another application that puts the interface in netmap mode (lb from
the netmap github repo) and it also load balances until it forwards 1024
packets and stops forwarding. In fact, when running the lb app again, and
hitting <Ctrl>+C the box panicked. 90% of the time I get a kernel panic,
especially if I output the packet data to STDOUT. If I do something like the
following, tcpdump will never finish as the count will never reach 1025.
tcpdump -i netmap:em0 -n -c 1025
truss output from the pid for tcpdump:
poll({ 3/POLLIN },1,1000) = 0 (0x0)
...
Run the same thing again, there are also these interesting NULL frames
inserted, this second run lead to a panic:
poll({ 3/POLLIN },1,1000)= 1 (0x1)
write(1,"23:41:37.192324 00:00:00:00:00:0"...,122) = 122 (0x7a)
write(1,"\t0x0000: 0000 0000 0000 0000 0"...,68) = 68 (0x44)
write(1,"\t0x0010: 0000 0000 0000 0000 0"...,68) = 68 (0x44)
write(1,"\t0x0020: 0000 0000 0000 0000 0"...,68) = 68 (0x44)
write(1,"\t0x0030: 0000 0000 0000 0000 0"...,68) = 68 (0x44)
write(1,"\t0x0040: 0000 0000 0000 0000 0"...,68) = 68 (0x44)
write(1,"\t0x0050: 0000 "...,54) = 54 (0x36)
poll({ 3/POLLIN },1,1000)= 1 (0x1)
write(1,"23:41:37.218808 IP xx.xxx.xxx.xx"...,119) = 119 (0x77)
poll({ 3/POLLIN },1,1000)= 1 (0x1)
I am working on getting a textdump of the panic, but the backtrace was the
following:
em_isc_rxd_pkt_get() at em_isc_rxd_pkt_get+0xf1
iflib_netmap_rxsysnc() at iflib_netmap_rxsync+0x235
netmap_poll() at netmap_poll+0x79c
freebsd_netmap_poll() at freebsd_netmap_poll+0x32
devfs_poll_f() at devfs_poll_f+0x7f
systl for hw.em and dev.em.0
hw.em.max_interrupt_rate: 8000
hw.em.eee_setting: 1
hw.em.rx_process_limit: -1
hw.em.sbp: 1
hw.em.smart_pwr_down: 0
hw.em.rx_abs_int_delay: 66
hw.em.tx_abs_int_delay: 66
hw.em.rx_int_delay: 0
hw.em.tx_int_delay: 66
hw.em.disable_crc_stripping: 0
dev.em.0.wake: 0
dev.em.0.interrupts.rx_overrun: 0
dev.em.0.interrupts.rx_desc_min_thresh: 0
dev.em.0.interrupts.tx_queue_min_thresh: 0
dev.em.0.interrupts.tx_queue_empty: 0
dev.em.0.interrupts.tx_abs_timer: 0
dev.em.0.interrupts.tx_pkt_timer: 0
dev.em.0.interrupts.rx_abs_timer: 0
dev.em.0.interrupts.rx_pkt_timer: 23343
dev.em.0.interrupts.asserts: 71321923
dev.em.0.mac_stats.tso_ctx_fail: 0
dev.em.0.mac_stats.tso_txd: 0
dev.em.0.mac_stats.tx_frames_1024_1522: 0
dev.em.0.mac_stats.tx_frames_512_1023: 0
dev.em.0.mac_stats.tx_frames_256_511: 0
dev.em.0.mac_stats.tx_frames_128_255: 0
dev.em.0.mac_stats.tx_frames_65_127: 0
dev.em.0.mac_stats.tx_frames_64: 0
dev.em.0.mac_stats.mcast_pkts_txd: 0
dev.em.0.mac_stats.bcast_pkts_txd: 0
dev.em.0.mac_stats.good_pkts_txd: 0
dev.em.0.mac_stats.total_pkts_txd: 0
dev.em.0.mac_stats.good_octets_txd: 0
dev.em.0.mac_stats.good_octets_recvd: 175021103382
dev.em.0.mac_stats.rx_frames_1024_1522: 110020952
dev.em.0.mac_stats.rx_frames_512_1023: 3556274
dev.em.0.mac_stats.rx_frames_256_511: 4759999
dev.em.0.mac_stats.rx_frames_128_255: 9906052
dev.em.0.mac_stats.rx_frames_65_127: 20994339
dev.em.0.mac_stats.rx_frames_64: 32014796
dev.em.0.mac_stats.mcast_pkts_recvd: 7805
dev.em.0.mac_stats.bcast_pkts_recvd: 10
dev.em.0.mac_stats.good_pkts_recvd: 181252412
dev.em.0.mac_stats.total_pkts_recvd: 181878781
dev.em.0.mac_stats.xoff_txd: 0
dev.em.0.mac_stats.xoff_recvd: 0
dev.em.0.mac_stats.xon_txd: 0
dev.em.0.mac_stats.xon_recvd: 0
dev.em.0.mac_stats.coll_ext_errs: 0
dev.em.0.mac_stats.alignment_errs: 0
dev.em.0.mac_stats.crc_errs: 0
dev.em.0.mac_stats.recv_errs: 0
dev.em.0.mac_stats.recv_jabber: 0
dev.em.0.mac_stats.recv_oversize: 0
dev.em.0.mac_stats.recv_fragmented: 0
dev.em.0.mac_stats.recv_undersize: 0
dev.em.0.mac_stats.recv_no_buff: 126
dev.em.0.mac_stats.missed_packets: 626369
dev.em.0.mac_stats.defer_count: 0
dev.em.0.mac_stats.sequence_errors: 0
dev.em.0.mac_stats.symbol_errors: 0
dev.em.0.mac_stats.collision_count: 0
dev.em.0.mac_stats.late_coll: 0
dev.em.0.mac_stats.multiple_coll: 0
dev.em.0.mac_stats.single_coll: 0
dev.em.0.mac_stats.excess_coll: 0
dev.em.0.queue_rx_0.rx_irq: 0
dev.em.0.queue_rx_0.rxd_tail: 650
dev.em.0.queue_rx_0.rxd_head: 652
dev.em.0.queue_tx_0.tx_irq: 0
dev.em.0.queue_tx_0.txd_tail: 0
dev.em.0.queue_tx_0.txd_head: 0
dev.em.0.fc_low_water: 21028
dev.em.0.fc_high_water: 22528
dev.em.0.rx_control: 100892734
dev.em.0.device_control: 787009
dev.em.0.watchdog_timeouts: 0
dev.em.0.rx_overruns: 0
dev.em.0.tx_dma_fail: 0
dev.em.0.mbuf_defrag_fail: 0
dev.em.0.link_irq: 0
dev.em.0.dropped: 0
dev.em.0.eee_control: 1
dev.em.0.itr: 488
dev.em.0.tx_abs_int_delay: 66
dev.em.0.rx_abs_int_delay: 66
dev.em.0.tx_int_delay: 66
dev.em.0.rx_int_delay: 0
dev.em.0.rs_dump: 0
dev.em.0.reg_dump: General Registers
CTRL 000c0241
STATUS00080383
CTRL_EXIT 101400c0
Interrupt Registers
ICR00000000
RX Registers
RCTL 0603803e
RDLEN 00004000
RDH0000028c
RDT0000028a
RXDCTL00010000
RDBAL 029a8000
RDBAH 00000000
TX Registers
TCTL 3103f0fa
TDBAL 056dc000
TDBAH 00000000
TDLEN 00004000
TDH00000000
TDT00000000
TXDCTL0341011f
TDFH 00001000
TDFT 00001000
TDFHS 00001000
TDFPC 00000000
dev.em.0.fc: 3
dev.em.0.debug: -1
dev.em.0.nvm: -1
dev.em.0.iflib.rxq0.rxq_fl0.credits: 1023
dev.em.0.iflib.rxq0.rxq_fl0.cidx: 652
dev.em.0.iflib.rxq0.rxq_fl0.pidx: 651
dev.em.0.iflib.txq0.r_abdications: 0
dev.em.0.iflib.txq0.r_restarts: 0
dev.em.0.iflib.txq0.r_stalls: 0
dev.em.0.iflib.txq0.r_starts: 0
dev.em.0.iflib.txq0.r_drops: 0
dev.em.0.iflib.txq0.r_enqueues: 0
dev.em.0.iflib.txq0.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000
state: IDLE
dev.em.0.iflib.txq0.txq_cleaned: 0
dev.em.0.iflib.txq0.txq_processed: 0
dev.em.0.iflib.txq0.txq_in_use: 0
dev.em.0.iflib.txq0.txq_cidx_processed: 0
dev.em.0.iflib.txq0.txq_cidx: 0
dev.em.0.iflib.txq0.txq_pidx: 0
dev.em.0.iflib.txq0.no_tx_dma_setup: 0
dev.em.0.iflib.txq0.txd_encap_efbig: 0
dev.em.0.iflib.txq0.tx_map_failed: 0
dev.em.0.iflib.txq0.no_desc_avail: 0
dev.em.0.iflib.txq0.mbuf_defrag_failed: 0
dev.em.0.iflib.txq0.m_pullups: 0
dev.em.0.iflib.txq0.mbuf_defrag: 0
dev.em.0.iflib.override_nrxds: 0
dev.em.0.iflib.override_ntxds: 0
dev.em.0.iflib.disable_msix: 0
dev.em.0.iflib.override_qs_enable: 0
dev.em.0.iflib.override_nrxqs: 0
dev.em.0.iflib.override_ntxqs: 0
dev.em.0.iflib.driver_version: 7.6.1-k
dev.em.0.%parent: pci1
dev.em.0.%pnpinfo: vendor=0x8086 device=0x105e subvendor=0x8086
subdevice=0x115e class=0x020000
dev.em.0.%location: slot=0 function=0 dbsf=pci0:1:0:0
handle=\_SB_.PCI0.PEG0.PEGP
dev.em.0.%driver: em
dev.em.0.%desc: Intel(R) PRO/1000 Network Connection
dmesg:
[1] em0: <Intel(R) PRO/1000 Network Connection> port 0xe020-0xe03f mem
0xf7da0000-0xf7dbffff,0xf7d80000-0xf7d9ffff irq 16 at device 0.0 on pci1
[1] em0: attach_pre capping queues at 1
[1] em0: using 1024 tx descriptors and 1024 rx descriptors
[1] em0: msix_init qsets capped at 1
[1] em0: PCIY_MSIX capability not found; or rid 0 == 0.
[1] em0: Using an MSI interrupt
[1] em0: allocated for 1 tx_queues
[1] em0: allocated for 1 rx_queues
[1] taskqgroup_attach: setaffinity failed: 3
[1] taskqgroup_attach: setaffinity failed: 3
[1] em0: Ethernet address: 68:05:ca:33:42:f0
[1] em0: netmap queues/slots: TX 1/1024, RX 1/1024
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list