diff options
Diffstat (limited to 'recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch')
-rw-r--r-- | recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch new file mode 100644 index 0000000000..3d569015e6 --- /dev/null +++ b/recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch @@ -0,0 +1,41 @@ +little endian support + + ixp400_eth.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -2040,6 +2040,16 @@ static void rx_cb(UINT32 callbackTag, IX + skb->tail = skb->data + len; + skb->len = len; + ++#ifndef __ARMEB__ ++ { ++ /* Byte swap all words containing data from the buffer. */ ++ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3); ++ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3); ++ while (p < e) ++ *p = ntohl(*p), ++p; ++ } ++#endif ++ + #ifdef DEBUG_DUMP + skb_dump("rx", skb); + #endif +@@ -2431,6 +2441,16 @@ static int dev_hard_start_xmit(struct sk + return 0; + } + ++#ifndef __ARMEB__ ++ { ++ /* Byte swap all words containing data from the buffer. */ ++ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3); ++ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3); ++ while (p < e) ++ *p = ntohl(*p), ++p; ++ } ++#endif ++ + #ifdef DEBUG_DUMP + skb_dump("tx", skb); + #endif |