MIPS: Octeon: Set up ethernet hardware for little endian
authorPaul Martin <paul.martin@codethink.co.uk>
Mon, 30 Mar 2015 16:00:59 +0000 (17:00 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 1 Apr 2015 15:22:14 +0000 (17:22 +0200)
Signed-off-by: Paul Martin <paul.martin@codethink.co.uk>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/9635/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/staging/octeon/ethernet-tx.c
drivers/staging/octeon/ethernet.c

index b7a7854..a078b90 100644 (file)
@@ -274,6 +274,9 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
 
        /* Build the PKO command */
        pko_command.u64 = 0;
+#ifdef __LITTLE_ENDIAN
+       pko_command.s.le = 1;
+#endif
        pko_command.s.n2 = 1;   /* Don't pollute L2 with the outgoing packet */
        pko_command.s.segs = 1;
        pko_command.s.total_bytes = skb->len;
index 460e854..85618f1 100644 (file)
@@ -170,6 +170,16 @@ static void cvm_oct_configure_common_hw(void)
                cvm_oct_mem_fill_fpa(CVMX_FPA_OUTPUT_BUFFER_POOL,
                                     CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 128);
 
+#ifdef __LITTLE_ENDIAN
+       {
+               union cvmx_ipd_ctl_status ipd_ctl_status;
+               ipd_ctl_status.u64 = cvmx_read_csr(CVMX_IPD_CTL_STATUS);
+               ipd_ctl_status.s.pkt_lend = 1;
+               ipd_ctl_status.s.wqe_lend = 1;
+               cvmx_write_csr(CVMX_IPD_CTL_STATUS, ipd_ctl_status.u64);
+       }
+#endif
+
        if (USE_RED)
                cvmx_helper_setup_red(num_packet_buffers / 4,
                                      num_packet_buffers / 8);