tls_device.c (ed32f8d42cee118b075e4372a55c7739a11094b2) tls_device.c (b54c9d5bd6e38edac9ce3a3f95f14a1292b5268d)
1/* Copyright (c) 2018, Mellanox Technologies All rights reserved.
2 *
3 * This software is available to you under a choice of one of two
4 * licenses. You may choose to be licensed under the terms of the GNU
5 * General Public License (GPL) Version 2, available from the file
6 * COPYING in the main directory of this source tree, or the
7 * OpenIB.org BSD license below:
8 *

--- 229 unchanged lines hidden (view full) ---

238
239static void tls_append_frag(struct tls_record_info *record,
240 struct page_frag *pfrag,
241 int size)
242{
243 skb_frag_t *frag;
244
245 frag = &record->frags[record->num_frags - 1];
1/* Copyright (c) 2018, Mellanox Technologies All rights reserved.
2 *
3 * This software is available to you under a choice of one of two
4 * licenses. You may choose to be licensed under the terms of the GNU
5 * General Public License (GPL) Version 2, available from the file
6 * COPYING in the main directory of this source tree, or the
7 * OpenIB.org BSD license below:
8 *

--- 229 unchanged lines hidden (view full) ---

238
239static void tls_append_frag(struct tls_record_info *record,
240 struct page_frag *pfrag,
241 int size)
242{
243 skb_frag_t *frag;
244
245 frag = &record->frags[record->num_frags - 1];
246 if (frag->page.p == pfrag->page &&
247 frag->page_offset + frag->size == pfrag->offset) {
248 frag->size += size;
246 if (skb_frag_page(frag) == pfrag->page &&
247 skb_frag_off(frag) + skb_frag_size(frag) == pfrag->offset) {
248 skb_frag_size_add(frag, size);
249 } else {
250 ++frag;
249 } else {
250 ++frag;
251 frag->page.p = pfrag->page;
252 frag->page_offset = pfrag->offset;
253 frag->size = size;
251 __skb_frag_set_page(frag, pfrag->page);
252 skb_frag_off_set(frag, pfrag->offset);
253 skb_frag_size_set(frag, size);
254 ++record->num_frags;
255 get_page(pfrag->page);
256 }
257
258 pfrag->offset += size;
259 record->len += size;
260}
261

--- 34 unchanged lines hidden (view full) ---

296 tls_device_resync_tx(sk, ctx, tp->write_seq);
297
298 tls_advance_record_sn(sk, prot, &ctx->tx);
299
300 for (i = 0; i < record->num_frags; i++) {
301 frag = &record->frags[i];
302 sg_unmark_end(&offload_ctx->sg_tx_data[i]);
303 sg_set_page(&offload_ctx->sg_tx_data[i], skb_frag_page(frag),
254 ++record->num_frags;
255 get_page(pfrag->page);
256 }
257
258 pfrag->offset += size;
259 record->len += size;
260}
261

--- 34 unchanged lines hidden (view full) ---

296 tls_device_resync_tx(sk, ctx, tp->write_seq);
297
298 tls_advance_record_sn(sk, prot, &ctx->tx);
299
300 for (i = 0; i < record->num_frags; i++) {
301 frag = &record->frags[i];
302 sg_unmark_end(&offload_ctx->sg_tx_data[i]);
303 sg_set_page(&offload_ctx->sg_tx_data[i], skb_frag_page(frag),
304 frag->size, frag->page_offset);
305 sk_mem_charge(sk, frag->size);
304 skb_frag_size(frag), skb_frag_off(frag));
305 sk_mem_charge(sk, skb_frag_size(frag));
306 get_page(skb_frag_page(frag));
307 }
308 sg_mark_end(&offload_ctx->sg_tx_data[record->num_frags - 1]);
309
310 /* all ready, send */
311 return tls_push_sg(sk, ctx, offload_ctx->sg_tx_data, 0, flags);
312}
313

--- 5 unchanged lines hidden (view full) ---

319 skb_frag_t *frag;
320
321 record = kmalloc(sizeof(*record), GFP_KERNEL);
322 if (!record)
323 return -ENOMEM;
324
325 frag = &record->frags[0];
326 __skb_frag_set_page(frag, pfrag->page);
306 get_page(skb_frag_page(frag));
307 }
308 sg_mark_end(&offload_ctx->sg_tx_data[record->num_frags - 1]);
309
310 /* all ready, send */
311 return tls_push_sg(sk, ctx, offload_ctx->sg_tx_data, 0, flags);
312}
313

--- 5 unchanged lines hidden (view full) ---

319 skb_frag_t *frag;
320
321 record = kmalloc(sizeof(*record), GFP_KERNEL);
322 if (!record)
323 return -ENOMEM;
324
325 frag = &record->frags[0];
326 __skb_frag_set_page(frag, pfrag->page);
327 frag->page_offset = pfrag->offset;
327 skb_frag_off_set(frag, pfrag->offset);
328 skb_frag_size_set(frag, prepend_size);
329
330 get_page(pfrag->page);
331 pfrag->offset += prepend_size;
332
333 record->num_frags = 1;
334 record->len = prepend_size;
335 offload_ctx->open_record = record;

--- 844 unchanged lines hidden ---
328 skb_frag_size_set(frag, prepend_size);
329
330 get_page(pfrag->page);
331 pfrag->offset += prepend_size;
332
333 record->num_frags = 1;
334 record->len = prepend_size;
335 offload_ctx->open_record = record;

--- 844 unchanged lines hidden ---