Ethernet Device Driver: BCM 4713 Card

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux