Re: 1394 Async Request Rx (BUSY_X blocking)

From: Raj (r_konjeti_at_mailcity.com)
Date: 07/08/04


Date: 8 Jul 2004 13:48:09 -0700

what is the async address range that imply "no response".
I am not getting speed above 70 Mbps in async because of response
mode,
I think. This will be useful to know. AFAIK, we have to set "unified
write" request in the OHCI registers(which we dont have access to
through Microsoft driver) to avoid write response.

Thanks.

"Bill McKenzie" <bill.mckenzie@nospam.conexant.com> wrote in message news:<OTjm2uCZEHA.228@TK2MSFTNGP10.phx.gbl>...
> Interesting, but not surprising. I would report this to 1394@microsoft.com
> and see what they say. It might be interesting to post what they tell you
> as well.
>
> --
> Bill McKenzie
> Software Engineer - Prism 802.11 Wireless Solutions
> Conexant Systems, Inc.
>
>
> "Steve" <Steve@discussions.microsoft.com> wrote in message
> news:F936AB39-CD7D-43BD-9B2E-A32D6FBD840D@microsoft.com...
> > Hi there,
> >
> > we encountered a new problem. It is related to 1394 asynch transfers. The
> situation is as follows: For some customers we realized solutions that are
> based on high-bandwidth asynch transfers. Our driver creates one or more
> address ranges and the device sends asynch write block requests to those
> ranges. For performance reasons we use an address range that does not imply
> a response packet. With this approach we can get transfer rates of about 34
> Mbytes/s.
> >
> > One customer's setup uses transfers of about 22 Mbytes/s. On the PC there
> is an application that processes the received data and writes the results to
> harddisk. In this scenario we observe the problem that the ohci1394 driver
> seems not to be stable if there is additional CPU load on the machine
> (caused by data processing and recording).
> >
> > We analyzed the problem and the results are as follows: Normally, the
> ohci1394 driver is able to process a high rate of asynch write block request
> packets. It seems to use 4 buffers of 8KB each to receive asynch requests
> from the OHCI chip (by DMA). The chip issues an interrupt if an asynch
> packet is received. From its DPC the driver calls a routine that parses the
> packets received in the 4 DMA buffers.
> >
> > When there is some CPU load, especially if there are other DPCs running on
> the machine that consume CPU time, then the packet parser routine seems to
> corrupt its internal data structures. Then the routine tries to read a
> packet header from the DMA buffer at a location where no packet start is
> present. The routine seems to do a switch/case on the TCODE first. Because
> the routine tries to interpret a random DWORD as a packet header it executes
> the default case which does nothing but return. As a result, the parser
> hangs. No further packets will be processed. The OHCI chip fills the 4
> buffers completely and then the DMA context stops. On the 1394 bus we see
> that every further asynch write request is ack'ed with busy_X. This is
> because the DMA context has stopped and has a FIFO overflow condition now.
> >
> > The problem does not go away when a bus reset occurs or if we delete and
> re-create the address ranges. We have to disable/enable the OHCI devnode in
> Device Manager in order to get the driver working again.
> >
> > We tested on XP SP1.
> >



Relevant Pages

  • Re: 1394 Async Request Rx (BUSY_X blocking)
    ... I am not getting speed above 70 Mbps in async because of response ... through Microsoft driver) to avoid write response. ... > packet is received. ... From its DPC the driver calls a routine that parses the ...
    (microsoft.public.windowsxp.device_driver.dev)
  • Re: Changes in the network interface queueing handoff model
    ... bouncing around for some time is a restructuring of the network interface packet transmission API to reduce the number of locking operations and allow network device drivers increased control of the queueing behavior. ... to "start" output by the driver. ... encapsulation and wrapping, and notifies the hardware. ... The ifnet layer send queue is becoming decreasingly useful over time. ...
    (freebsd-arch)
  • Re: Changes in the network interface queueing handoff model
    ... bouncing around for some time is a restructuring of the network interface packet transmission API to reduce the number of locking operations and allow network device drivers increased control of the queueing behavior. ... to "start" output by the driver. ... encapsulation and wrapping, and notifies the hardware. ... The ifnet layer send queue is becoming decreasingly useful over time. ...
    (freebsd-net)
  • PATCH: Remove file riowinif.h from rio driver (unused file)
    ... -/* The RUP (Remote Unit Port) structure relates to the Remote Terminal Adapters ... - CONFIG is sent from the driver to configure an already opened port. ... - Packet structure is same as OPEN. ... - of the specified port's RTA address space. ...
    (Linux-Kernel)
  • Re: Changes in the network interface queueing handoff model
    ... layer output routine via ifp->if_outputwith the ifnet pointer, packet, ... as ARP), and hands off to the ifnet driver via a call to IFQ_HANDOFF, ... encapsulation and wrapping, and notifies the hardware. ... The ifnet layer send queue is becoming decreasingly useful over time. ...
    (freebsd-arch)