Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fix for the data reception problem



Ok, i took some time to dig through the sources of driver 0.7 and found
the bug which occured now. This bug is existant in old drivers too(!),
but wasn't catched there (instead some internal data structures where
used using wrong pointers, ouch!)

The calculation of the bit filter in use in function debiirq, file
dvb.c is somewhat wrong. I get filters 128, 130 ... where the maximum
allowed value is 31 (the card can only handle 32 bitfilters). The new
driver catches this bug in line 575
                if ((handle>=MAXFILT) || !dvb->hfilter[handle])
                        break;
where the old driver just accessed internal structures using this wrong
index
                if (dvb->filter_flags[handle]&FILTER_MEM)
[...]



As the bitfilter can go up to 31 maximum as indicated above, i changed
line 516 in dvb.c to read
        int handle=(type>>8) & 0x1F;
instead of
        int handle=(type>>8);


This fixes the bug for me, although i'm not absolutely sure if this
really fixes the source of the problems or probably only the place
where it occures.

Our friends at convergence need to check this.

-- 
Greetings
Michael


Home | Main Index | Thread Index