From: Hao Liang <redacted>
Date: Mon, 20 Oct 2014 16:55:08 +0800
I can't quite seize David's meaing whether the ->mac->xxx should
inside the lock or outside the lock. In my opinion, the ->mac->xxx
calls did not operate any shared data or struct. The calls just
control the hardware by write data to registers. So ->mac->xxx
calls can be removed from lock.
If you make a decision to program the hardware in a certain way, you
must make sure that hardware programming operation occurs atomically.
This could be because it takes multiple register writes to perform
the operation and they are dependent upon eachother, or you are
makeing multiple modifications which must occur in a certain
sequence.
If you allow these ->mac->xxx calls to run in parallel with eachother
I guarantee it will cause problems.
Stop brushing it off as a non-issue, unless you want your driver
to mysteriously not work when the race is triggered.