Hi

I have written a Ethernet device driver for Broadcom's BCM 4713 card on LinkSys 
router. It is for an Embedded OS. I have the driver following the 
implementation of OpenWrt Linux's b44 driver. My driver currently transmits and 
receives packets successfully. However, couple of issues concern me. I will be 
glad if someone can answer.

When I transmit packet, I was initially getting totally random data on the 
receiving side. Both my transmitting and receiving routers had our OS and my 
driver running and both are running in promiscuous mode. 

Now, initially when I was sending ARP request packet with 60 bytes of data (I 
did not reserve any space for CRC, just allocated 60 byte buffer), my receiving 
end was getting 60 bytes of data but the content of the packets were totally 
random and varied from one run to another. 

After that I disabled CRC in the card by commenting out the line - 
 
bw32(B44_MAC_CTRL, val | MAC_CTRL_CRC32_ENAB); /* enable crc32 */

After that the receiver started to receive packets properly. No corruption, no 
other change in any part of the driver.

My questions are - 

1. Why did I have to disable CRC and what is its relation with getting random 
packet or correct packets? Linux driver has that line in place. Do I have to 
compute CRC is software or something if I enable that option?

2. Is CRC checking done in card when a network card is set in promiscuous mode?

3. This Linksys router has a roboswitch for VLAN support. I have not programmed 
the roboswitch or VLAN. But I have noticed if I ping from openwrt linux, it 
sends ARP packets with VLAN TAG (0x81000001). On the receiving side, running my 
driver I receive the ARP packet with VLAN tag removed. How does the roboswitch 
work if it is not programmed. In other words, who removes the vlan tag?

Thanks,

-Meraj
Web: http://geektrap.net





       
---------------------------------
Get easy, one-click access to your favorites.  Make Yahoo! your homepage.

Reply via email to