• Hariprasad Shenai's avatar
    cxgb4: Synchronize access to mailbox · 4055ae5e
    Hariprasad Shenai authored
    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: default avatarHariprasad Shenai <hariprasad@chelsio.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4055ae5e
cxgb4_main.c 138 KB