IXP425: help on HSS channelized service

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Nov 26 09:49:56 EST 2009


On Thu, Nov 26, 2009 at 04:43:07PM +0200, Juergen Schindele wrote:
> 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];

If these structures are sensitive to the byte-endian, they should be
defined using [bl]e(32|16|8) so that sparse can check that you're
using appropriate cpu_to_xxx() and xxx_to_cpu() endian conversions on
them.



More information about the linux-arm-kernel mailing list