diff options
author | Tatyana Nikolova <Tatyana.E.Nikolova@intel.com> | 2012-09-20 17:08:04 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-09-30 23:34:55 -0400 |
commit | 818216442b6dd49fa93a4caf9d7b56af364b502b (patch) | |
tree | f9f576907c2b3ae24a9a681fcb161b82802fea86 | |
parent | fc4ba7291b3dc7ace34794f51c47f041949c7a92 (diff) |
RDMA/nes: Print hardware resource type
Hardware resource types are added and when a resource isn't available,
its type is printed.
Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r-- | drivers/infiniband/hw/nes/nes.h | 15 | ||||
-rw-r--r-- | drivers/infiniband/hw/nes/nes_utils.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/hw/nes/nes_verbs.c | 14 |
3 files changed, 20 insertions, 11 deletions
diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h index c438e4691b3c..0da62b904d00 100644 --- a/drivers/infiniband/hw/nes/nes.h +++ b/drivers/infiniband/hw/nes/nes.h | |||
@@ -399,11 +399,20 @@ static inline void nes_write8(void __iomem *addr, u8 val) | |||
399 | writeb(val, addr); | 399 | writeb(val, addr); |
400 | } | 400 | } |
401 | 401 | ||
402 | 402 | enum nes_resource { | |
403 | NES_RESOURCE_MW = 1, | ||
404 | NES_RESOURCE_FAST_MR, | ||
405 | NES_RESOURCE_PHYS_MR, | ||
406 | NES_RESOURCE_USER_MR, | ||
407 | NES_RESOURCE_PD, | ||
408 | NES_RESOURCE_QP, | ||
409 | NES_RESOURCE_CQ, | ||
410 | NES_RESOURCE_ARP | ||
411 | }; | ||
403 | 412 | ||
404 | static inline int nes_alloc_resource(struct nes_adapter *nesadapter, | 413 | static inline int nes_alloc_resource(struct nes_adapter *nesadapter, |
405 | unsigned long *resource_array, u32 max_resources, | 414 | unsigned long *resource_array, u32 max_resources, |
406 | u32 *req_resource_num, u32 *next) | 415 | u32 *req_resource_num, u32 *next, enum nes_resource resource_type) |
407 | { | 416 | { |
408 | unsigned long flags; | 417 | unsigned long flags; |
409 | u32 resource_num; | 418 | u32 resource_num; |
@@ -414,7 +423,7 @@ static inline int nes_alloc_resource(struct nes_adapter *nesadapter, | |||
414 | if (resource_num >= max_resources) { | 423 | if (resource_num >= max_resources) { |
415 | resource_num = find_first_zero_bit(resource_array, max_resources); | 424 | resource_num = find_first_zero_bit(resource_array, max_resources); |
416 | if (resource_num >= max_resources) { | 425 | if (resource_num >= max_resources) { |
417 | printk(KERN_ERR PFX "%s: No available resourcess.\n", __func__); | 426 | printk(KERN_ERR PFX "%s: No available resources [type=%u].\n", __func__, resource_type); |
418 | spin_unlock_irqrestore(&nesadapter->resource_lock, flags); | 427 | spin_unlock_irqrestore(&nesadapter->resource_lock, flags); |
419 | return -EMFILE; | 428 | return -EMFILE; |
420 | } | 429 | } |
diff --git a/drivers/infiniband/hw/nes/nes_utils.c b/drivers/infiniband/hw/nes/nes_utils.c index e98f4fc0b768..2042c0f29759 100644 --- a/drivers/infiniband/hw/nes/nes_utils.c +++ b/drivers/infiniband/hw/nes/nes_utils.c | |||
@@ -699,7 +699,7 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti | |||
699 | 699 | ||
700 | arp_index = 0; | 700 | arp_index = 0; |
701 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_arps, | 701 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_arps, |
702 | nesadapter->arp_table_size, (u32 *)&arp_index, &nesadapter->next_arp_index); | 702 | nesadapter->arp_table_size, (u32 *)&arp_index, &nesadapter->next_arp_index, NES_RESOURCE_ARP); |
703 | if (err) { | 703 | if (err) { |
704 | nes_debug(NES_DBG_NETDEV, "nes_alloc_resource returned error = %u\n", err); | 704 | nes_debug(NES_DBG_NETDEV, "nes_alloc_resource returned error = %u\n", err); |
705 | return err; | 705 | return err; |
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c index 8b8812de4b5c..1dadcf388c02 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.c +++ b/drivers/infiniband/hw/nes/nes_verbs.c | |||
@@ -80,7 +80,7 @@ static struct ib_mw *nes_alloc_mw(struct ib_pd *ibpd) { | |||
80 | next_stag_index %= nesadapter->max_mr; | 80 | next_stag_index %= nesadapter->max_mr; |
81 | 81 | ||
82 | ret = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, | 82 | ret = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, |
83 | nesadapter->max_mr, &stag_index, &next_stag_index); | 83 | nesadapter->max_mr, &stag_index, &next_stag_index, NES_RESOURCE_MW); |
84 | if (ret) { | 84 | if (ret) { |
85 | return ERR_PTR(ret); | 85 | return ERR_PTR(ret); |
86 | } | 86 | } |
@@ -404,7 +404,7 @@ static struct ib_mr *nes_alloc_fast_reg_mr(struct ib_pd *ibpd, int max_page_list | |||
404 | 404 | ||
405 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, | 405 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, |
406 | nesadapter->max_mr, &stag_index, | 406 | nesadapter->max_mr, &stag_index, |
407 | &next_stag_index); | 407 | &next_stag_index, NES_RESOURCE_FAST_MR); |
408 | if (err) | 408 | if (err) |
409 | return ERR_PTR(err); | 409 | return ERR_PTR(err); |
410 | 410 | ||
@@ -780,7 +780,7 @@ static struct ib_pd *nes_alloc_pd(struct ib_device *ibdev, | |||
780 | netdev_refcnt_read(nesvnic->netdev)); | 780 | netdev_refcnt_read(nesvnic->netdev)); |
781 | 781 | ||
782 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_pds, | 782 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_pds, |
783 | nesadapter->max_pd, &pd_num, &nesadapter->next_pd); | 783 | nesadapter->max_pd, &pd_num, &nesadapter->next_pd, NES_RESOURCE_PD); |
784 | if (err) { | 784 | if (err) { |
785 | return ERR_PTR(err); | 785 | return ERR_PTR(err); |
786 | } | 786 | } |
@@ -1157,7 +1157,7 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, | |||
1157 | nes_debug(NES_DBG_QP, "RQ size=%u, SQ Size=%u\n", rq_size, sq_size); | 1157 | nes_debug(NES_DBG_QP, "RQ size=%u, SQ Size=%u\n", rq_size, sq_size); |
1158 | 1158 | ||
1159 | ret = nes_alloc_resource(nesadapter, nesadapter->allocated_qps, | 1159 | ret = nes_alloc_resource(nesadapter, nesadapter->allocated_qps, |
1160 | nesadapter->max_qp, &qp_num, &nesadapter->next_qp); | 1160 | nesadapter->max_qp, &qp_num, &nesadapter->next_qp, NES_RESOURCE_QP); |
1161 | if (ret) { | 1161 | if (ret) { |
1162 | return ERR_PTR(ret); | 1162 | return ERR_PTR(ret); |
1163 | } | 1163 | } |
@@ -1546,7 +1546,7 @@ static struct ib_cq *nes_create_cq(struct ib_device *ibdev, int entries, | |||
1546 | return ERR_PTR(-EINVAL); | 1546 | return ERR_PTR(-EINVAL); |
1547 | 1547 | ||
1548 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_cqs, | 1548 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_cqs, |
1549 | nesadapter->max_cq, &cq_num, &nesadapter->next_cq); | 1549 | nesadapter->max_cq, &cq_num, &nesadapter->next_cq, NES_RESOURCE_CQ); |
1550 | if (err) { | 1550 | if (err) { |
1551 | return ERR_PTR(err); | 1551 | return ERR_PTR(err); |
1552 | } | 1552 | } |
@@ -2129,7 +2129,7 @@ static struct ib_mr *nes_reg_phys_mr(struct ib_pd *ib_pd, | |||
2129 | return ERR_PTR(-EINVAL); | 2129 | return ERR_PTR(-EINVAL); |
2130 | 2130 | ||
2131 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, nesadapter->max_mr, | 2131 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, nesadapter->max_mr, |
2132 | &stag_index, &next_stag_index); | 2132 | &stag_index, &next_stag_index, NES_RESOURCE_PHYS_MR); |
2133 | if (err) { | 2133 | if (err) { |
2134 | return ERR_PTR(err); | 2134 | return ERR_PTR(err); |
2135 | } | 2135 | } |
@@ -2360,7 +2360,7 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, u64 start, u64 length, | |||
2360 | next_stag_index %= nesadapter->max_mr; | 2360 | next_stag_index %= nesadapter->max_mr; |
2361 | 2361 | ||
2362 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, | 2362 | err = nes_alloc_resource(nesadapter, nesadapter->allocated_mrs, |
2363 | nesadapter->max_mr, &stag_index, &next_stag_index); | 2363 | nesadapter->max_mr, &stag_index, &next_stag_index, NES_RESOURCE_USER_MR); |
2364 | if (err) { | 2364 | if (err) { |
2365 | ib_umem_release(region); | 2365 | ib_umem_release(region); |
2366 | return ERR_PTR(err); | 2366 | return ERR_PTR(err); |