Re: [RFC] vtunerc: virtual DVB device - is it ok to NACK driver becauseof worrying about possible misusage?

From: Mauro Carvalho Chehab
Date: Tue Dec 06 2011 - 08:23:16 EST


On 05-12-2011 22:07, HoP wrote:
I doubt that scan or w_scan would support it. Even if it supports, that
would mean that,
for each ioctl that would be sent to the remote server, the error code would
take 480 ms
to return. Try to calculate how many time w_scan would work with that. The
calculus is easy:
see how many ioctl's are called by each frequency and multiply by the number
of frequencies
that it would be seek. You should then add the delay introduced over
streaming the data
from the demux, using the same calculus. This is the additional time over a
local w_scan.

A grouch calculus with scandvb: to tune into a single DVB-C frequency, it
used 45 ioctls.
Each taking 480 ms round trip would mean an extra delay of 21.6 seconds.
There are 155
possible frequencies here. So, imagining that scan could deal with 21.6
seconds of delay
for each channel (with it doesn't), the extra delay added by it is 1 hour
(45 * 0.48 * 155).

On the other hand, a solution like the one described by Florian would
introduce a delay of
480 ms for the entire scan to happen, as only one data packet would be
needed to send a
scan request, and one one stream of packets traveling at 10GB/s would bring
the answer
back.

Andreas was excited by your imaginations and calculations, but not me.
Now you again manifested you are not treating me as partner for discussion.
Otherwise you should try to understand how-that-ugly-hack works.
But you surelly didn't try to do it at all.

How do you find those 45 ioctls for DVB-C tune?

With strace. See how many ioctl's are called for each tune. Ok, perhaps scandvb
is badly written, but if your idea is to support 100% of the applications, you
should be prepared for badly written applications.

$strace -e ioctl scandvb dvbc-teste
scanning dvbc-teste
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
ioctl(3, FE_GET_INFO, 0x60a640) = 0
initial transponder 573000000 5217000 0 5
tune to: 573000000:INVERSION_AUTO:5217000:FEC_NONE:QAM_256
ioctl(3, FE_SET_FRONTEND, 0x7fff5f7f2cd0) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(4, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(5, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(6, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(7, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(8, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(9, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(10, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(11, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(12, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(13, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(14, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(15, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(16, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(17, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(18, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(19, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(20, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(21, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(22, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(23, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(24, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(4, DMX_STOP, 0x1) = 0
ioctl(15, DMX_STOP, 0x1) = 0
ioctl(11, DMX_STOP, 0x1) = 0
ioctl(22, DMX_STOP, 0x1) = 0
ioctl(17, DMX_STOP, 0x1) = 0
ioctl(16, DMX_STOP, 0x1) = 0
0x0000 0x0004: pmt_pid 0x0108 (null) -- SBT (running)
0x0000 0x0005: pmt_pid 0x0250 (null) -- Globo (running)
0x0000 0x0007: pmt_pid 0x0128 (null) -- Record (running)
0x0000 0x000d: pmt_pid 0x0118 (null) -- Band (running)
0x0000 0x002e: pmt_pid 0x0148 (null) -- Cartoon Network (running, scrambled)
0x0000 0x0030: pmt_pid 0x0158 (null) -- TNT (running, scrambled)
0x0000 0x0039: pmt_pid 0x0168 (null) -- Boomerang (running, scrambled)
0x0000 0x0090: pmt_pid 0x0178 (null) -- DW-TV (running, scrambled)
0x0000 0x0098: pmt_pid 0x0188 (null) -- BBC World News (running, scrambled)
0x0000 0x00cb: pmt_pid 0x01a8 (null) -- NET Games (running)
0x0000 0x012c: pmt_pid 0x0198 (null) -- NET Mïsica (running, scrambled)
0x0000 0x0133: pmt_pid 0x0022 (null) -- Pagode (running)
0x0000 0x0135: pmt_pid 0x0020 (null) -- Axï (running)
0x0000 0x0146: pmt_pid 0x0023 (null) -- Festa (running)
0x0000 0x0156: pmt_pid 0x0024 (null) -- Trilhas Sonoras (running)
0x0000 0x015b: pmt_pid 0x0021 (null) -- Radio Multishow (running)
0x0000 0x0320: pmt_pid 0x02c4 (null) -- 01070136 (running)
0x0000 0x0321: pmt_pid 0x02c5 (null) -- 01070236 (running)
ioctl(5, DMX_STOP, 0x1) = 0
ioctl(24, DMX_STOP, 0x1) = 0
ioctl(23, DMX_STOP, 0x1) = 0
ioctl(7, DMX_STOP, 0x1) = 0
ioctl(19, DMX_STOP, 0x1) = 0
ioctl(18, DMX_STOP, 0x1) = 0
ioctl(21, DMX_STOP, 0x1) = 0
ioctl(12, DMX_STOP, 0x1) = 0
ioctl(13, DMX_STOP, 0x1) = 0
ioctl(20, DMX_STOP, 0x1) = 0
ioctl(10, DMX_STOP, 0x1) = 0
ioctl(9, DMX_STOP, 0x1) = 0
ioctl(8, DMX_STOP, 0x1) = 0
ioctl(14, DMX_STOP, 0x1) = 0
Network Name 'NET SJC'
ioctl(6, DMX_STOP, 0x1) = 0
tune to: 591000000:INVERSION_AUTO:5217000:FEC_3_4:QAM_256
ioctl(3, FE_SET_FRONTEND, 0x7fff5f7f2cd0) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(4, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(5, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(6, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(7, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(8, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(9, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(10, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(11, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(12, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(13, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(14, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(15, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(16, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(17, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(18, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(19, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(4, DMX_STOP, 0x1) = 0
ioctl(9, DMX_STOP, 0x1) = 0
ioctl(10, DMX_STOP, 0x1) = 0
ioctl(12, DMX_STOP, 0x1) = 0
ioctl(11, DMX_STOP, 0x1) = 0
ioctl(14, DMX_STOP, 0x1) = 0
ioctl(8, DMX_STOP, 0x1) = 0
ioctl(7, DMX_STOP, 0x1) = 0
ioctl(13, DMX_STOP, 0x1) = 0
ioctl(15, DMX_STOP, 0x1) = 0
0x0090 0x0029: pmt_pid 0x0468 (null) -- GNT (running, scrambled)
0x0090 0x002a: pmt_pid 0x0458 (null) -- Multishow (running, scrambled)
0x0090 0x002f: pmt_pid 0x0077 (null) -- Warner Channel (running, scrambled)
0x0090 0x0042: pmt_pid 0x0478 (null) -- Canal Brasil (running, scrambled)
0x0090 0x0046: pmt_pid 0x0438 (null) -- ESPN Brasil (running, scrambled)
0x0090 0x0049: pmt_pid 0x0428 (null) -- HBO2 (running, scrambled)
0x0090 0x007c: pmt_pid 0x0488 (null) -- Premiere FC (running, scrambled)
0x0090 0x008c: pmt_pid 0x0108 (null) -- RAI (running, scrambled)
0x0090 0x0099: pmt_pid 0x0408 (null) -- CNN International (running, scrambled)
0x0090 0x013e: pmt_pid 0x0021 (null) -- Anos 80 (running)
0x0090 0x014d: pmt_pid 0x0022 (null) -- Blues (running)
0x0090 0x014e: pmt_pid 0x0023 (null) -- Rhythm & Blues (running)
0x0090 0x014f: pmt_pid 0x0020 (null) -- Standards (running)
ioctl(5, DMX_STOP, 0x1) = 0
ioctl(17, DMX_STOP, 0x1) = 0
ioctl(18, DMX_STOP, 0x1) = 0
ioctl(16, DMX_STOP, 0x1) = 0
ioctl(19, DMX_STOP, 0x1) = 0
Network Name 'NET SJC'
ioctl(6, DMX_STOP, 0x1) = 0
tune to: 597000000:INVERSION_AUTO:5217000:FEC_3_4:QAM_256
ioctl(3, FE_SET_FRONTEND, 0x7fff5f7f2cd0) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(4, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(5, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(6, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(7, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(8, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(9, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(10, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(11, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(12, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(13, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(14, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(15, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(16, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(17, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(18, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(19, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(4, DMX_STOP, 0x1) = 0
ioctl(9, DMX_STOP, 0x1) = 0
ioctl(19, DMX_STOP, 0x1) = 0
ioctl(18, DMX_STOP, 0x1) = 0
ioctl(7, DMX_STOP, 0x1) = 0
0x0091 0x0010: pmt_pid 0x0e08 (null) -- TV Senado (running)
0x0091 0x0013: pmt_pid 0x0518 (null) -- Rede Vida (running)
0x0091 0x0023: pmt_pid 0x0508 (null) -- Canal Rural (running, scrambled)
0x0091 0x0038: pmt_pid 0x0578 (null) -- Disney XD (running, scrambled)
0x0091 0x003d: pmt_pid 0x0558 (null) -- Telecine Premium (running, scrambled)
0x0091 0x0041: pmt_pid 0x0568 (null) -- Telecine Cult (running, scrambled)
0x0091 0x0043: pmt_pid 0x0588 (null) -- Disney Channel (running, scrambled)
0x0091 0x005d: pmt_pid 0x0528 (null) -- Record News (running, scrambled)
0x0091 0x008d: pmt_pid 0x138f (null) -- TV5 (running, scrambled)
0x0091 0x0134: pmt_pid 0x0020 (null) -- Samba de Raiz (running)
0x0091 0x0149: pmt_pid 0x0021 (null) -- New Age (running)
0x0091 0x0151: pmt_pid 0x0022 (null) -- Jazz Contemporaneo (running)
0x0091 0x0152: pmt_pid 0x0023 (null) -- Mïsica Clïssica (running)
ioctl(5, DMX_STOP, 0x1) = 0
ioctl(16, DMX_STOP, 0x1) = 0
ioctl(14, DMX_STOP, 0x1) = 0
ioctl(12, DMX_STOP, 0x1) = 0
ioctl(10, DMX_STOP, 0x1) = 0
ioctl(8, DMX_STOP, 0x1) = 0
ioctl(17, DMX_STOP, 0x1) = 0
ioctl(11, DMX_STOP, 0x1) = 0
ioctl(15, DMX_STOP, 0x1) = 0
ioctl(13, DMX_STOP, 0x1) = 0
Network Name 'NET SJC'
ioctl(6, DMX_STOP, 0x1) = 0
tune to: 603000000:INVERSION_AUTO:5217000:FEC_3_4:QAM_256
ioctl(3, FE_SET_FRONTEND, 0x7fff5f7f2cd0) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(4, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(5, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(6, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(7, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(8, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(9, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(10, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(11, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(12, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(13, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(14, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(15, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(16, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(17, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(18, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(19, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(4, DMX_STOP, 0x1) = 0
ioctl(8, DMX_STOP, 0x1) = 0
ioctl(14, DMX_STOP, 0x1) = 0
ioctl(7, DMX_STOP, 0x1) = 0
ioctl(9, DMX_STOP, 0x1) = 0
ioctl(10, DMX_STOP, 0x1) = 0
ioctl(17, DMX_STOP, 0x1) = 0
ioctl(18, DMX_STOP, 0x1) = 0
ioctl(12, DMX_STOP, 0x1) = 0
ioctl(13, DMX_STOP, 0x1) = 0
0x0092 0x0028: pmt_pid 0x0668 (null) -- Globo News (running, scrambled)
0x0092 0x002b: pmt_pid 0x0658 (null) -- Universal Channel (running, scrambled)
0x0092 0x002c: pmt_pid 0x0628 (null) -- Nickelodeon (running, scrambled)
0x0092 0x003e: pmt_pid 0x0608 (null) -- Telecine Action (running, scrambled)
0x0092 0x003f: pmt_pid 0x0618 (null) -- Telecine Touch (running, scrambled)
0x0092 0x0058: pmt_pid 0x0688 (null) -- VH1 Mega Hits (running, scrambled)
0x0092 0x0059: pmt_pid 0x0648 (null) -- VH1 (running, scrambled)
0x0092 0x007e: pmt_pid 0x139a (null) -- Aquecimento BBB12 (running, scrambled)
0x0092 0x011d: pmt_pid 0x0678 (null) -- Sexy Hot (running, scrambled)
0x0092 0x0131: pmt_pid 0x0024 (null) -- Rïdio Kids (running)
0x0092 0x0137: pmt_pid 0x0020 (null) -- Forrï (running)
0x0092 0x0148: pmt_pid 0x0023 (null) -- Lounge (running)
0x0092 0x0153: pmt_pid 0x0022 (null) -- Mïsica Orquestrada (running)
ioctl(5, DMX_STOP, 0x1) = 0
ioctl(11, DMX_STOP, 0x1) = 0
ioctl(19, DMX_STOP, 0x1) = 0
ioctl(15, DMX_STOP, 0x1) = 0
Network Name 'NET SJC'
ioctl(16, DMX_STOP, 0x1) = 0
ioctl(6, DMX_STOP, 0x1) = 0
tune to: 609000000:INVERSION_AUTO:5217000:FEC_3_4:QAM_256
ioctl(3, FE_SET_FRONTEND, 0x7fff5f7f2cd0) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(3, FE_READ_STATUS, 0x7fff5f7f2cfc) = 0
ioctl(4, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(5, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(6, DMX_SET_FILTER, 0x7fff5f7f1ad0) = 0
ioctl(7, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(8, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(9, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(10, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(11, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(12, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(13, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(14, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(15, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(16, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(17, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(18, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(19, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(20, DMX_SET_FILTER, 0x7fff5f7f1910) = 0
ioctl(4, DMX_STOP, 0x1) = 0
ioctl(9, DMX_STOP, 0x1) = 0
ioctl(17, DMX_STOP, 0x1) = 0
ioctl(20, DMX_STOP, 0x1) = 0
ioctl(10, DMX_STOP, 0x1) = 0
ioctl(19, DMX_STOP, 0x1) = 0
ioctl(13, DMX_STOP, 0x1) = 0
ioctl(14, DMX_STOP, 0x1) = 0
ioctl(16, DMX_STOP, 0x1) = 0
ioctl(15, DMX_STOP, 0x1) = 0
ioctl(7, DMX_STOP, 0x1) = 0
ioctl(18, DMX_STOP, 0x1) = 0
ioctl(11, DMX_STOP, 0x1) = 0
ioctl(8, DMX_STOP, 0x1) = 0
ioctl(12, DMX_STOP, 0x1) = 0
0x0093 0x000a: pmt_pid 0x0708 (null) -- NET Cidade (running)
0x0093 0x0012: pmt_pid 0x0728 (null) -- Rede Mundial (running)
0x0093 0x0014: pmt_pid 0x0738 (null) -- Rede 21 (running, scrambled)
0x0093 0x0015: pmt_pid 0x011f (null) -- TV Justiïa (running)
0x0093 0x0026: pmt_pid 0x0758 (null) -- SporTV2 (running, scrambled)
0x0093 0x0027: pmt_pid 0x0748 (null) -- SporTV (running, scrambled)
0x0093 0x0036: pmt_pid 0x0768 (null) -- FX (running, scrambled)
0x0093 0x0052: pmt_pid 0x0788 (null) -- The History Channel (running, scrambled)
0x0093 0x0060: pmt_pid 0x0778 (null) -- Fox Life (running, scrambled)
0x0093 0x0136: pmt_pid 0x0020 (null) -- Sertanejo (running)
0x0093 0x0140: pmt_pid 0x0024 (null) -- Rock Clïssico (running)
0x0093 0x0143: pmt_pid 0x0022 (null) -- Reggae (running)
0x0093 0x0147: pmt_pid 0x0023 (null) -- Eletrïnica (running)
0x0093 0x015d: pmt_pid 0x0021 (null) -- CBN (running)
ioctl(5, DMX_STOP, 0x1) = 0
Network Name 'NET SJC'
ioctl(6, DMX_STOP, 0x1) = 0
...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/