-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Promiscuous mode on Raspberry Pi 3 B+ not seeing packets #2566
Comments
That would indicate a problem in the firmware of the wireless chip itself. That will need to be reported to CYpress, I can do that when I get back in to the office. |
This issue is with the Microchip LAN7515 wired network device, not the Broadcom/Cypress wireless device. |
Are you saying you receive nothing at all - not even broadcast packets? What does |
@dgriswo Apologies, got the wrong adapter. We do use a different driver for that chip, so there could well be a driver issue, rather than firmware. |
@pelwell The network points that I am capturing are between core and Internet routers; the only broadcast I would expect to see is ARP. The majority of the packets are unicast to/from the Internet. IIRC, the counter was zero. Not sure how long the ARP cache is. I’ll try to retest capture on a port with SMB broadcasts. |
Testing promiscuity is more difficult in an age where hubs are hard to find, but by capturing a packet trace on one machine and replaying it from a Pi over a point-to-point network cable to a 3B+ I'm fairly happy that promiscuous mode is working. |
@dgriswo Can you double check that promiscuous mode is not working for you? Can you try with the latest kernel? Been a few changes in networking. |
@JamesH65 I was able to get a 3B swapped for a 3B+ to test again. I believe I've isolated it down to a dhcpcd configuration. in /etc/dhcpcd.conf, I use the following:
on the 3B, no IP is assigned to the interface and packets are processed.
on the 3B+, no IP is assigned to the interface, but packets are not processed.
commenting out the lines in /etc/dhcpcd.conf on the 3B+, an APIPA address is assigned to eth0 (the switch port is egress only.) and packets are processed.
Is this a dhcpcd issue or a driver issue? |
Why do you use |
dhcpcd manages the interfaces in Raspbian Stretch. I'm trying to bring the interface up without an IP address. Traditional networking used for promiscuous devices was On a Pi 3B, I get no IP address and RX packets only. On the Pi 3B+, I either get no IP Address and no packets or an apipa address and both TX and RX packets. |
I'm investigating. |
I can confirm the report - with ipv6 disabled ( |
This is baffling. Tracing the writes to the LAN7800 and PHY registers I can compare the final state when booting with and without a valid IP address, and apart from an additional multicast MAC address (mDNS) with a valid IP address I can't any difference, apart from a read-only status bit indicating that a pending transmission. With a bit of luck Microchip will be able to shed some light. |
@pelwell any news from Microchip? |
No, nothing. I've prodded them again. |
I think this issue has the same underlying cause as #2617, i.e. that the bottom half tasklet isn't scheduled until the first packet is transmitted. The next rpi-update release should include a fix. |
Latest rpi-update has the fixes @pelwell refers too. Please update and test. |
I ran rpi-update and the issue still occurs for me. Doesn't happen on the other ethernet interface I have (USB one) |
On a Raspberry Pi model 3 B+, when the wired ethernet adapter is placed into promiscuous mode using "ifconfig eth0 promisc", and connected to a monitor port, the RX packet counters do not increase. Packet processing using Bro, iftop, or tcpdump does not see incoming packets. I have tested this on two different Raspberry Pi 3 B+ boards using both a Unifi switch and a Mikrotik switch.
This function works as expected on a Raspberry Pi Model 3 B. If fact, I can build an SD card for a 3 B+, verify functionality isn't working, then plug the SD card into a 3 B and verify functionality is working.
Steps to reproduce.
net.ipv6.conf.all.disable_ipv6 = 1
sudo systemctl restart dhcpcd; sudo sysctl -p
The text was updated successfully, but these errors were encountered: