Skip to content

Commit 721675f

Browse files
committed
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
Pull rdma fixes from Doug Ledford: "A few more minor fixes for rc3: - One fix to ipoib - One fix to core sysfs code - Four patches that resolve an oops found in testing of ocrdma and a couple other ocrdma issues" * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: RDMA/ocrdma: Fixing ocrdma debugfs directory remove RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion RDMA/ocrdma: populate max_sge_rd in device attributes RDMA/ocrdma: Initialize stats resources in the driver before ib device registration. IB/sysfs: remove unused va_list args IB/IPoIB: Do not set skb truesize since using one linearskb
2 parents 74c7b2a + 7425f41 commit 721675f

File tree

6 files changed

+16
-19
lines changed

6 files changed

+16
-19
lines changed

drivers/infiniband/core/sysfs.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,6 @@ static ssize_t _show_port_gid_attr(struct ib_port *p,
336336
union ib_gid gid;
337337
struct ib_gid_attr gid_attr = {};
338338
ssize_t ret;
339-
va_list args;
340339

341340
ret = ib_query_gid(p->ibdev, p->port_num, tab_attr->index, &gid,
342341
&gid_attr);
@@ -348,7 +347,6 @@ static ssize_t _show_port_gid_attr(struct ib_port *p,
348347
err:
349348
if (gid_attr.ndev)
350349
dev_put(gid_attr.ndev);
351-
va_end(args);
352350
return ret;
353351
}
354352

drivers/infiniband/hw/ocrdma/ocrdma_main.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ static int ocrdma_alloc_resources(struct ocrdma_dev *dev)
228228

229229
ocrdma_alloc_pd_pool(dev);
230230

231+
if (!ocrdma_alloc_stats_resources(dev)) {
232+
pr_err("%s: stats resource allocation failed\n", __func__);
233+
goto alloc_err;
234+
}
235+
231236
spin_lock_init(&dev->av_tbl.lock);
232237
spin_lock_init(&dev->flush_q_lock);
233238
return 0;
@@ -238,6 +243,7 @@ static int ocrdma_alloc_resources(struct ocrdma_dev *dev)
238243

239244
static void ocrdma_free_resources(struct ocrdma_dev *dev)
240245
{
246+
ocrdma_release_stats_resources(dev);
241247
kfree(dev->stag_arr);
242248
kfree(dev->qp_tbl);
243249
kfree(dev->cq_tbl);

drivers/infiniband/hw/ocrdma/ocrdma_stats.c

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,11 @@ static int ocrdma_add_stat(char *start, char *pcur,
6464
return cpy_len;
6565
}
6666

67-
static bool ocrdma_alloc_stats_mem(struct ocrdma_dev *dev)
67+
bool ocrdma_alloc_stats_resources(struct ocrdma_dev *dev)
6868
{
6969
struct stats_mem *mem = &dev->stats_mem;
7070

71+
mutex_init(&dev->stats_lock);
7172
/* Alloc mbox command mem*/
7273
mem->size = max_t(u32, sizeof(struct ocrdma_rdma_stats_req),
7374
sizeof(struct ocrdma_rdma_stats_resp));
@@ -91,13 +92,14 @@ static bool ocrdma_alloc_stats_mem(struct ocrdma_dev *dev)
9192
return true;
9293
}
9394

94-
static void ocrdma_release_stats_mem(struct ocrdma_dev *dev)
95+
void ocrdma_release_stats_resources(struct ocrdma_dev *dev)
9596
{
9697
struct stats_mem *mem = &dev->stats_mem;
9798

9899
if (mem->va)
99100
dma_free_coherent(&dev->nic_info.pdev->dev, mem->size,
100101
mem->va, mem->pa);
102+
mem->va = NULL;
101103
kfree(mem->debugfs_mem);
102104
}
103105

@@ -838,15 +840,9 @@ void ocrdma_add_port_stats(struct ocrdma_dev *dev)
838840
&dev->reset_stats, &ocrdma_dbg_ops))
839841
goto err;
840842

841-
/* Now create dma_mem for stats mbx command */
842-
if (!ocrdma_alloc_stats_mem(dev))
843-
goto err;
844-
845-
mutex_init(&dev->stats_lock);
846843

847844
return;
848845
err:
849-
ocrdma_release_stats_mem(dev);
850846
debugfs_remove_recursive(dev->dir);
851847
dev->dir = NULL;
852848
}
@@ -855,9 +851,7 @@ void ocrdma_rem_port_stats(struct ocrdma_dev *dev)
855851
{
856852
if (!dev->dir)
857853
return;
858-
debugfs_remove(dev->dir);
859-
mutex_destroy(&dev->stats_lock);
860-
ocrdma_release_stats_mem(dev);
854+
debugfs_remove_recursive(dev->dir);
861855
}
862856

863857
void ocrdma_init_debugfs(void)

drivers/infiniband/hw/ocrdma/ocrdma_stats.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ enum OCRDMA_STATS_TYPE {
6565

6666
void ocrdma_rem_debugfs(void);
6767
void ocrdma_init_debugfs(void);
68+
bool ocrdma_alloc_stats_resources(struct ocrdma_dev *dev);
69+
void ocrdma_release_stats_resources(struct ocrdma_dev *dev);
6870
void ocrdma_rem_port_stats(struct ocrdma_dev *dev);
6971
void ocrdma_add_port_stats(struct ocrdma_dev *dev);
7072
int ocrdma_pma_counters(struct ocrdma_dev *dev,

drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ int ocrdma_query_device(struct ib_device *ibdev, struct ib_device_attr *attr,
125125
IB_DEVICE_SYS_IMAGE_GUID |
126126
IB_DEVICE_LOCAL_DMA_LKEY |
127127
IB_DEVICE_MEM_MGT_EXTENSIONS;
128-
attr->max_sge = min(dev->attr.max_send_sge, dev->attr.max_srq_sge);
129-
attr->max_sge_rd = 0;
128+
attr->max_sge = dev->attr.max_send_sge;
129+
attr->max_sge_rd = attr->max_sge;
130130
attr->max_cq = dev->attr.max_cq;
131131
attr->max_cqe = dev->attr.max_cqe;
132132
attr->max_mr = dev->attr.max_mr;
@@ -2726,8 +2726,7 @@ static int ocrdma_update_ud_rcqe(struct ib_wc *ibwc, struct ocrdma_cqe *cqe)
27262726
OCRDMA_CQE_UD_STATUS_MASK) >> OCRDMA_CQE_UD_STATUS_SHIFT;
27272727
ibwc->src_qp = le32_to_cpu(cqe->flags_status_srcqpn) &
27282728
OCRDMA_CQE_SRCQP_MASK;
2729-
ibwc->pkey_index = le32_to_cpu(cqe->ud.rxlen_pkey) &
2730-
OCRDMA_CQE_PKEY_MASK;
2729+
ibwc->pkey_index = 0;
27312730
ibwc->wc_flags = IB_WC_GRH;
27322731
ibwc->byte_len = (le32_to_cpu(cqe->ud.rxlen_pkey) >>
27332732
OCRDMA_CQE_UD_XFER_LEN_SHIFT);

drivers/infiniband/ulp/ipoib/ipoib_ib.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,6 @@ static void ipoib_ib_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
245245
skb_reset_mac_header(skb);
246246
skb_pull(skb, IPOIB_ENCAP_LEN);
247247

248-
skb->truesize = SKB_TRUESIZE(skb->len);
249-
250248
++dev->stats.rx_packets;
251249
dev->stats.rx_bytes += skb->len;
252250

0 commit comments

Comments
 (0)