Hi,
I changed the mac address of a wireless card and found out that while ICMP (ping) and UDP (name server queries) work with a faked , TCP connections do not. The services (nameservice, ICMP and, http) are located at the same IP subnet.
As soon as I revert to the real mac address everything works.
When it does not work the SYN packet goes out alright, and it is ACKed by the server, but the ACK doesn't make it to the TCP layer (I added some debugging information) and so the TCP layer issues the SYN again until it gives up. I've seen this with tcpdump and ethereal. So the ACK packet that answers the SYN does come in, but it is sent to the upper protocol layer for UDP and ICMP, not for TCP.
The only weird thing is that sometimes the ethernet destination address in the incoming IP packets is FF:FF:FF:FF:FF:FF, but that does not seem to bother neither ICMP nor UDP, which always work. Why *only TCP* is affected?
Any ideas? I've gone through the code and added printk statements, but have not found so far where the packet gets dropped.
Eduardo.
PD: The kernel is 2.4.27
- : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html