From: Hariprasad Shenai <haripra...@chelsio.com>
Date: Wed, 22 Jun 2016 09:39:29 +0530

> The issue comes when there are multiple threads attempting to use the
> mailbox facility at the same time. The issue is the for the Virtual
> Function Driver, the only way to get the Virtual Interface statistics
> is to issue mailbox commands to ask the firmware for the VI Stats.
> And, because the VI Stats command can only retrieve a smallish number of
> stats per mailbox command, we have to issue three mailbox commands in quick
> succession. When ethtool or netstat command to get interface stats and
> interface up/down is run in a loop for every 0.1 sec, we observed
> mailbox collisions. And out of the two commands one would fail with
> the present code, since we don't queue the second command.
> 
> To overcome the above issue, added a queue to access the mailbox.
> Whenever a mailbox command is issued add it to the queue. If its at the
> head issue the mailbox command, else wait for the existing command to
> complete. Usually command takes less than a milli-second to complete.
> Also timeout from the loop, if the command under execution takes
> long time to run.
> 
> In reality, the number of mailbox access collisions is going to be very
> rare since no one runs such abusive script.
> 
> Signed-off-by: Hariprasad Shenai <haripra...@chelsio.com>

Applied.

Reply via email to