Altera_Forum
Honored Contributor
21 years agoSMC LAN91C111
Has anyone run into problems relating to byte order and or endian-ness using the SMC 91C111 ethernet chip with uClinux? I'm unable to ping my board at this point. For example, assume I want to ping my board, 00:01:02:03:04:05, from a linux box running ethereal, 06:07:08:09:10:11. In Ethereal, the packet looks as expected: Ethernet Destination & Source, followed by the IP Header, followed by 0x08 through 0x36, in ascending order. However, when I dump the packet in the smc_rcv routine (in the smc91111.c driver), the addresses come out as:
02:03:00:01:06:07 04:05:10:11:08:09 The IP Header information is similarly permuted. This would appear to be some kind of byte-order issue. However, the packet payload (0x08-0x36) remains in correct order on both sides. Plus, this should all be done in 32-bit reads, so that confuses me as well. I can get the OS to accept the packet by swapping around the address bytes to fix the observed 'incorrectness'. But, this is surely not the correct fix, and I'd imagine someone else must have encountered this(?). Thanks in advance, Ryan