net/enetc: init SI transactions attribute register
authorAlex Marginean <alexandru.marginean@nxp.com>
Mon, 2 Mar 2020 14:32:09 +0000 (20:02 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 18 Mar 2020 09:21:41 +0000 (10:21 +0100)
This was left to its default value.  With the patch transactions are:
- coherent,
- do not allocate in downstream cache (there is none on LS1028a),
- merge surrounding data for BD writes,
- overwrite surrounding data for frame data writes.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Gagandeep Singh <g.singh@nxp.com>
drivers/net/enetc/base/enetc_hw.h
drivers/net/enetc/enetc_ethdev.c

index 0081328..66fad58 100644 (file)
@@ -22,6 +22,8 @@
 #define ENETC_SIMR                     0x0
 #define ENETC_SIMR_EN                  BIT(31)
 
+#define ENETC_SICAR0                   0x40
+#define ENETC_SICAR0_COHERENT          0x2B2B6727
 #define ENETC_SIPMAR0                  0x80
 #define ENETC_SIPMAR1                  0x84
 
index eb637d0..1716e11 100644 (file)
@@ -150,6 +150,12 @@ enetc_hardware_init(struct enetc_eth_hw *hw)
        /* WA for Rx lock-up HW erratum */
        enetc_port_wr(enetc_hw, ENETC_PM0_RX_FIFO, 1);
 
+       /* set ENETC transaction flags to coherent, don't allocate.
+        * BD writes merge with surrounding cache line data, frame data writes
+        * overwrite cache line.
+        */
+       enetc_wr(enetc_hw, ENETC_SICAR0, ENETC_SICAR0_COHERENT);
+
        /* Enabling Station Interface */
        enetc_wr(enetc_hw, ENETC_SIMR, ENETC_SIMR_EN);