I’m having some trouble getting the network interfaces working when running a network (big) endian kernel. The exact same kernel source and kernel config works if I just change the endianness to little.
Now, receiving packets seems to work just fine, but transmit gets stuck on the very first packet.
This is what ifconfig
looks like
eth6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.42.10 netmask 255.255.255.0 broadcast 192.168.42.255
inet6 fe80::20a:faff:fe24:296d prefixlen 64 scopeid 0x20<link>
ether 00:0a:fa:24:29:6d txqueuelen 1000 (Ethernet)
RX packets 111 bytes 10070 (9.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 90 (90.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
So as you can see 111 packets have been received, but only 1 transmitted. If I run tcpdump
then I see perfectly valid packets coming in, but nothing going out, even when a reply to an incoming packet would be expected. For example, here is two different machines, one with the ten64 in its ARP cache, the other one not, trying to ping the machine:
12:08:40.459261 IP 192.168.42.40 > 192.168.42.10: ICMP echo request, id 45866, seq 1, length 64
12:08:40.854371 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 8000.2c:c8:1b:44:85:88.8002, length 36
12:08:41.484295 IP 192.168.42.40 > 192.168.42.10: ICMP echo request, id 45866, seq 2, length 64
12:08:42.508192 IP 192.168.42.40 > 192.168.42.10: ICMP echo request, id 45866, seq 3, length 64
12:08:42.854096 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 8000.2c:c8:1b:44:85:88.8002, length 36
12:08:43.531942 IP 192.168.42.40 > 192.168.42.10: ICMP echo request, id 45866, seq 4, length 64
12:08:44.555376 IP 192.168.42.40 > 192.168.42.10: ICMP echo request, id 45866, seq 5, length 64
12:09:10.850176 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 8000.2c:c8:1b:44:85:88.8002, length 36
12:09:22.850911 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 8000.2c:c8:1b:44:85:88.8002, length 36
12:09:22.886453 ARP, Request who-has 192.168.42.10 tell 192.168.42.37, length 46
12:09:23.908819 ARP, Request who-has 192.168.42.10 tell 192.168.42.37, length 46
No reply is seen to either the ICMP echo request or the ARP request, even at the local level. The TX counter in ifconfig
remains at 1.
So it would appear that the TX queue gets “stuck” somehow. Any ideas on where to start looking for this bug?
Thanks