mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
smb: smbdirect: introduce smbdirect_public.h with prototypes
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>
This commit is contained in:
parent
5e4bf7fadd
commit
b2261ceedd
|
|
@ -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 @@ static int smbdirect_accept_connect_request(struct smbdirect_socket *sc,
|
|||
init_params_failed:
|
||||
return ret;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_accept_connect_request);
|
||||
|
||||
static int smbdirect_accept_init_params(struct smbdirect_socket *sc)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 @@ static int smbdirect_connection_send_single_iter(struct smbdirect_socket *sc,
|
|||
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;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_wait_zero_pending);
|
||||
|
||||
__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_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 @@ static int smbdirect_connection_recvmsg(struct smbdirect_socket *sc,
|
|||
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 @@ smbdirect_connection_register_mr_io(struct smbdirect_socket *sc,
|
|||
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 @@ static void smbdirect_connection_deregister_mr_io(struct smbdirect_mr_io *mr)
|
|||
if (!kref_put(&mr->kref, smbdirect_mr_io_free_locked))
|
||||
mutex_unlock(&mr->mutex);
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_deregister_mr_io);
|
||||
|
|
|
|||
154
fs/smb/common/smbdirect/smbdirect_public.h
Normal file
154
fs/smb/common/smbdirect/smbdirect_public.h
Normal file
|
|
@ -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__ */
|
||||
|
|
@ -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 @@ static int smbdirect_connection_rdma_xmit(struct smbdirect_socket *sc,
|
|||
kfree(msg);
|
||||
goto out;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_rdma_xmit);
|
||||
|
|
|
|||
|
|
@ -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 @@ static int smbdirect_socket_create_kern(struct net *net, struct smbdirect_socket
|
|||
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 @@ static int smbdirect_socket_create_accepting(struct rdma_cm_id *id, struct smbdi
|
|||
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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user