aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/qib/qib_user_sdma.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_user_sdma.c')
-rw-r--r--drivers/infiniband/hw/qib/qib_user_sdma.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/qib/qib_user_sdma.c b/drivers/infiniband/hw/qib/qib_user_sdma.c
index d2806cae234c..3e0677c51276 100644
--- a/drivers/infiniband/hw/qib/qib_user_sdma.c
+++ b/drivers/infiniband/hw/qib/qib_user_sdma.c
@@ -50,7 +50,7 @@
50/* expected size of headers (for dma_pool) */ 50/* expected size of headers (for dma_pool) */
51#define QIB_USER_SDMA_EXP_HEADER_LENGTH 64 51#define QIB_USER_SDMA_EXP_HEADER_LENGTH 64
52/* attempt to drain the queue for 5secs */ 52/* attempt to drain the queue for 5secs */
53#define QIB_USER_SDMA_DRAIN_TIMEOUT 500 53#define QIB_USER_SDMA_DRAIN_TIMEOUT 250
54 54
55/* 55/*
56 * track how many times a process open this driver. 56 * track how many times a process open this driver.
@@ -226,6 +226,7 @@ qib_user_sdma_queue_create(struct device *dev, int unit, int ctxt, int sctxt)
226 sdma_rb_node->refcount++; 226 sdma_rb_node->refcount++;
227 } else { 227 } else {
228 int ret; 228 int ret;
229
229 sdma_rb_node = kmalloc(sizeof( 230 sdma_rb_node = kmalloc(sizeof(
230 struct qib_user_sdma_rb_node), GFP_KERNEL); 231 struct qib_user_sdma_rb_node), GFP_KERNEL);
231 if (!sdma_rb_node) 232 if (!sdma_rb_node)
@@ -936,6 +937,7 @@ static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd,
936 937
937 if (tiddma) { 938 if (tiddma) {
938 char *tidsm = (char *)pkt + pktsize; 939 char *tidsm = (char *)pkt + pktsize;
940
939 cfur = copy_from_user(tidsm, 941 cfur = copy_from_user(tidsm,
940 iov[idx].iov_base, tidsmsize); 942 iov[idx].iov_base, tidsmsize);
941 if (cfur) { 943 if (cfur) {
@@ -1142,7 +1144,7 @@ void qib_user_sdma_queue_drain(struct qib_pportdata *ppd,
1142 qib_user_sdma_hwqueue_clean(ppd); 1144 qib_user_sdma_hwqueue_clean(ppd);
1143 qib_user_sdma_queue_clean(ppd, pq); 1145 qib_user_sdma_queue_clean(ppd, pq);
1144 mutex_unlock(&pq->lock); 1146 mutex_unlock(&pq->lock);
1145 msleep(10); 1147 msleep(20);
1146 } 1148 }
1147 1149
1148 if (pq->num_pending || pq->num_sending) { 1150 if (pq->num_pending || pq->num_sending) {
@@ -1316,8 +1318,6 @@ retry:
1316 1318
1317 if (nfree && !list_empty(pktlist)) 1319 if (nfree && !list_empty(pktlist))
1318 goto retry; 1320 goto retry;
1319
1320 return;
1321} 1321}
1322 1322
1323/* pq->lock must be held, get packets on the wire... */ 1323/* pq->lock must be held, get packets on the wire... */