]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: smbdirect: introduce smbdirect_public.h with prototypes
authorStefan Metzmacher <metze@samba.org>
Mon, 27 Oct 2025 15:57:39 +0000 (16:57 +0100)
committerSteve French <stfrench@microsoft.com>
Thu, 16 Apr 2026 02:58:20 +0000 (21:58 -0500)
smbdirect_public.h contains functions which will be still be
eported when we move to an smbdirect.ko.

For now this uses the SMBDIRECT_USE_INLINE_C_FILES code path
and marks all function as '__maybe_unused static',
but this will make further changes easier.

Note this generates the following things from checkpatch.pl,
so I passed --ignore=FILE_PATH_CHANGES,EXPORT_SYMBOL,COMPLEX_MACRO

 ERROR: Macros with complex values should be enclosed in parentheses
 #514: FILE: fs/smb/common/smbdirect/smbdirect_public.h:18:
 +#define __SMBDIRECT_PUBLIC__ __maybe_unused static

 WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
 #515: FILE: fs/smb/common/smbdirect/smbdirect_public.h:19:
 +#define __SMBDIRECT_EXPORT_SYMBOL__(__sym)

 WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
 #518: FILE: fs/smb/common/smbdirect/smbdirect_public.h:22:
 +#define __SMBDIRECT_EXPORT_SYMBOL__(__sym) EXPORT_SYMBOL_FOR_MODULES(__sym, "cifs,ksmbd")

This is exactly what we want here, so we should ignore the
checkpatch.pl problems.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smbdirect/smbdirect_accept.c
fs/smb/common/smbdirect/smbdirect_connect.c
fs/smb/common/smbdirect/smbdirect_connection.c
fs/smb/common/smbdirect/smbdirect_debug.c
fs/smb/common/smbdirect/smbdirect_internal.h
fs/smb/common/smbdirect/smbdirect_mr.c
fs/smb/common/smbdirect/smbdirect_public.h [new file with mode: 0644]
fs/smb/common/smbdirect/smbdirect_rw.c
fs/smb/common/smbdirect/smbdirect_socket.c
fs/smb/common/smbdirect/smbdirect_socket.h

index 768d5864cf67d7e6ae990a544ef70d364f1eb342..4baa2c1ad31eb24597f88d28b15aeb0979ab86e8 100644 (file)
@@ -14,9 +14,9 @@ static int smbdirect_accept_init_params(struct smbdirect_socket *sc);
 static void smbdirect_accept_negotiate_recv_done(struct ib_cq *cq, struct ib_wc *wc);
 static void smbdirect_accept_negotiate_send_done(struct ib_cq *cq, struct ib_wc *wc);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_accept_connect_request(struct smbdirect_socket *sc,
-                                           const struct rdma_conn_param *param)
+__SMBDIRECT_PUBLIC__
+int smbdirect_accept_connect_request(struct smbdirect_socket *sc,
+                                    const struct rdma_conn_param *param)
 {
        struct smbdirect_socket_parameters *sp = &sc->parameters;
        struct smbdirect_recv_io *recv_io;
@@ -160,6 +160,7 @@ create_qp_failed:
 init_params_failed:
        return ret;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_accept_connect_request);
 
 static int smbdirect_accept_init_params(struct smbdirect_socket *sc)
 {
index c32daf788b4196862314b9b7694c0fe83aa7020a..f411f6ee66b55a66d1e1d705e556f0470b3514e6 100644 (file)
@@ -16,9 +16,8 @@ static int smbdirect_connect_negotiate_start(struct smbdirect_socket *sc);
 static void smbdirect_connect_negotiate_send_done(struct ib_cq *cq, struct ib_wc *wc);
 static void smbdirect_connect_negotiate_recv_done(struct ib_cq *cq, struct ib_wc *wc);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connect(struct smbdirect_socket *sc,
-                            const struct sockaddr *dst)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connect(struct smbdirect_socket *sc, const struct sockaddr *dst)
 {
        const struct sockaddr *src = NULL;
        union {
@@ -62,6 +61,7 @@ static int smbdirect_connect(struct smbdirect_socket *sc,
         */
        return 0;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connect);
 
 static int smbdirect_connect_setup_connection(struct smbdirect_socket *sc)
 {
@@ -895,9 +895,9 @@ static void smbdirect_connect_negotiate_recv_work(struct work_struct *work)
        smbdirect_connection_negotiation_done(sc);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connect_sync(struct smbdirect_socket *sc,
-                                 const struct sockaddr *dst)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connect_sync(struct smbdirect_socket *sc,
+                          const struct sockaddr *dst)
 {
        int ret;
 
@@ -924,3 +924,4 @@ static int smbdirect_connect_sync(struct smbdirect_socket *sc,
 
        return 0;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connect_sync);
index 735d8dc3e9f5c1e328f4f77a5bff7cf43af116c1..7f9fa2b615a22d703bfdd0c063cc16c15d61ba6f 100644 (file)
@@ -703,16 +703,17 @@ static void smbdirect_connection_negotiate_rdma_resources(struct smbdirect_socke
                                                peer_responder_resources);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static bool smbdirect_connection_is_connected(struct smbdirect_socket *sc)
+__SMBDIRECT_PUBLIC__
+bool smbdirect_connection_is_connected(struct smbdirect_socket *sc)
 {
        if (unlikely(!sc || sc->first_error || sc->status != SMBDIRECT_SOCKET_CONNECTED))
                return false;
        return true;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_is_connected);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        union {
@@ -783,6 +784,7 @@ static int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc)
 
        return 0;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_wait_for_connected);
 
 static void smbdirect_connection_idle_timer_work(struct work_struct *work)
 {
@@ -1062,11 +1064,12 @@ static int smbdirect_connection_post_send_io(struct smbdirect_socket *sc,
        return smbdirect_connection_post_send_wr(sc, &msg->wr);
 }
 
-static int smbdirect_connection_send_single_iter(struct smbdirect_socket *sc,
-                                                struct smbdirect_send_batch *batch,
-                                                struct iov_iter *iter,
-                                                unsigned int flags,
-                                                u32 remaining_data_length)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_send_single_iter(struct smbdirect_socket *sc,
+                                         struct smbdirect_send_batch *batch,
+                                         struct iov_iter *iter,
+                                         unsigned int flags,
+                                         u32 remaining_data_length)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        struct smbdirect_send_batch _batch;
@@ -1249,9 +1252,10 @@ lcredit_failed:
 bcredit_failed:
        return ret;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_single_iter);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_send_wait_zero_pending(struct smbdirect_socket *sc)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_send_wait_zero_pending(struct smbdirect_socket *sc)
 {
        /*
         * As an optimization, we don't wait for individual I/O to finish
@@ -1274,13 +1278,14 @@ static int smbdirect_connection_send_wait_zero_pending(struct smbdirect_socket *
 
        return 0;
 }
-
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_send_iter(struct smbdirect_socket *sc,
-                                         struct iov_iter *iter,
-                                         unsigned int flags,
-                                         bool need_invalidate,
-                                         unsigned int remote_key)
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_wait_zero_pending);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_send_iter(struct smbdirect_socket *sc,
+                                  struct iov_iter *iter,
+                                  unsigned int flags,
+                                  bool need_invalidate,
+                                  unsigned int remote_key)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        struct smbdirect_send_batch batch;
@@ -1359,6 +1364,7 @@ static int smbdirect_connection_send_iter(struct smbdirect_socket *sc,
 
        return total_count;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_iter);
 
 static void smbdirect_connection_send_io_done(struct ib_cq *cq, struct ib_wc *wc)
 {
@@ -1777,10 +1783,10 @@ static void smbdirect_connection_recv_io_refill_work(struct work_struct *work)
        }
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_recvmsg(struct smbdirect_socket *sc,
-                                       struct msghdr *msg,
-                                       unsigned int flags)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_recvmsg(struct smbdirect_socket *sc,
+                                struct msghdr *msg,
+                                unsigned int flags)
 {
        struct smbdirect_recv_io *response;
        struct smbdirect_data_transfer *data_transfer;
@@ -1927,6 +1933,7 @@ read_rfc1002_done:
 
        goto again;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_recvmsg);
 
 static bool smbdirect_map_sges_single_page(struct smbdirect_map_sges *state,
                                           struct page *page, size_t off, size_t len)
index 20b87d8aa6d18aad0892c784688e48f48d4323e5..eac924164fd47c449201c17448fb797a665c8ef7 100644 (file)
@@ -7,10 +7,10 @@
 #include "smbdirect_internal.h"
 #include <linux/seq_file.h>
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_legacy_debug_proc_show(struct smbdirect_socket *sc,
-                                                       unsigned int rdma_readwrite_threshold,
-                                                       struct seq_file *m)
+__SMBDIRECT_PUBLIC__
+void smbdirect_connection_legacy_debug_proc_show(struct smbdirect_socket *sc,
+                                                unsigned int rdma_readwrite_threshold,
+                                                struct seq_file *m)
 {
        const struct smbdirect_socket_parameters *sp;
 
@@ -86,3 +86,4 @@ static void smbdirect_connection_legacy_debug_proc_show(struct smbdirect_socket
                   atomic_read(&sc->mr_io.ready.count),
                   atomic_read(&sc->mr_io.used.count));
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_legacy_debug_proc_show);
index 63349ce3536cc68cf0053cf8c5115cc09a5cdca5..f8f76bfe5c3e055f02ba44351c8813f3c75fa6ba 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "smbdirect.h"
 #include "smbdirect_pdu.h"
+#include "smbdirect_public.h"
 #include "smbdirect_socket.h"
 
 static void __smbdirect_socket_schedule_cleanup(struct smbdirect_socket *sc,
index d5bf8531e2373eef674a9e57f638deaa87377390..90879bd109c18ae479953458849b5491b2acb6a8 100644 (file)
@@ -330,8 +330,8 @@ static int smbdirect_iter_to_sgt(struct iov_iter *iter,
  * need_invalidate: true if this MR needs to be locally invalidated after I/O
  * return value: the MR registered, NULL if failed.
  */
-__maybe_unused /* this is temporary while this file is included in others */
-static struct smbdirect_mr_io *
+__SMBDIRECT_PUBLIC__
+struct smbdirect_mr_io *
 smbdirect_connection_register_mr_io(struct smbdirect_socket *sc,
                                    struct iov_iter *iter,
                                    bool writing,
@@ -452,10 +452,11 @@ dma_map_error:
                mutex_unlock(&mr->mutex);
        return NULL;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_register_mr_io);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
-                                                  struct smbdirect_buffer_descriptor_v1 *v1)
+__SMBDIRECT_PUBLIC__
+void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
+                                           struct smbdirect_buffer_descriptor_v1 *v1)
 {
        mutex_lock(&mr->mutex);
        if (mr->state == SMBDIRECT_MR_REGISTERED) {
@@ -469,6 +470,7 @@ static void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
        }
        mutex_unlock(&mr->mutex);
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_mr_io_fill_buffer_descriptor);
 
 /*
  * Deregister a MR after I/O is done
@@ -476,8 +478,8 @@ static void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
  * and we have to locally invalidate the buffer to prevent data is being
  * modified by remote peer after upper layer consumes it
  */
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_deregister_mr_io(struct smbdirect_mr_io *mr)
+__SMBDIRECT_PUBLIC__
+void smbdirect_connection_deregister_mr_io(struct smbdirect_mr_io *mr)
 {
        struct smbdirect_socket *sc = mr->socket;
        int ret = 0;
@@ -559,3 +561,4 @@ put_kref:
        if (!kref_put(&mr->kref, smbdirect_mr_io_free_locked))
                mutex_unlock(&mr->mutex);
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_deregister_mr_io);
diff --git a/fs/smb/common/smbdirect/smbdirect_public.h b/fs/smb/common/smbdirect/smbdirect_public.h
new file mode 100644 (file)
index 0000000..a5b15fc
--- /dev/null
@@ -0,0 +1,154 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ *   Copyright (C) 2025, Stefan Metzmacher
+ */
+
+#ifndef __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PUBLIC_H__
+#define __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PUBLIC_H__
+
+struct smbdirect_buffer_descriptor_v1;
+struct smbdirect_socket_parameters;
+
+struct smbdirect_socket;
+struct smbdirect_send_batch;
+struct smbdirect_mr_io;
+
+#ifdef SMBDIRECT_USE_INLINE_C_FILES
+/* this is temporary while this file is included in others */
+#define __SMBDIRECT_PUBLIC__ __maybe_unused static
+#define __SMBDIRECT_EXPORT_SYMBOL__(__sym)
+#else
+#define __SMBDIRECT_PUBLIC__
+#define __SMBDIRECT_EXPORT_SYMBOL__(__sym) EXPORT_SYMBOL_FOR_MODULES(__sym, "cifs,ksmbd")
+#endif
+
+#include <rdma/rw.h>
+
+__SMBDIRECT_PUBLIC__
+bool smbdirect_frwr_is_supported(const struct ib_device_attr *attrs);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_create_kern(struct net *net, struct smbdirect_socket **_sc);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_create_accepting(struct rdma_cm_id *id, struct smbdirect_socket **_sc);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
+                                           const struct smbdirect_socket_parameters *sp);
+
+__SMBDIRECT_PUBLIC__
+const struct smbdirect_socket_parameters *
+smbdirect_socket_get_current_parameters(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_set_kernel_settings(struct smbdirect_socket *sc,
+                                        enum ib_poll_context poll_ctx,
+                                        gfp_t gfp_mask);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_set_custom_workqueue(struct smbdirect_socket *sc,
+                                         struct workqueue_struct *workqueue);
+
+#define SMBDIRECT_LOG_ERR              0x0
+#define SMBDIRECT_LOG_INFO             0x1
+
+#define SMBDIRECT_LOG_OUTGOING                 0x1
+#define SMBDIRECT_LOG_INCOMING                 0x2
+#define SMBDIRECT_LOG_READ                     0x4
+#define SMBDIRECT_LOG_WRITE                    0x8
+#define SMBDIRECT_LOG_RDMA_SEND                        0x10
+#define SMBDIRECT_LOG_RDMA_RECV                        0x20
+#define SMBDIRECT_LOG_KEEP_ALIVE               0x40
+#define SMBDIRECT_LOG_RDMA_EVENT               0x80
+#define SMBDIRECT_LOG_RDMA_MR                  0x100
+#define SMBDIRECT_LOG_RDMA_RW                  0x200
+#define SMBDIRECT_LOG_NEGOTIATE                        0x400
+__SMBDIRECT_PUBLIC__
+void smbdirect_socket_set_logging(struct smbdirect_socket *sc,
+                                 void *private_ptr,
+                                 bool (*needed)(struct smbdirect_socket *sc,
+                                                void *private_ptr,
+                                                unsigned int lvl,
+                                                unsigned int cls),
+                                 void (*vaprintf)(struct smbdirect_socket *sc,
+                                                  const char *func,
+                                                  unsigned int line,
+                                                  void *private_ptr,
+                                                  unsigned int lvl,
+                                                  unsigned int cls,
+                                                  struct va_format *vaf));
+
+__SMBDIRECT_PUBLIC__
+bool smbdirect_connection_is_connected(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PUBLIC__
+void smbdirect_socket_shutdown(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PUBLIC__
+void smbdirect_socket_release(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_send_single_iter(struct smbdirect_socket *sc,
+                                         struct smbdirect_send_batch *batch,
+                                         struct iov_iter *iter,
+                                         unsigned int flags,
+                                         u32 remaining_data_length);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_send_wait_zero_pending(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_send_iter(struct smbdirect_socket *sc,
+                                  struct iov_iter *iter,
+                                  unsigned int flags,
+                                  bool need_invalidate,
+                                  unsigned int remote_key);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_recvmsg(struct smbdirect_socket *sc,
+                                struct msghdr *msg,
+                                unsigned int flags);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connect(struct smbdirect_socket *sc,
+                     const struct sockaddr *dst);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connect_sync(struct smbdirect_socket *sc,
+                          const struct sockaddr *dst);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_accept_connect_request(struct smbdirect_socket *sc,
+                                    const struct rdma_conn_param *param);
+
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_rdma_xmit(struct smbdirect_socket *sc,
+                                  void *buf, size_t buf_len,
+                                  struct smbdirect_buffer_descriptor_v1 *desc,
+                                  size_t desc_len,
+                                  bool is_read);
+
+__SMBDIRECT_PUBLIC__
+struct smbdirect_mr_io *
+smbdirect_connection_register_mr_io(struct smbdirect_socket *sc,
+                                   struct iov_iter *iter,
+                                   bool writing,
+                                   bool need_invalidate);
+
+__SMBDIRECT_PUBLIC__
+void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
+                                           struct smbdirect_buffer_descriptor_v1 *v1);
+
+__SMBDIRECT_PUBLIC__
+void smbdirect_connection_deregister_mr_io(struct smbdirect_mr_io *mr);
+
+__SMBDIRECT_PUBLIC__
+void smbdirect_connection_legacy_debug_proc_show(struct smbdirect_socket *sc,
+                                                unsigned int rdma_readwrite_threshold,
+                                                struct seq_file *m);
+
+#endif /* __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PUBLIC_H__ */
index 6eeec535b130e4aeb2393604bce3228a8621085b..bd90dffbf369eac5a404febcc925f7a62928dc2a 100644 (file)
@@ -105,12 +105,12 @@ static void smbdirect_connection_rdma_write_done(struct ib_cq *cq, struct ib_wc
        smbdirect_connection_rdma_rw_done(cq, wc, DMA_TO_DEVICE);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_rdma_xmit(struct smbdirect_socket *sc,
-                                         void *buf, size_t buf_len,
-                                         struct smbdirect_buffer_descriptor_v1 *desc,
-                                         size_t desc_len,
-                                         bool is_read)
+__SMBDIRECT_PUBLIC__
+int smbdirect_connection_rdma_xmit(struct smbdirect_socket *sc,
+                                  void *buf, size_t buf_len,
+                                  struct smbdirect_buffer_descriptor_v1 *desc,
+                                  size_t desc_len,
+                                  bool is_read)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        enum dma_data_direction direction = is_read ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
@@ -253,3 +253,4 @@ free_msg:
        kfree(msg);
        goto out;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_rdma_xmit);
index f70cd395812bd1ec57950c072a8d1e173383ea03..a54c16daffb90bea6d0f5d0d4c454b2acccbcd16 100644 (file)
@@ -6,8 +6,8 @@
 
 #include "smbdirect_internal.h"
 
-__maybe_unused /* this is temporary while this file is included in others */
-static bool smbdirect_frwr_is_supported(const struct ib_device_attr *attrs)
+__SMBDIRECT_PUBLIC__
+bool smbdirect_frwr_is_supported(const struct ib_device_attr *attrs)
 {
        /*
         * Test if FRWR (Fast Registration Work Requests) is supported on the
@@ -21,6 +21,7 @@ static bool smbdirect_frwr_is_supported(const struct ib_device_attr *attrs)
                return false;
        return true;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_frwr_is_supported);
 
 static void smbdirect_socket_cleanup_work(struct work_struct *work);
 
@@ -83,8 +84,8 @@ static int smbdirect_socket_init_new(struct net *net, struct smbdirect_socket *s
        return 0;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_socket_create_kern(struct net *net, struct smbdirect_socket **_sc)
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_create_kern(struct net *net, struct smbdirect_socket **_sc)
 {
        struct smbdirect_socket *sc;
        int ret;
@@ -108,6 +109,7 @@ init_failed:
 alloc_failed:
        return ret;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_create_kern);
 
 static int smbdirect_socket_init_accepting(struct rdma_cm_id *id, struct smbdirect_socket *sc)
 {
@@ -124,8 +126,8 @@ static int smbdirect_socket_init_accepting(struct rdma_cm_id *id, struct smbdire
        return 0;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_socket_create_accepting(struct rdma_cm_id *id, struct smbdirect_socket **_sc)
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_create_accepting(struct rdma_cm_id *id, struct smbdirect_socket **_sc)
 {
        struct smbdirect_socket *sc;
        int ret;
@@ -149,10 +151,11 @@ init_failed:
 alloc_failed:
        return ret;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_create_accepting);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
-                                                  const struct smbdirect_socket_parameters *sp)
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
+                                           const struct smbdirect_socket_parameters *sp)
 {
        /*
         * This is only allowed before connect or accept
@@ -185,18 +188,20 @@ static int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
 
        return 0;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_initial_parameters);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static const struct smbdirect_socket_parameters *
+__SMBDIRECT_PUBLIC__
+const struct smbdirect_socket_parameters *
 smbdirect_socket_get_current_parameters(struct smbdirect_socket *sc)
 {
        return &sc->parameters;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_get_current_parameters);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_socket_set_kernel_settings(struct smbdirect_socket *sc,
-                                               enum ib_poll_context poll_ctx,
-                                               gfp_t gfp_mask)
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_set_kernel_settings(struct smbdirect_socket *sc,
+                                        enum ib_poll_context poll_ctx,
+                                        gfp_t gfp_mask)
 {
        /*
         * This is only allowed before connect or accept
@@ -216,10 +221,11 @@ static int smbdirect_socket_set_kernel_settings(struct smbdirect_socket *sc,
 
        return 0;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_kernel_settings);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_socket_set_custom_workqueue(struct smbdirect_socket *sc,
-                                                struct workqueue_struct *workqueue)
+__SMBDIRECT_PUBLIC__
+int smbdirect_socket_set_custom_workqueue(struct smbdirect_socket *sc,
+                                         struct workqueue_struct *workqueue)
 {
        /*
         * This is only allowed before connect or accept
@@ -238,6 +244,7 @@ static int smbdirect_socket_set_custom_workqueue(struct smbdirect_socket *sc,
 
        return 0;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_custom_workqueue);
 
 __maybe_unused /* this is temporary while this file is included in others */
 static void smbdirect_socket_prepare_create(struct smbdirect_socket *sc,
@@ -262,25 +269,26 @@ static void smbdirect_socket_prepare_create(struct smbdirect_socket *sc,
        INIT_DELAYED_WORK(&sc->idle.timer_work, smbdirect_connection_idle_timer_work);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_socket_set_logging(struct smbdirect_socket *sc,
-                                        void *private_ptr,
-                                        bool (*needed)(struct smbdirect_socket *sc,
-                                                       void *private_ptr,
-                                                       unsigned int lvl,
-                                                       unsigned int cls),
-                                        void (*vaprintf)(struct smbdirect_socket *sc,
-                                                         const char *func,
-                                                         unsigned int line,
-                                                         void *private_ptr,
-                                                         unsigned int lvl,
-                                                         unsigned int cls,
-                                                         struct va_format *vaf))
+__SMBDIRECT_PUBLIC__
+void smbdirect_socket_set_logging(struct smbdirect_socket *sc,
+                                 void *private_ptr,
+                                 bool (*needed)(struct smbdirect_socket *sc,
+                                                void *private_ptr,
+                                                unsigned int lvl,
+                                                unsigned int cls),
+                                 void (*vaprintf)(struct smbdirect_socket *sc,
+                                                  const char *func,
+                                                  unsigned int line,
+                                                  void *private_ptr,
+                                                  unsigned int lvl,
+                                                  unsigned int cls,
+                                                  struct va_format *vaf))
 {
        sc->logging.private_ptr = private_ptr;
        sc->logging.needed = needed;
        sc->logging.vaprintf = vaprintf;
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_logging);
 
 static void smbdirect_socket_wake_up_all(struct smbdirect_socket *sc)
 {
@@ -600,11 +608,12 @@ static void smbdirect_socket_destroy_sync(struct smbdirect_socket *sc)
                SMBDIRECT_DEBUG_ERR_PTR(sc->first_error));
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_socket_shutdown(struct smbdirect_socket *sc)
+__SMBDIRECT_PUBLIC__
+void smbdirect_socket_shutdown(struct smbdirect_socket *sc)
 {
        smbdirect_socket_schedule_cleanup_lvl(sc, SMBDIRECT_LOG_INFO, -ESHUTDOWN);
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_shutdown);
 
 static void smbdirect_socket_release_disconnect(struct kref *kref)
 {
@@ -631,8 +640,8 @@ static void smbdirect_socket_release_destroy(struct kref *kref)
        kfree(sc);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_socket_release(struct smbdirect_socket *sc)
+__SMBDIRECT_PUBLIC__
+void smbdirect_socket_release(struct smbdirect_socket *sc)
 {
        /*
         * We expect only 1 disconnect reference
@@ -648,6 +657,7 @@ static void smbdirect_socket_release(struct smbdirect_socket *sc)
         */
        kref_put(&sc->refs.destroy, smbdirect_socket_release_destroy);
 }
+__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_release);
 
 __maybe_unused /* this is temporary while this file is included in others */
 static int smbdirect_socket_wait_for_credits(struct smbdirect_socket *sc,
index 7bd55cbc422730dc2728e572f353f3a454b555d3..44d04cc63d04ae7bd5ff799bc1abc6726b0ad012 100644 (file)
@@ -406,20 +406,6 @@ struct smbdirect_socket {
        } statistics;
 
        struct {
-#define SMBDIRECT_LOG_ERR              0x0
-#define SMBDIRECT_LOG_INFO             0x1
-
-#define SMBDIRECT_LOG_OUTGOING                 0x1
-#define SMBDIRECT_LOG_INCOMING                 0x2
-#define SMBDIRECT_LOG_READ                     0x4
-#define SMBDIRECT_LOG_WRITE                    0x8
-#define SMBDIRECT_LOG_RDMA_SEND                        0x10
-#define SMBDIRECT_LOG_RDMA_RECV                        0x20
-#define SMBDIRECT_LOG_KEEP_ALIVE               0x40
-#define SMBDIRECT_LOG_RDMA_EVENT               0x80
-#define SMBDIRECT_LOG_RDMA_MR                  0x100
-#define SMBDIRECT_LOG_RDMA_RW                  0x200
-#define SMBDIRECT_LOG_NEGOTIATE                        0x400
                void *private_ptr;
                bool (*needed)(struct smbdirect_socket *sc,
                               void *private_ptr,