| // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause | 
 | /* | 
 |  * Copyright (c) 2015, 2017 Oracle.  All rights reserved. | 
 |  */ | 
 |  | 
 | /* rpcrdma.ko module initialization | 
 |  */ | 
 |  | 
 | #include <linux/types.h> | 
 | #include <linux/compiler.h> | 
 | #include <linux/module.h> | 
 | #include <linux/init.h> | 
 | #include <linux/sunrpc/svc_rdma.h> | 
 |  | 
 | #include <asm/swab.h> | 
 |  | 
 | #include "xprt_rdma.h" | 
 |  | 
 | #define CREATE_TRACE_POINTS | 
 | #include <trace/events/rpcrdma.h> | 
 |  | 
 | MODULE_AUTHOR("Open Grid Computing and Network Appliance, Inc."); | 
 | MODULE_DESCRIPTION("RPC/RDMA Transport"); | 
 | MODULE_LICENSE("Dual BSD/GPL"); | 
 | MODULE_ALIAS("svcrdma"); | 
 | MODULE_ALIAS("xprtrdma"); | 
 |  | 
 | static void __exit rpc_rdma_cleanup(void) | 
 | { | 
 | 	xprt_rdma_cleanup(); | 
 | 	svc_rdma_cleanup(); | 
 | } | 
 |  | 
 | static int __init rpc_rdma_init(void) | 
 | { | 
 | 	int rc; | 
 |  | 
 | 	rc = svc_rdma_init(); | 
 | 	if (rc) | 
 | 		goto out; | 
 |  | 
 | 	rc = xprt_rdma_init(); | 
 | 	if (rc) | 
 | 		svc_rdma_cleanup(); | 
 |  | 
 | out: | 
 | 	return rc; | 
 | } | 
 |  | 
 | module_init(rpc_rdma_init); | 
 | module_exit(rpc_rdma_cleanup); |