asterisk folk,

as the self-appointed maintainer for the freebsd 4.x branch of the zaptel drivers, i was looking through the code to figure out a possible bug which was disturbing me the last few days in connecting to an ericsson md110. the offending code in question is,

        for (x=0;x<sc->numspans;x++) {
                if (sc->t1e1 & (1 << x)) { /* WHY BITSHIFT x ? */
sc->tspans[x] = malloc(sizeof(struct t4_span) + sizeof(struct zt_chan) * 31, M_TDM, M_NOWAIT);
                        if (sc->tspans[x]) {
memset(sc->tspans[x], 0, sizeof(struct t4_span) + sizeof(struct zt_chan) * 31);
                                sc->tspans[x]->spantype = TYPE_E1;
                        }
        
                } else {
sc->tspans[x] = malloc(sizeof(struct t4_span) + sizeof(struct zt_chan) * 24, M_TDM, M_NOWAIT);
                        if (sc->tspans[x]) {
memset(sc->tspans[x], 0, sizeof(struct t4_span) + sizeof(struct zt_chan) * 24);
                                if (j1mode)
                                        sc->tspans[x]->spantype = TYPE_J1;
                                else
                                        sc->tspans[x]->spantype = TYPE_T1;
                        }

                }
                if (!sc->tspans[x])
                        return ENOMEM;
                sc->tspans[x]->spanflags |= flags;
        }

which occurs both in t4_init_one() and t1e1_sysctl() in the freebsd driver version of wct4xxp.c

look at the comment /* WHY BITSHIFT x ? */, and you'd see that the if() block is only executed when x==0 if t1e1=1 (as it should be if E1 is selected). hence, for subsequent spans, the else block will be executed which would set the spans for T1 (or J1, depending on j1mode) behaviour. the behaviour seems to be correct if t1e1=0, i.e it sets all spans as either T1 or J1.

i havent yet tested the code with the (1<<x) removed on a live E1, but before i did, i wondered if there was a reason for the bitshift and if this is really broken behaviour ?

additionally, this also occurs in the freebsd 5.x drivers. could someone let me know if this occurs within the cvs zaptel linux sources from digium as well ?

--
Regards,                           /\_/\   "All dogs go to heaven."
[EMAIL PROTECTED]                (0 0)    http://www.alphaque.com/
+==========================----oOO--(_)--OOo----==========================+
| for a in past present future; do                                        |
|   for b in clients employers associates relatives neighbours pets; do   |
|   echo "The opinions here in no way reflect the opinions of my $a $b."  |
| done; done                                                              |
+=========================================================================+
_______________________________________________
Asterisk-BSD mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-bsd

Reply via email to