lkml.org 
[lkml]   [2021]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 for-next 1/2] IB/core: Updating cache for subnet_prefix in config_non_roce_gid_cache()
    Date
    Currently cache for subnet_prefix is getting updated by reading port
    attributes via ib_query_port. ib_query_port() calls ops.query_gid()
    to get subnet_prefix and returns it via port_attr.

    In ib_cache_update(), config_non_roce_gid_cache() obtains GIDs
    by calling ops.query_gid(). We utilize this to store subnet_prefix
    in cache.

    Fixes: fad61ad ("IB/core: Add subnet prefix to port info")
    Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
    Suggested-by: Aru Kolappan <aru.kolappan@oracle.com>
    Signed-off-by: Anand Khoje <anand.a.khoje@oracle.com>
    Signed-off-by: Haakon Bugge <haakon.bugge@oracle.com>
    ---
    drivers/infiniband/core/cache.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
    index c9e9fc8..929399e 100644
    --- a/drivers/infiniband/core/cache.c
    +++ b/drivers/infiniband/core/cache.c
    @@ -1429,7 +1429,7 @@ int rdma_read_gid_l2_fields(const struct ib_gid_attr *attr,
    EXPORT_SYMBOL(rdma_read_gid_l2_fields);

    static int config_non_roce_gid_cache(struct ib_device *device,
    - u32 port, int gid_tbl_len)
    + u32 port, struct ib_port_attr *tprops)
    {
    struct ib_gid_attr gid_attr = {};
    struct ib_gid_table *table;
    @@ -1441,7 +1441,7 @@ static int config_non_roce_gid_cache(struct ib_device *device,
    table = rdma_gid_table(device, port);

    mutex_lock(&table->lock);
    - for (i = 0; i < gid_tbl_len; ++i) {
    + for (i = 0; i < tprops->gid_tbl_len; ++i) {
    if (!device->ops.query_gid)
    continue;
    ret = device->ops.query_gid(device, port, i, &gid_attr.gid);
    @@ -1452,6 +1452,8 @@ static int config_non_roce_gid_cache(struct ib_device *device,
    goto err;
    }
    gid_attr.index = i;
    + tprops->subnet_prefix =
    + be64_to_cpu(gid_attr.gid.global.subnet_prefix);
    add_modify_gid(table, &gid_attr);
    }
    err:
    @@ -1484,7 +1486,7 @@ static int config_non_roce_gid_cache(struct ib_device *device,

    if (!rdma_protocol_roce(device, port) && update_gids) {
    ret = config_non_roce_gid_cache(device, port,
    - tprops->gid_tbl_len);
    + tprops);
    if (ret)
    goto err;
    }
    --
    1.8.3.1
    \
     
     \ /
      Last update: 2021-06-27 08:49    [W:6.915 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site