Thread (9 messages) 9 messages, 4 authors, 2016-05-10

Re: [PATCH v2 1/2] net: nps_enet: Sync access to packet sent flag

From: David Miller <davem@davemloft.net>
Date: 2016-04-28 21:11:23
Also in: lkml

From: Elad Kanfi <redacted>
Date: Wed, 27 Apr 2016 16:18:29 +0300
From: Elad Kanfi <redacted>

Below is a description of a possible problematic
sequence. CPU-A is sending a frame and CPU-B handles
the interrupt that indicates the frame was sent. CPU-B
reads an invalid value of tx_packet_sent.

	CPU-A				CPU-B
	-----				-----
	nps_enet_send_frame
	.
	.
	tx_packet_sent = true
	order HW to start tx
	.
	.
	HW complete tx
			    ------> 	get tx complete interrupt
					.
					.
					if(tx_packet_sent == true)

	end memory transaction
	(tx_packet_sent actually
	 written)

Problem solution:

Add a memory barrier after setting tx_packet_sent,
in order to make sure that it is written before
the packet is sent.

Signed-off-by: Elad Kanfi <redacted>

Acked-by: Noam Camus <redacted>
Please address the feedback about memory barrier pairing.

Also, for both patches, do not put empty lines between the various
tags at the end of the commit message.  They should all be together
in one continuous group.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help