From: Hariprasad Shenai <haripra...@chelsio.com> Date: Fri, 6 Jan 2017 08:47:20 +0530
> The issue comes when there are multiple threads attempting to use > the mailbox facility at the same time. > When DCB operations 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.