Receiving jumbo frames
Viktor
vpenkoff at gmail.com
Fri Feb 7 08:45:45 UTC 2014
Hi, folks! I'm writing an extension functionality to not-yet published
network driver.
I'm receiving the typical ethernet frames without problems. Considering
the datasheet of the device,
I'm capable of receiving jumbo frames. When I try to do that, e.g. to
send jumbo frame of 8000 bytes, I'm receiving only a limited count of
them - 105, then the kernel crashes with the following message:
"panic: vm_fault: fault on nofault entry, addr: cfcec000".
I have inspected a kernel dump with kgdb and the problem occurs at the
function bus_dmamap_sync.
Some background information:
To enable the jumbo frame, one must set the appropriate register.
At the software level, a ring buffer with the descriptors is implemented.
The device, under which the driver runs, is arm-based.
The freebsd version is 8.0. The device uses SerialDMA queues for
transmitting and receiving.
To receive packets, the CPU must perform the following:
1. Prepare a linked list of descriptors
2. Configure a given queue with the address of the first descriptor
in the list,
3. enable SerialDMA;
With the transmission - I don't have any problems. The logic is the same
as by the reception of packets - ring buffer with descriptors.
Any ideas what can cause this type of crashes?
More information about the freebsd-drivers
mailing list