Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Jan 2014 17:09:47 GMT
From:      Vladimir Machulsky <vmachulsky@yandex.ru>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   misc/185496: RTL8169 doesn't receive unicast ethernet packets unless in promiscuous mode
Message-ID:  <201401051709.s05H9lDG059365@oldred.freebsd.org>
Resent-Message-ID: <201401051710.s05HA0YY071445@freefall.freebsd.org>

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

>Number:         185496
>Category:       misc
>Synopsis:       RTL8169 doesn't receive unicast ethernet packets unless in promiscuous mode
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jan 05 17:10:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Vladimir Machulsky
>Release:        8.2-RELEASE
>Organization:
>Environment:
FreeBSD xxx.xxx 8.2-RELEASE FreeBSD 8.2-RELEASE #2: Sat Nov  9 22:42:13 EET 2013     root@xxx.xxx:/usr/obj/usr/src/sys/YYYYY  i386
>Description:
Hi! I have old laptop in use as a router. It's Panasonic CF-M34 - Celeron 400MHZ, 192Mb DRAM. The problem is following: STLab C-160 Cardbus Network card with RTL8169 chipset denies to receive unicast ethernet packets until I turn on promiscuous mode.

re0: <RealTek 8169/8169S/8169SB(L)/8110S/8110SB(L) Gigabit Ethernet> port 0x1100-0x11ff mem 0x88000000-0x880000ff irq 9 at device 0.0 on cardbus0
re0: Chip rev. 0x18000000
re0: MAC rev. 0x00000000
miibus0: <MII bus> on re0
rgephy0: <RTL8169S/8110S/8211B media interface> PHY 1 on miibus0
rgephy0:  10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
re0: Ethernet address: 00:0a:cd:16:84:ed
re0: [FILTER]

I believe something wrong with driver part which program chip about what to receive and what to not. 

I've looked to if_re.c changelog and found nothing obviously related to this problem was checked in since 8.2, so I believe this problem is actual for CURRENT too.

>How-To-Repeat:

In the following experiments two hosts are involved:

a) ROUTER - have single RTL8169 network card
b) HOST - neightbor host with a single network card.

Both hosts are connected to the same ethernet switch and have ip addresses from the same ip network.

Initial setup: ROUTER is cold booted. HOSTs arp cache is cleared. Infinite count ping of ROUTERs ip address process is started on HOST.

1) ROUTER boots, and successfully replies for arp requests - HOSTs arp data about router ip address is correct. I.e. broadcast ethernet packets are successfully received by ROUTER and ROUTERs transmitting path functioning flawlessly too.

2) ICMP Ping packets from HOST remains without replies. Starting Tcpdump on HOST. Tcpdump show icmp packets with correct destination ROUTER ethernet address are goes out and no any replies seen.

3) Tcpdump on ROUTER started. HOST start receive ping replies! After interrupting tcpdump, HOST stop receive ICMP replies. 

4) Starting ping of HOSTs ip address process from ROUTER. ROUTER get no a sole ICMP reply. Tcpdump on HOST show both ROUTER ICMP requests and HOST ICMP replies. 

>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:



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