4141#define SMB_DIRECT_PORT_IWARP 5445
4242#define SMB_DIRECT_PORT_INFINIBAND 445
4343
44- #define SMB_DIRECT_VERSION_LE cpu_to_le16(SMBDIRECT_V1)
45-
4644/* SMB_DIRECT negotiation timeout (for the server) in seconds */
4745#define SMB_DIRECT_NEGOTIATE_TIMEOUT 5
4846
5856 */
5957#define SMB_DIRECT_CM_INITIATOR_DEPTH 8
6058
61- /* Maximum number of retries on data transfer operations */
62- #define SMB_DIRECT_CM_RETRY 6
63- /* No need to retry on Receiver Not Ready since SMB_DIRECT manages credits */
64- #define SMB_DIRECT_CM_RNR_RETRY 0
65-
6659/*
6760 * User configurable initial values per SMB_DIRECT transport connection
6861 * as defined in [MS-SMBD] 3.1.1.1
@@ -119,7 +112,7 @@ static struct workqueue_struct *smb_direct_wq;
119112struct smb_direct_transport {
120113 struct ksmbd_transport transport ;
121114
122- struct smbdirect_socket socket ;
115+ struct smbdirect_socket * socket ;
123116};
124117
125118static bool smb_direct_logging_needed (struct smbdirect_socket * sc ,
@@ -196,15 +189,13 @@ void init_smbd_max_io_size(unsigned int sz)
196189unsigned int get_smbd_max_read_write_size (struct ksmbd_transport * kt )
197190{
198191 struct smb_direct_transport * t ;
199- struct smbdirect_socket * sc ;
200192 const struct smbdirect_socket_parameters * sp ;
201193
202194 if (kt -> ops != & ksmbd_smb_direct_transport_ops )
203195 return 0 ;
204196
205197 t = SMBD_TRANS (kt );
206- sc = & t -> socket ;
207- sp = smbdirect_socket_get_current_parameters (sc );
198+ sp = smbdirect_socket_get_current_parameters (t -> socket );
208199
209200 return sp -> max_read_write_size ;
210201}
@@ -237,10 +228,9 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
237228 t = kzalloc_obj (* t , KSMBD_DEFAULT_GFP );
238229 if (!t )
239230 return NULL ;
240- sc = & t -> socket ;
241- ret = smbdirect_socket_init_accepting (cm_id , sc );
231+ ret = smbdirect_socket_create_accepting (cm_id , & sc );
242232 if (ret )
243- goto socket_init_failed ;
233+ goto socket_create_failed ;
244234 smbdirect_socket_set_logging (sc , NULL ,
245235 smb_direct_logging_needed ,
246236 smb_direct_logging_vaprintf );
@@ -265,36 +255,39 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
265255 conn -> transport = KSMBD_TRANS (t );
266256 KSMBD_TRANS (t )-> conn = conn ;
267257 KSMBD_TRANS (t )-> ops = & ksmbd_smb_direct_transport_ops ;
258+
259+ t -> socket = sc ;
268260 return t ;
269261
270262conn_alloc_failed :
271263set_workqueue_failed :
272264set_settings_failed :
273265set_params_failed :
274- socket_init_failed :
266+ smbdirect_socket_release (sc );
267+ socket_create_failed :
275268 kfree (t );
276269 return NULL ;
277270}
278271
279272static void smb_direct_free_transport (struct ksmbd_transport * kt )
280273{
281- kfree (SMBD_TRANS (kt ));
274+ struct smb_direct_transport * t = SMBD_TRANS (kt );
275+
276+ smbdirect_socket_release (t -> socket );
277+ kfree (t );
282278}
283279
284280static void free_transport (struct smb_direct_transport * t )
285281{
286- struct smbdirect_socket * sc = & t -> socket ;
287-
288- smbdirect_socket_destroy_sync (sc );
289-
282+ smbdirect_socket_shutdown (t -> socket );
290283 ksmbd_conn_free (KSMBD_TRANS (t )-> conn );
291284}
292285
293286static int smb_direct_read (struct ksmbd_transport * t , char * buf ,
294287 unsigned int size , int unused )
295288{
296289 struct smb_direct_transport * st = SMBD_TRANS (t );
297- struct smbdirect_socket * sc = & st -> socket ;
290+ struct smbdirect_socket * sc = st -> socket ;
298291 struct msghdr msg = { .msg_flags = 0 , };
299292 struct kvec iov = {
300293 .iov_base = buf ,
@@ -315,7 +308,7 @@ static int smb_direct_writev(struct ksmbd_transport *t,
315308 bool need_invalidate , unsigned int remote_key )
316309{
317310 struct smb_direct_transport * st = SMBD_TRANS (t );
318- struct smbdirect_socket * sc = & st -> socket ;
311+ struct smbdirect_socket * sc = st -> socket ;
319312 struct iov_iter iter ;
320313
321314 iov_iter_kvec (& iter , ITER_SOURCE , iov , niovs , buflen );
@@ -330,7 +323,7 @@ static int smb_direct_rdma_write(struct ksmbd_transport *t,
330323 unsigned int desc_len )
331324{
332325 struct smb_direct_transport * st = SMBD_TRANS (t );
333- struct smbdirect_socket * sc = & st -> socket ;
326+ struct smbdirect_socket * sc = st -> socket ;
334327
335328 return smbdirect_connection_rdma_xmit (sc , buf , buflen ,
336329 desc , desc_len , false);
@@ -342,7 +335,7 @@ static int smb_direct_rdma_read(struct ksmbd_transport *t,
342335 unsigned int desc_len )
343336{
344337 struct smb_direct_transport * st = SMBD_TRANS (t );
345- struct smbdirect_socket * sc = & st -> socket ;
338+ struct smbdirect_socket * sc = st -> socket ;
346339
347340 return smbdirect_connection_rdma_xmit (sc , buf , buflen ,
348341 desc , desc_len , true);
@@ -351,27 +344,27 @@ static int smb_direct_rdma_read(struct ksmbd_transport *t,
351344static void smb_direct_disconnect (struct ksmbd_transport * t )
352345{
353346 struct smb_direct_transport * st = SMBD_TRANS (t );
354- struct smbdirect_socket * sc = & st -> socket ;
347+ struct smbdirect_socket * sc = st -> socket ;
355348
356- ksmbd_debug (RDMA , "Disconnecting cm_id =%p\n" , sc -> rdma . cm_id );
349+ ksmbd_debug (RDMA , "Disconnecting sc =%p\n" , sc );
357350
358351 free_transport (st );
359352}
360353
361354static void smb_direct_shutdown (struct ksmbd_transport * t )
362355{
363356 struct smb_direct_transport * st = SMBD_TRANS (t );
364- struct smbdirect_socket * sc = & st -> socket ;
357+ struct smbdirect_socket * sc = st -> socket ;
365358
366- ksmbd_debug (RDMA , "smb-direct shutdown cm_id =%p\n" , sc -> rdma . cm_id );
359+ ksmbd_debug (RDMA , "smb-direct shutdown sc =%p\n" , sc );
367360
368361 smbdirect_socket_shutdown (sc );
369362}
370363
371364static int smb_direct_prepare (struct ksmbd_transport * t )
372365{
373366 struct smb_direct_transport * st = SMBD_TRANS (t );
374- struct smbdirect_socket * sc = & st -> socket ;
367+ struct smbdirect_socket * sc = st -> socket ;
375368 int ret ;
376369
377370 ksmbd_debug (RDMA , "SMB_DIRECT Waiting for connection\n" );
@@ -405,7 +398,7 @@ static int smb_direct_handle_connect_request(struct rdma_cm_id *new_cm_id,
405398 t = alloc_transport (new_cm_id );
406399 if (!t )
407400 return - ENOMEM ;
408- sc = & t -> socket ;
401+ sc = t -> socket ;
409402
410403 ret = smbdirect_accept_connect_request (sc , & event -> param .conn );
411404 if (ret )
0 commit comments