I've got a situation where I'm seeing a series of jam fragments lasting a total of about 50 ms. I haven't checked the spec but it seems to me that this is a *really* long time.
Here's the setup: I'm working on an embedded system. My device has a 10/100 port and it's connected to a 10/100 dual-speed hub (Netgear DS516). A second port on the hub is connected to a Linux box. A third port is connected to a switch that's connected to a larger test network. Everything is conecting at 100 Mbps.
When my device powers up, it loads an image from the Linux box. Typically, part-way through loading the image, it sees an excessive number of collisions (16) trying to transmit a frame and gives up. When I look at the MII bus between the MAC and PHY using a logic analyzer, I see a long series of jam fragments, each one lasting about
121 us, with about 930 ns between them, for a total of about 50 ms. Between jam fragments, my device tries to transmit its frame, but everytime it starts there's another jam fragment starting at the same time. My device backs off and retries 15 times over a span of about 18 ms, but every time it gets hammered by a jam fragment.I'm assuming these are jam fragments. Every nibble on the MII bus is 5 while data is valid.
In addition to the Netgear, I've also seen this, with just a slight variation, using a D-Link EFAH16W. The variation is that some of the jam fragments have a pattern of 0x43 but most have 0x55, whereas with the Netgear all of the fragments have 0x55 as the pattern.
If I disconnect the switch from the hub so that my device and the Linux box are the only devices connected, then everything works beautifully and I get no collisions or errors or jamming at all. It's only when I have the switch (with lots of other devices behind it) connected to my hub that problems occur. There isn't a lot of traffic coming from the switch though, mostly ARP requests and other broadcasts.
Can anyone explain why I see this long period of jam fragments? Collisions shouldn't normally cause jamming for this long, right? Could it be flow control?
Any advice is appreciated. I can provide more info if needed. Thanks.
-cb