On 06/20/2018 06:41 AM, Kevin Hao wrote:
In function cvm_oct_xmit(), the packet length is set with code like
this:
   pko_command.s.total_bytes = skb->len;

But when building with gcc8, the pko_command.s.total_bytes doesn't
emit the right value when it is used in the following codes:
         /* Send the packet to the output queue */
         if (unlikely(cvmx_pko_send_packet_finish(priv->port,
                                                  priv->queue + qos,
                                                  pko_command, hw_buffer,
                                                  CVMX_PKO_LOCK_NONE))) {

Adding a barrier after the assignment would generate the right codes.

merged to 4.14/4.15 and -dev.

Bruce


Signed-off-by: Kevin Hao <kexin....@windriver.com>
---
This fixes a Ethernet malfunction building with the gcc8.

  drivers/staging/octeon/ethernet-tx.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/drivers/staging/octeon/ethernet-tx.c 
b/drivers/staging/octeon/ethernet-tx.c
index 31f35025d19e..af9da2508e93 100644
--- a/drivers/staging/octeon/ethernet-tx.c
+++ b/drivers/staging/octeon/ethernet-tx.c
@@ -264,6 +264,9 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device 
*dev)
        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;
+#if GCC_VERSION >= 80000
+       barrier();
+#endif
        pko_command.s.size0 = CVMX_FAU_OP_SIZE_32;
        pko_command.s.subone0 = 1;

--
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to