IXP425: help on HSS channelized service

Juergen Schindele schindele at nentec.de
Thu Nov 26 09:43:07 EST 2009


Am Mittwoch, 25. November 2009 schrieb Krzysztof Halasa:
> The buffers have different structures for RX and TX.
This was a very good hint :-). I discovered that the 
"struct desc" used in the kernel mainline driver is quite 
different from the one used in INTEL code !?????.
When I replace the "struct desc" (see below) it works fine for me.
Isn't there a general problem with this driver when it works only 
for channelized mode (your case) ???
Has sombody made it working in HDLC_PIPE mode ????

here my changes:
I replaced 

struct desc {
        u32 next;               /* pointer to next buffer, unused */

#ifdef __ARMEB__
        u16 buf_len;            /* buffer length */
        u16 pkt_len;            /* packet length */
        u32 data;               /* pointer to data buffer in RAM */
        u8 status;
        u8 error_count;
        u16 __reserved;
#else
        u16 pkt_len;            /* packet length */
        u16 buf_len;            /* buffer length */
        u32 data;               /* pointer to data buffer in RAM */
        u16 __reserved;
        u8 error_count;
        u8 status;
#endif
        u32 __reserved1[4];
}

with 

struct desc {
#ifdef __ARMEB__
    u8   status;                /* status of packet desriptor */
    u8   error_count;           /* number of errors */
    u8   chain_count;           /* used for chained buffers otherwise 0 */
    u8   __reserved1;           /* reserved byte for word alignment */

    u16  pkt_len;               /* packet length payload */
    u16  __reserved2;           /* reserved short for word alignment */

    u32  head;                  /* pointer to first if chained buffers */
    u32  next;                  /* pointer to next if chained buffers */
    u32  data;                  /* pointer to data buffer in RAM */
    u32  buf_len;               /* total length of buffer in RAM */
#else
    u8   __reserved1;           /* reserved byte for word alignment */
    u8   chain_count;           /* used for chained buffers otherwise 0 */
    u8   error_count;           /* number of errors */
    u8   status;                /* status of packet desriptor */

    u16  __reserved2;           /* reserved short for word alignment */
    u16  pkt_len;               /* packet length payload */

    u32  head;                  /* pointer to first if chained buffers */
    u32  next;                  /* pointer to next if chained buffers */
    u32  data;                  /* pointer to data buffer in RAM */
    u32  buf_len;               /* total length of buffer in RAM */
#endif
    u32  __reserved3[2];        /* reserved to fill up */
}
 
--------------------------------------------------------------
Jürgen Schindele  
Software-Entwicklung

NENTEC Netzwerktechnologie GmbH
Greschbachstr. 12
76229 Karlsruhe
Deutschland
Telefon: +49 721 94249-51
Telefax: +49 721 94249-10
E-Mail:  schindele at nentec.de
WEB:     www.nentec.de
 
Geschäftsführung: Klaus Becker, Roland Knapp
Sitz der Gesellschaft: Karlsruhe
Handelsregister: Amtsgericht Mannheim HRB 107658
--------------------------------------------------------------



More information about the linux-arm-kernel mailing list