Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jun 2007 10:24:56 +0100
From:      Doug Rabson <dfr@rabson.org>
To:        freebsd-firewire@freebsd.org
Cc:        Hidetoshi Shimokawa <simokawa@freebsd.org>
Subject:   Re: [CFT] MPSAFE firewire
Message-ID:  <200706291024.56591.dfr@rabson.org>
In-Reply-To: <626eb4530706060746u44226cfajcedb3e169996a51a@mail.gmail.com>
References:  <626eb4530706060746u44226cfajcedb3e169996a51a@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 06 June 2007, Hidetoshi Shimokawa wrote:
> I have just committed MPSAFE(Giant free) firewire driver to -current.
> If you have any problem, please let me know.

I've been looking through the code and I have a few questions.

In fwohci_rbuf_update(), you only call FW_GLOCK() if the FWXFERQ_HANDLER flag is zero. Doesn't this cause problems for the if_fwip driver (the only one to set this flag)? As far as I can see, if this flag is set, there is no mutex protection for any of the dma queues. Shouln't FW_GLOCK be used always? Also, additional protection is needed in fwip_stream_input where it manipulates the stvalid and stfree queues.

I'm a bit confused about the async read path too. I'm looking at the code in fwohci_arcv() and I can't see any mutex protection in this function while it manipulates the buffers. Is this correct? I see some fossil use of splfw() here which is why I ask. Following the input path back to the fwip driver again, I can't see any mutex protection for the driver's unicast packet input queues.

The last possible problem I noticed reading through the code is that there is no mutex protection of the fragmented packet reassembly queues in firewire_input_fragment. Perhaps the fw_com structure should have a mutex pointer in it which can be initialised to the if_fwip code's mutex and used in this case.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200706291024.56591.dfr>