• Markus Schneider-Pargmann's avatar
    can: m_can: Use the workqueue as queue · e668673e
    Markus Schneider-Pargmann authored
    The current implementation uses the workqueue for peripheral chips to
    submit work. Only a single work item is queued and used at any time.
    
    To be able to keep more than one transmit in flight at a time, prepare
    the workqueue to support multiple transmits at the same time.
    
    Each work item now has a separate storage for a skb and a pointer to
    cdev. This assures that each workitem can be processed individually.
    
    The workqueue is replaced by an ordered workqueue which makes sure that
    only a single worker processes the items queued on the workqueue. Also
    items are ordered by the order they were enqueued. This removes most of
    the concurrency the workqueue normally offers. It is not necessary for
    this driver.
    
    The cleanup functions have to be adopted a bit to handle this new
    mechanism.
    Signed-off-by: default avatarMarkus Schneider-Pargmann <msp@baylibre.com>
    Link: https://lore.kernel.org/all/20240207093220.2681425-11-msp@baylibre.comSigned-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    e668673e
m_can.h 3.1 KB