mirror of
https://github.com/torvalds/linux.git
synced 2024-12-06 19:11:31 +00:00
IB/rxe: Make counters thread safe
Current rxe device counters are not thread safe.
When multiple QPs are used, they can be racy.
Make them thread safe by making it atomic64.
Fixes: 0b1e5b99a4
("IB/rxe: Add port protocol stats")
Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
6e3722baac
commit
d5108e69fe
@ -62,7 +62,7 @@ int rxe_ib_get_hw_stats(struct ib_device *ibdev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
for (cnt = 0; cnt < ARRAY_SIZE(rxe_counter_name); cnt++)
|
for (cnt = 0; cnt < ARRAY_SIZE(rxe_counter_name); cnt++)
|
||||||
stats->value[cnt] = dev->stats_counters[cnt];
|
stats->value[cnt] = atomic64_read(&dev->stats_counters[cnt]);
|
||||||
|
|
||||||
return ARRAY_SIZE(rxe_counter_name);
|
return ARRAY_SIZE(rxe_counter_name);
|
||||||
}
|
}
|
||||||
|
@ -409,16 +409,16 @@ struct rxe_dev {
|
|||||||
spinlock_t mmap_offset_lock; /* guard mmap_offset */
|
spinlock_t mmap_offset_lock; /* guard mmap_offset */
|
||||||
int mmap_offset;
|
int mmap_offset;
|
||||||
|
|
||||||
u64 stats_counters[RXE_NUM_OF_COUNTERS];
|
atomic64_t stats_counters[RXE_NUM_OF_COUNTERS];
|
||||||
|
|
||||||
struct rxe_port port;
|
struct rxe_port port;
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
struct crypto_shash *tfm;
|
struct crypto_shash *tfm;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void rxe_counter_inc(struct rxe_dev *rxe, enum rxe_counters cnt)
|
static inline void rxe_counter_inc(struct rxe_dev *rxe, enum rxe_counters index)
|
||||||
{
|
{
|
||||||
rxe->stats_counters[cnt]++;
|
atomic64_inc(&rxe->stats_counters[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct rxe_dev *to_rdev(struct ib_device *dev)
|
static inline struct rxe_dev *to_rdev(struct ib_device *dev)
|
||||||
|
Loading…
Reference in New Issue
Block a user