Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Feb 2018 12:37:07 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r329571 - projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp
Message-ID:  <201802191237.w1JCb7G6063417@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Mon Feb 19 12:37:07 2018
New Revision: 329571
URL: https://svnweb.freebsd.org/changeset/base/329571

Log:
  MFC r303512:
  sdp: Use malloc(9) instead of the Linux compat layer.
  
  SDP transmit and receive rings are always created in a sleepable context,
  so we can use M_WAITOK and remove error checks.
  
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h
  projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
  projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_tx.c
Directory Properties:
  projects/bsd_rdma_4_9_stable_11/   (props changed)

Modified: projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h
==============================================================================
--- projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h	Mon Feb 19 12:34:38 2018	(r329570)
+++ projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h	Mon Feb 19 12:37:07 2018	(r329571)
@@ -453,6 +453,8 @@ struct sdp_sock {
 #define	SDP_RLOCK_ASSERT(ssk)	rw_assert(&(ssk)->lock, RA_RLOCKED)
 #define	SDP_LOCK_ASSERT(ssk)	rw_assert(&(ssk)->lock, RA_LOCKED)
 
+MALLOC_DECLARE(M_SDP);
+
 static inline void tx_sa_reset(struct tx_srcavail_state *tx_sa)
 {
 	memset((void *)&tx_sa->busy, 0,

Modified: projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
==============================================================================
--- projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c	Mon Feb 19 12:34:38 2018	(r329570)
+++ projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c	Mon Feb 19 12:37:07 2018	(r329571)
@@ -64,6 +64,10 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/malloc.h>
+
 #include "sdp.h"
 
 #include <net/if.h>
@@ -86,7 +90,7 @@ RW_SYSINIT(sdplockinit, &sdp_lock, "SDP lock");
 #define	SDP_LIST_RLOCK_ASSERT()	rw_assert(&sdp_lock, RW_RLOCKED)
 #define	SDP_LIST_LOCK_ASSERT()	rw_assert(&sdp_lock, RW_LOCKED)
 
-static MALLOC_DEFINE(M_SDP, "sdp", "Socket Direct Protocol");
+MALLOC_DEFINE(M_SDP, "sdp", "Sockets Direct Protocol");
 
 static void sdp_stop_keepalive_timer(struct socket *so);
 

Modified: projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_tx.c
==============================================================================
--- projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_tx.c	Mon Feb 19 12:34:38 2018	(r329570)
+++ projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/sdp/sdp_tx.c	Mon Feb 19 12:37:07 2018	(r329571)
@@ -432,19 +432,11 @@ sdp_tx_ring_create(struct sdp_sock *ssk, struct ib_dev
 	atomic_set(&ssk->tx_ring.head, 1);
 	atomic_set(&ssk->tx_ring.tail, 1);
 
-	ssk->tx_ring.buffer = kzalloc(
-			sizeof *ssk->tx_ring.buffer * SDP_TX_SIZE, GFP_KERNEL);
-	if (!ssk->tx_ring.buffer) {
-		rc = -ENOMEM;
-		sdp_warn(ssk->socket, "Can't allocate TX Ring size %zd.\n",
-			 sizeof(*ssk->tx_ring.buffer) * SDP_TX_SIZE);
+	ssk->tx_ring.buffer = malloc(sizeof(*ssk->tx_ring.buffer) * SDP_TX_SIZE,
+	    M_SDP, M_WAITOK);
 
-		goto out;
-	}
-
 	tx_cq = ib_create_cq(device, sdp_tx_irq, sdp_tx_cq_event_handler,
 			  ssk, &tx_cq_attr);
-
 	if (IS_ERR(tx_cq)) {
 		rc = PTR_ERR(tx_cq);
 		sdp_warn(ssk->socket, "Unable to allocate TX CQ: %d.\n", rc);
@@ -457,9 +449,8 @@ sdp_tx_ring_create(struct sdp_sock *ssk, struct ib_dev
 	return 0;
 
 err_cq:
-	kfree(ssk->tx_ring.buffer);
+	free(ssk->tx_ring.buffer, M_SDP);
 	ssk->tx_ring.buffer = NULL;
-out:
 	return rc;
 }
 
@@ -477,8 +468,7 @@ sdp_tx_ring_destroy(struct sdp_sock *ssk)
 
 	if (ssk->tx_ring.buffer) {
 		sdp_tx_ring_purge(ssk);
-
-		kfree(ssk->tx_ring.buffer);
+		free(ssk->tx_ring.buffer, M_SDP);
 		ssk->tx_ring.buffer = NULL;
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201802191237.w1JCb7G6063417>