Hello,
I am developing an application to measure the performance of an IP
communications network, accounting for packet loss rate and transmission
delay values between any two sites on a net. This work resembles that of
www.advanced.org and is also based on IETF's IPPM initiative.
One of the goals is to insert a GPS timestamp on the packets to be
transmitted as late as possible before they are put on the wire. This
means I cannot do this job on the application level. Instead, this has
to be done on the ethernet driver level in order to achieve the maximum
accuracy, specially when the measurement machine is under heavy load.
I've studied the "if_fxp.c" (Intel ethernet driver) source code plus
Stevens' TCP Illustrated vol. 2, which helped me get a good
understanding of the data structures manipulated by this code. My aim
now is to insert the GPS timestamps on the packets to be transmitted
right before they go to the interface.
To do this, I am trying to modify the driver source code to achieve the
following objectives: (1) read the contents of the mbufs in order to
identify the ones that hold the packets to be transmitted, and (2)
insert the timestamps on those ellegible for so.
However, any access to mbufs from inside the driver causes an error
message "page fault while in kernel mode" to be displayed the new kernel
is booted. It then enters a loop, trying to reboot forever.
I guess the mbufs are in an area somehow protected by the kernel, which
prevents even the driver to have access to it. May question is: how can
I go around this problem and be able to read and change the contents of
the mbufs from inside the driver ?
Thank you very much.
Marcus.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message