From: Marko Ristola <marko.ristola@kolumbus.fi>
To: Andreas Oberritter <obi@linuxtv.org>
Cc: "Mauro Carvalho Chehab" <mchehab@redhat.com>,
"Linux Media Mailing List" <linux-media@vger.kernel.org>,
"Bjørn Mork" <bjorn@mork.no>
Subject: Re: Pending dvb_dmx_swfilter(_204)() patch tested enough
Date: Wed, 30 Mar 2011 00:38:27 +0300 [thread overview]
Message-ID: <4D925153.30403@kolumbus.fi> (raw)
In-Reply-To: <4D9079FD.1060303@linuxtv.org>
Hello Andreas and Mauro
Thank you for looking at the patch.
Than you Mauro for giving the likely() unlikely() GCC assembly example
and remind of scripts/checkpatch.pl.
28.03.2011 15:07, Andreas Oberritter wrote:
> Hello Marko,
>
> On 03/26/2011 09:20 PM, Marko Ristola wrote:
>> Following patch has been tested enough since last Summer 2010:
>>
>> "Avoid unnecessary data copying inside dvb_dmx_swfilter_204() function"
>> https://patchwork.kernel.org/patch/118147/
>> It modifies both dvb_dmx_swfilter_204() and dvb_dmx_swfilter() functions.
>
> sorry, I didn't know about your patch. Can you please resubmit it with
> the following changes?
>
> - Don't use camelCase (findNextPacket)
I'll rename it as find_next_packet().
>
> - Remove disabled printk() calls.
I'll do that.
>
> - Only one statement per line.
> if (unlikely(lost = pos - start)) {
> while (likely((p = findNextPacket(buf, p, count, pktsize))< count)) {
I'll alter while() line as:
while (1) {
p = find_next_packet(buf, p, count, pktsize);
if (p >= count)
break;
if (count - p < pktsize)
break;
>
> - Add white space between while and the opening brace.
> while(likely(pos< count)) {
Thanks.
>
> - Use unsigned data types for pos and pktsize:
> static inline int findNextPacket(const u8 *buf, int pos, size_t count,
> const int pktsize)
I'll change them.
>
> The CodingStyle[1] document can serve as a guideline on how to properly
> format kernel code.
Thanks. I have read it, but reading again is always good for learning.
>
> Does the excessive use of likely() and unlikely() really improve the
> performance or is it just a guess?
I'll try to measure performance difference next weekend: I haven't tested the effect
on likely/unlikely operations. I have tested the effect of the whole patch only.
I selected likely and unlikely() sentences very carefully, so they should be correct.
I'm not sure if recovering a packet by backtracking is worth it on my patch:
If recovered packets are typically discarded by dvb_dmx_swfilter_packet() later, I'll drop the code.
Here is a description of the problem as I saw it last Summer:
My DVB card seemed to lose a few packets somewhere in the DMA transfer buffer and then had a short packet
(less than 204 garbage bytes) and then normal good packets.
Backtracking use case (deliver 16K bytes of data for dvb_dmx_swfilter_204() per call):
1. DVB card loses a few packets.
2. DVB card delivers less than 204 bytes garbage, containing packet start byte in the middle.
3. dvb_dmx_swfilter_204() finds start byte from garbage. Deliver 204 sized garbage packet into dvb_dmx_swfilter_packet().
4. dvb_dmx_swfilter_204() detects that packet at (3) was garbage. One good packet can be restored by buffer backtracking.
5. dvb_dmx_swfilter_204() delivers restored packet into dvb_dmx_swfilter_packet().
6. dvb_dmx_swfilter_204() continues to deliver 204 sized packets into dvb_dmx_swfilter_packet().
I suspect that on (5), the restored packet is discarded by dvb_dmx_swfilter_packet() because of
packet counter sequencing error. There is no benefit with recovering the packet in this (typical) case.
dvb_dmx_swfilter_packet() will discard packets until it finds a next group of packets with group
start identifier. Is this correct?
Regards,
Marko Ristola
>
> Regards,
> Andreas
>
> [1]
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/CodingStyle
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
prev parent reply other threads:[~2011-03-29 21:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-26 20:20 Pending dvb_dmx_swfilter(_204)() patch tested enough Marko Ristola
2011-03-28 12:07 ` Andreas Oberritter
2011-03-28 21:58 ` Mauro Carvalho Chehab
2011-03-29 21:38 ` Marko Ristola [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D925153.30403@kolumbus.fi \
--to=marko.ristola@kolumbus.fi \
--cc=bjorn@mork.no \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@redhat.com \
--cc=obi@linuxtv.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox