Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jun 2015 12:48:45 +0300
From:      Sergey Akhmatov <stell@genossen.ru>
To:        freebsd-net@freebsd.org
Subject:   oce(4) promiscous mode bug(?)
Message-ID:  <5581427D.9070007@genossen.ru>

next in thread | raw e-mail | index | archive | help
Hi,

I’ve got problems with HP NC550SFP NIC 
(http://www.emulex.com/products/ethernet-networking-storage-connectivity/ethernet-networking-adapters/hp-branded/nc550sfp/overview/ 
)

Setup information:

I’m intended to use this system for traffic monitoring:
switchport configured for traffic mirroring to 10 Gbit port of NC550SFP 
adapter.
Adapter is detected by oce(4) driver:

$ dmesg
…
oce0: <Emulex CNA NIC function:///10.0.664.0///> mem 
0xfbff0000-0xfbff3fff,0xfbfc0000-0xfbfdffff,0xfbfa0000-0xfbfbffff irq 32 
at device 0.0 on pci4
oce0: Ethernet address: 10:60:4b:01:12:48
oce1: <Emulex CNA NIC function:///10.0.664.0///> mem 
0xfbf90000-0xfbf93fff,0xfbf60000-0xfbf7ffff,0xfbf40000-0xfbf5ffff irq 42 
at device 0.1 on pci4
oce1: Ethernet address: 10:60:4b:01:12:4c

$ pciconf –vl
oce0@pci0:4:0:0:        class=0x020000 card=0x1747103c chip=0x070019a2 
rev=0x02 hdr=0x00
     vendor     = 'Emulex Corporation'
     device     = 'OneConnect 10Gb NIC'
     class      = network
     subclass   = ethernet
oce1@pci0:4:0:1:        class=0x020000 card=0x1747103c chip=0x070019a2 
rev=0x02 hdr=0x00
     vendor     = 'Emulex Corporation'
     device     = 'OneConnect 10Gb NIC'
     class      = network
     subclass   = Ethernet

sysctl info:
dev.oce.0.sfp_vpd_dump: 0
dev.oce.0.aic_enable: 0
dev.oce.0.fw_upgrade:
dev.oce.0.loop_back: 0
dev.oce.0.speed: 10000
dev.oce.0.max_rsp_handled: 64
dev.oce.0.firmware_version: 4.9.416.2
dev.oce.0.component_revision: ///10.0.664.0///
dev.oce.0.%parent: pci4
dev.oce.0.%pnpinfo: vendor=0x19a2 device=0x0700 subvendor=0x103c 
subdevice=0x1747 class=0x020000
dev.oce.0.%location: pci0:4:0:0 handle=\_SB_.PCI0.PT09.PES1
dev.oce.0.%driver: oce
dev.oce.0.%desc: Emulex CNA NIC function:///10.0.664.0///

Problem:

It is switched to promiscuous mode:
$ ifconfig oce0
oce0: 
flags=68143<UP,BROADCAST,RUNNING,PROMISC,MULTICAST,PPROMISC,MONITOR> 
metric 0 mtu 1500
options=407bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWFILTER,VLAN_HWTSO>
         ether 10:60:4b:01:12:48
         nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
         media: Ethernet autoselect (10Gbase-SR <full-duplex>)
         status: active

Via tcpdump I see only broadcast frames.
Via sysctl I see constantly increasing error counter:
dev.oce.0.stats.rx.err.address_match_errors: 124171960

It seems that all unicast frames not addressed to adapter's MAC-address 
are dropped at hardware, which means that promiscuous mode is not 
working as intended.
Behavior is similar under 10.1 RELEASE, and 11.0-CURRENT (FreeBSD 
11.0-CURRENT #0 r284443). GENERIK kernel.

The same box works fine under Linux with be2net driver, so It’s 
definitely not a hardware problem and seems like a problem with FreeBSD 
oce(4) driver

Any suggestions?

Thanks in advance.

Best regards,

Sergey Akhmatov





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5581427D.9070007>