RDMA: Hold the sgid_attr inside the struct ib_ah/qp
If the AH has a GRH then hold a reference to the sgid_attr inside the common struct. If the QP is modified with an AV that includes a GRH then also hold a reference to the sgid_attr inside the common struct. This informs the cache that the sgid_index is in-use so long as the AH or QP using it exists. This also means that all drivers can access the sgid_attr directly from the ah_attr instead of querying the cache during their UD post-send paths. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
This commit is contained in:
@@ -1580,6 +1580,7 @@ struct ib_ah {
|
||||
struct ib_device *device;
|
||||
struct ib_pd *pd;
|
||||
struct ib_uobject *uobject;
|
||||
const struct ib_gid_attr *sgid_attr;
|
||||
enum rdma_ah_attr_type type;
|
||||
};
|
||||
|
||||
@@ -1778,6 +1779,9 @@ struct ib_qp {
|
||||
struct ib_uobject *uobject;
|
||||
void (*event_handler)(struct ib_event *, void *);
|
||||
void *qp_context;
|
||||
/* sgid_attrs associated with the AV's */
|
||||
const struct ib_gid_attr *av_sgid_attr;
|
||||
const struct ib_gid_attr *alt_path_sgid_attr;
|
||||
u32 qp_num;
|
||||
u32 max_write_sge;
|
||||
u32 max_read_sge;
|
||||
|
Reference in New Issue
Block a user