Quantcast
Channel: Intel Communities : Discussion List - Wired Ethernet
Viewing all articles
Browse latest Browse all 4405

Help with 82574 programming

$
0
0

I have an embedded device on which we use the 82574L. The old version used an Atom 3xxx processor with a PCI bus and the network on an card on the bus. Everything works fine. We have updated to an I7 and PCIe (both are PC104 boards). This is board is not running an OS.

Receiving data works fine. When sending data packets, I am having problems.

 

Following the data sheet, I setup a transmit ring queue of N descriptors. As I setup each descriptor, I set the tail pointer to beyond the next descriptor.

For the first N tries, it works fine. When the queue rolls over, that buffer never completes.

 

For N=3, I fill desc[0] and set tail to 1, get status complete in status field                    readback of head register: 1

                 fill desc[1] and set tail to 2, get status complete in status field                    readback of head register: 2

                 fill desc[2] and set tail to 0, get status complete in status field                    readback of head register: 3

                 fill desc[0] and set tail to 1, status never changes, packet is not sent         readback of head register: 3

 

The thing that looks strange is that the I would assume the head register should be wrapping back to 0, but I don't see that.

Note I am NOT writing to the head register (except at initialization time), just reading it.

In the test, there is never more than 1 packet being processed at any one time.

 

Any hints would be appreciated

 

Martin


Viewing all articles
Browse latest Browse all 4405

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>