On 7/23/19 4:06 PM, David Miller wrote:
From: Shannon Nelson <snel...@pensando.io>
Date: Tue, 23 Jul 2019 15:50:43 -0700
On 7/23/19 2:33 PM, David Miller wrote:
Generally interface address changes are expected to be synchronous.
Yeah, this bothers me a bit as well, but the address change calls come
in under spin_lock_bh(), and I'm reluctant to make an AdminQ call
under the _bh that could block for a few seconds.
So it's not about memory allocation but rather the fact that the device
might take a while to complete?
Memory allocation may or may not be involved, but yes, mainly we're
doing another spin_lock on a firmware command that waits for an ACK or
ERROR answer, and in extreme cases could possibly timeout on a dead
firmware. I know that i40e and ice do much the same thing, and I
believe mlx5 as well, for the same reasons. I suspect others do as well.
Can you start the operation synchronously yet complete it async?
This could be possible, but would likely require a bunch more messy
logic to track async AdminQ requests, that otherwise is unnecessary.
sln