diff options
Diffstat (limited to 'net/rxrpc/sendmsg.c')
-rw-r--r-- | net/rxrpc/sendmsg.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/net/rxrpc/sendmsg.c b/net/rxrpc/sendmsg.c index 5d3f33ce6d41..6a1547b270fe 100644 --- a/net/rxrpc/sendmsg.c +++ b/net/rxrpc/sendmsg.c | |||
@@ -176,7 +176,7 @@ static int rxrpc_queue_packet(struct rxrpc_sock *rx, struct rxrpc_call *call, | |||
176 | skb->tstamp = ktime_get_real(); | 176 | skb->tstamp = ktime_get_real(); |
177 | 177 | ||
178 | ix = seq & RXRPC_RXTX_BUFF_MASK; | 178 | ix = seq & RXRPC_RXTX_BUFF_MASK; |
179 | rxrpc_get_skb(skb, rxrpc_skb_tx_got); | 179 | rxrpc_get_skb(skb, rxrpc_skb_got); |
180 | call->rxtx_annotations[ix] = annotation; | 180 | call->rxtx_annotations[ix] = annotation; |
181 | smp_wmb(); | 181 | smp_wmb(); |
182 | call->rxtx_buffer[ix] = skb; | 182 | call->rxtx_buffer[ix] = skb; |
@@ -226,6 +226,7 @@ static int rxrpc_queue_packet(struct rxrpc_sock *rx, struct rxrpc_call *call, | |||
226 | rxrpc_set_call_completion(call, | 226 | rxrpc_set_call_completion(call, |
227 | RXRPC_CALL_LOCAL_ERROR, | 227 | RXRPC_CALL_LOCAL_ERROR, |
228 | 0, ret); | 228 | 0, ret); |
229 | rxrpc_notify_socket(call); | ||
229 | goto out; | 230 | goto out; |
230 | } | 231 | } |
231 | _debug("need instant resend %d", ret); | 232 | _debug("need instant resend %d", ret); |
@@ -247,7 +248,7 @@ static int rxrpc_queue_packet(struct rxrpc_sock *rx, struct rxrpc_call *call, | |||
247 | } | 248 | } |
248 | 249 | ||
249 | out: | 250 | out: |
250 | rxrpc_free_skb(skb, rxrpc_skb_tx_freed); | 251 | rxrpc_free_skb(skb, rxrpc_skb_freed); |
251 | _leave(" = %d", ret); | 252 | _leave(" = %d", ret); |
252 | return ret; | 253 | return ret; |
253 | } | 254 | } |
@@ -288,7 +289,7 @@ static int rxrpc_send_data(struct rxrpc_sock *rx, | |||
288 | 289 | ||
289 | skb = call->tx_pending; | 290 | skb = call->tx_pending; |
290 | call->tx_pending = NULL; | 291 | call->tx_pending = NULL; |
291 | rxrpc_see_skb(skb, rxrpc_skb_tx_seen); | 292 | rxrpc_see_skb(skb, rxrpc_skb_seen); |
292 | 293 | ||
293 | copied = 0; | 294 | copied = 0; |
294 | do { | 295 | do { |
@@ -335,7 +336,9 @@ static int rxrpc_send_data(struct rxrpc_sock *rx, | |||
335 | if (!skb) | 336 | if (!skb) |
336 | goto maybe_error; | 337 | goto maybe_error; |
337 | 338 | ||
338 | rxrpc_new_skb(skb, rxrpc_skb_tx_new); | 339 | sp = rxrpc_skb(skb); |
340 | sp->rx_flags |= RXRPC_SKB_TX_BUFFER; | ||
341 | rxrpc_new_skb(skb, rxrpc_skb_new); | ||
339 | 342 | ||
340 | _debug("ALLOC SEND %p", skb); | 343 | _debug("ALLOC SEND %p", skb); |
341 | 344 | ||
@@ -345,7 +348,6 @@ static int rxrpc_send_data(struct rxrpc_sock *rx, | |||
345 | skb_reserve(skb, call->conn->security_size); | 348 | skb_reserve(skb, call->conn->security_size); |
346 | skb->len += call->conn->security_size; | 349 | skb->len += call->conn->security_size; |
347 | 350 | ||
348 | sp = rxrpc_skb(skb); | ||
349 | sp->remain = chunk; | 351 | sp->remain = chunk; |
350 | if (sp->remain > skb_tailroom(skb)) | 352 | if (sp->remain > skb_tailroom(skb)) |
351 | sp->remain = skb_tailroom(skb); | 353 | sp->remain = skb_tailroom(skb); |
@@ -438,7 +440,7 @@ out: | |||
438 | return ret; | 440 | return ret; |
439 | 441 | ||
440 | call_terminated: | 442 | call_terminated: |
441 | rxrpc_free_skb(skb, rxrpc_skb_tx_freed); | 443 | rxrpc_free_skb(skb, rxrpc_skb_freed); |
442 | _leave(" = %d", call->error); | 444 | _leave(" = %d", call->error); |
443 | return call->error; | 445 | return call->error; |
444 | 446 | ||