On Wed, Sep 29, 2010 at 03:52:15PM +1000, Michal Simek wrote: > Upcomming Microblaze is little endian that's why is necessary > to fix protocol and length loading. > > Signed-off-by: Michal Simek <[email protected]> > CC: "David S. Miller" <[email protected]> > CC: Grant Likely <[email protected]> > CC: Eric Dumazet <[email protected]> > CC: [email protected] > CC: [email protected] > CC: [email protected]
This should go via davem, but it looks correct to me. Acked-by: Grant Likely <[email protected]> > --- > drivers/net/xilinx_emaclite.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c > index 71122ee..533ebb1 100644 > --- a/drivers/net/xilinx_emaclite.c > +++ b/drivers/net/xilinx_emaclite.c > @@ -430,8 +430,8 @@ static u16 xemaclite_recv_data(struct net_local *drvdata, > u8 *data) > } > > /* Get the protocol type of the ethernet frame that arrived */ > - proto_type = ((in_be32(addr + XEL_HEADER_OFFSET + > - XEL_RXBUFF_OFFSET) >> XEL_HEADER_SHIFT) & > + proto_type = ((ntohl(in_be32(addr + XEL_HEADER_OFFSET + > + XEL_RXBUFF_OFFSET)) >> XEL_HEADER_SHIFT) & > XEL_RPLR_LENGTH_MASK); > > /* Check if received ethernet frame is a raw ethernet frame > @@ -439,9 +439,9 @@ static u16 xemaclite_recv_data(struct net_local *drvdata, > u8 *data) > if (proto_type > (ETH_FRAME_LEN + ETH_FCS_LEN)) { > > if (proto_type == ETH_P_IP) { > - length = ((in_be32(addr + > + length = ((ntohl(in_be32(addr + > XEL_HEADER_IP_LENGTH_OFFSET + > - XEL_RXBUFF_OFFSET) >> > + XEL_RXBUFF_OFFSET)) >> > XEL_HEADER_SHIFT) & > XEL_RPLR_LENGTH_MASK); > length += ETH_HLEN + ETH_FCS_LEN; > -- > 1.5.5.1 > _______________________________________________ devicetree-discuss mailing list [email protected] https://lists.ozlabs.org/listinfo/devicetree-discuss
