lkml.org 
[lkml]   [2022]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next v2 26/35] soc: fsl: qbman: Add helper for sanity checking cgr ops
    Date
    This breaks out/combines get_affine_portal and the cgr sanity check in
    preparation for the next commit. No functional change intended.

    Signed-off-by: Sean Anderson <sean.anderson@seco.com>
    ---

    Changes in v2:
    - New

    drivers/soc/fsl/qbman/qman.c | 29 +++++++++++++++++++----------
    1 file changed, 19 insertions(+), 10 deletions(-)

    diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c
    index fde4edd83c14..eb6600aab09b 100644
    --- a/drivers/soc/fsl/qbman/qman.c
    +++ b/drivers/soc/fsl/qbman/qman.c
    @@ -2483,13 +2483,8 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags,
    }
    EXPORT_SYMBOL(qman_create_cgr);

    -int qman_delete_cgr(struct qman_cgr *cgr)
    +static struct qman_portal *qman_cgr_get_affine_portal(struct qman_cgr *cgr)
    {
    - unsigned long irqflags;
    - struct qm_mcr_querycgr cgr_state;
    - struct qm_mcc_initcgr local_opts;
    - int ret = 0;
    - struct qman_cgr *i;
    struct qman_portal *p = get_affine_portal();

    if (cgr->chan != p->config->channel) {
    @@ -2497,10 +2492,25 @@ int qman_delete_cgr(struct qman_cgr *cgr)
    dev_err(p->config->dev, "CGR not owned by current portal");
    dev_dbg(p->config->dev, " create 0x%x, delete 0x%x\n",
    cgr->chan, p->config->channel);
    -
    - ret = -EINVAL;
    - goto put_portal;
    + put_affine_portal();
    + return NULL;
    }
    +
    + return p;
    +}
    +
    +int qman_delete_cgr(struct qman_cgr *cgr)
    +{
    + unsigned long irqflags;
    + struct qm_mcr_querycgr cgr_state;
    + struct qm_mcc_initcgr local_opts;
    + int ret = 0;
    + struct qman_cgr *i;
    + struct qman_portal *p = qman_cgr_get_affine_portal(cgr);
    +
    + if (!p)
    + return -EINVAL;
    +
    memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr));
    spin_lock_irqsave(&p->cgr_lock, irqflags);
    list_del(&cgr->node);
    @@ -2528,7 +2538,6 @@ int qman_delete_cgr(struct qman_cgr *cgr)
    list_add(&cgr->node, &p->cgr_cbs);
    release_lock:
    spin_unlock_irqrestore(&p->cgr_lock, irqflags);
    -put_portal:
    put_affine_portal();
    return ret;
    }
    --
    2.35.1.1320.gc452695387.dirty
    \
     
     \ /
      Last update: 2022-06-29 00:19    [W:4.102 / U:0.424 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site