@@ -180,8 +180,8 @@ int smc_tx_sendmsg(struct smc_sock *smc, struct msghdr *msg, size_t len)
180180 tx_cnt_prep = prep .count ;
181181 /* determine chunks where to write into sndbuf */
182182 /* either unwrapped case, or 1st chunk of wrapped case */
183- chunk_len = min_t (size_t ,
184- copylen , conn -> sndbuf_size - tx_cnt_prep );
183+ chunk_len = min_t (size_t , copylen , conn -> sndbuf_desc -> len -
184+ tx_cnt_prep );
185185 chunk_len_sum = chunk_len ;
186186 chunk_off = tx_cnt_prep ;
187187 smc_sndbuf_sync_sg_for_cpu (conn );
@@ -206,21 +206,21 @@ int smc_tx_sendmsg(struct smc_sock *smc, struct msghdr *msg, size_t len)
206206 }
207207 smc_sndbuf_sync_sg_for_device (conn );
208208 /* update cursors */
209- smc_curs_add (conn -> sndbuf_size , & prep , copylen );
209+ smc_curs_add (conn -> sndbuf_desc -> len , & prep , copylen );
210210 smc_curs_write (& conn -> tx_curs_prep ,
211211 smc_curs_read (& prep , conn ),
212212 conn );
213213 /* increased in send tasklet smc_cdc_tx_handler() */
214214 smp_mb__before_atomic ();
215215 atomic_sub (copylen , & conn -> sndbuf_space );
216- /* guarantee 0 <= sndbuf_space <= sndbuf_size */
216+ /* guarantee 0 <= sndbuf_space <= sndbuf_desc->len */
217217 smp_mb__after_atomic ();
218218 /* since we just produced more new data into sndbuf,
219219 * trigger sndbuf consumer: RDMA write into peer RMBE and CDC
220220 */
221221 if ((msg -> msg_flags & MSG_MORE || smc_tx_is_corked (smc )) &&
222222 (atomic_read (& conn -> sndbuf_space ) >
223- (conn -> sndbuf_size >> 1 )))
223+ (conn -> sndbuf_desc -> len >> 1 )))
224224 /* for a corked socket defer the RDMA writes if there
225225 * is still sufficient sndbuf_space available
226226 */
@@ -286,7 +286,7 @@ static inline void smc_tx_advance_cursors(struct smc_connection *conn,
286286 atomic_sub (len , & conn -> peer_rmbe_space );
287287 /* guarantee 0 <= peer_rmbe_space <= peer_rmbe_size */
288288 smp_mb__after_atomic ();
289- smc_curs_add (conn -> sndbuf_size , sent , len );
289+ smc_curs_add (conn -> sndbuf_desc -> len , sent , len );
290290}
291291
292292/* sndbuf consumer: prepare all necessary (src&dst) chunks of data transmit;
@@ -309,7 +309,7 @@ static int smc_tx_rdma_writes(struct smc_connection *conn)
309309 smc_curs_write (& sent , smc_curs_read (& conn -> tx_curs_sent , conn ), conn );
310310 smc_curs_write (& prep , smc_curs_read (& conn -> tx_curs_prep , conn ), conn );
311311 /* cf. wmem_alloc - (snd_max - snd_una) */
312- to_send = smc_curs_diff (conn -> sndbuf_size , & sent , & prep );
312+ to_send = smc_curs_diff (conn -> sndbuf_desc -> len , & sent , & prep );
313313 if (to_send <= 0 )
314314 return 0 ;
315315
@@ -351,12 +351,12 @@ static int smc_tx_rdma_writes(struct smc_connection *conn)
351351 dst_len_sum = dst_len ;
352352 src_off = sent .count ;
353353 /* dst_len determines the maximum src_len */
354- if (sent .count + dst_len <= conn -> sndbuf_size ) {
354+ if (sent .count + dst_len <= conn -> sndbuf_desc -> len ) {
355355 /* unwrapped src case: single chunk of entire dst_len */
356356 src_len = dst_len ;
357357 } else {
358358 /* wrapped src case: 2 chunks of sum dst_len; start with 1st: */
359- src_len = conn -> sndbuf_size - sent .count ;
359+ src_len = conn -> sndbuf_desc -> len - sent .count ;
360360 }
361361 src_len_sum = src_len ;
362362 dma_addr = sg_dma_address (conn -> sndbuf_desc -> sgt [SMC_SINGLE_LINK ].sgl );
@@ -368,8 +368,8 @@ static int smc_tx_rdma_writes(struct smc_connection *conn)
368368 sges [srcchunk ].lkey = link -> roce_pd -> local_dma_lkey ;
369369 num_sges ++ ;
370370 src_off += src_len ;
371- if (src_off >= conn -> sndbuf_size )
372- src_off -= conn -> sndbuf_size ;
371+ if (src_off >= conn -> sndbuf_desc -> len )
372+ src_off -= conn -> sndbuf_desc -> len ;
373373 /* modulo in send ring */
374374 if (src_len_sum == dst_len )
375375 break ; /* either on 1st or 2nd iteration */
@@ -387,7 +387,7 @@ static int smc_tx_rdma_writes(struct smc_connection *conn)
387387 dst_len = len - dst_len ; /* remainder */
388388 dst_len_sum += dst_len ;
389389 src_len = min_t (int ,
390- dst_len , conn -> sndbuf_size - sent .count );
390+ dst_len , conn -> sndbuf_desc -> len - sent .count );
391391 src_len_sum = src_len ;
392392 }
393393
@@ -484,11 +484,11 @@ void smc_tx_consumer_update(struct smc_connection *conn)
484484 smc_curs_write (& cfed ,
485485 smc_curs_read (& conn -> rx_curs_confirmed , conn ),
486486 conn );
487- to_confirm = smc_curs_diff (conn -> rmbe_size , & cfed , & cons );
487+ to_confirm = smc_curs_diff (conn -> rmb_desc -> len , & cfed , & cons );
488488
489489 if (conn -> local_rx_ctrl .prod_flags .cons_curs_upd_req ||
490490 ((to_confirm > conn -> rmbe_update_limit ) &&
491- ((to_confirm > (conn -> rmbe_size / 2 )) ||
491+ ((to_confirm > (conn -> rmb_desc -> len / 2 )) ||
492492 conn -> local_rx_ctrl .prod_flags .write_blocked ))) {
493493 if ((smc_cdc_get_slot_and_msg_send (conn ) < 0 ) &&
494494 conn -> alert_token_local ) { /* connection healthy */
0 commit comments