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 <[email protected]> --- 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 [email protected] https://lists.yoctoproject.org/listinfo/linux-yocto
