X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fipsec%2Fesp.h;fp=src%2Fvnet%2Fipsec%2Fesp.h;h=72abb9f0dbdbd58e9142a1f6d1bdd4e2b096ac48;hb=0c1454c1f3abfdbcf9ceb9cdbd4e3596a94d6a0f;hp=311882af08e33b9d43fe8781350d3e911c01ba7d;hpb=1000125395e3bf4be5a9026650074e8fedbeb24b;p=vpp.git diff --git a/src/vnet/ipsec/esp.h b/src/vnet/ipsec/esp.h index 311882af08e..72abb9f0dbd 100644 --- a/src/vnet/ipsec/esp.h +++ b/src/vnet/ipsec/esp.h @@ -211,31 +211,6 @@ esp_decrypt_set_next_index (vlib_buffer_t *b, vlib_node_runtime_t *node, drop_next, sa_index); } -/* when submitting a frame is failed, drop all buffers in the frame */ -always_inline u32 -esp_async_recycle_failed_submit (vlib_main_t *vm, vnet_crypto_async_frame_t *f, - vlib_node_runtime_t *node, u32 err, - u32 ipsec_sa_err, u16 index, u32 *from, - u16 *nexts, u16 drop_next_index) -{ - vlib_buffer_t *b; - u32 n_drop = f->n_elts; - u32 *bi = f->buffer_indices; - - while (n_drop--) - { - from[index] = bi[0]; - b = vlib_get_buffer (vm, bi[0]); - ipsec_set_next_index (b, node, vm->thread_index, err, ipsec_sa_err, - index, nexts, drop_next_index, - vnet_buffer (b)->ipsec.sad_index); - bi++; - index++; - } - - return (f->n_elts); -} - /** * The post data structure to for esp_encrypt/decrypt_inline to write to * vib_buffer_t opaque unused field, and for post nodes to pick up after @@ -310,6 +285,43 @@ typedef struct extern esp_async_post_next_t esp_encrypt_async_next; extern esp_async_post_next_t esp_decrypt_async_next; +/* when submitting a frame is failed, drop all buffers in the frame */ +always_inline u32 +esp_async_recycle_failed_submit (vlib_main_t *vm, vnet_crypto_async_frame_t *f, + vlib_node_runtime_t *node, u32 err, + u32 ipsec_sa_err, u16 index, u32 *from, + u16 *nexts, u16 drop_next_index, + bool is_encrypt) +{ + vlib_buffer_t *b; + u32 n_drop = f->n_elts; + u32 *bi = f->buffer_indices; + + while (n_drop--) + { + u32 sa_index; + + from[index] = bi[0]; + b = vlib_get_buffer (vm, bi[0]); + + if (is_encrypt) + { + sa_index = vnet_buffer (b)->ipsec.sad_index; + } + else + { + sa_index = esp_post_data (b)->decrypt_data.sa_index; + } + + ipsec_set_next_index (b, node, vm->thread_index, err, ipsec_sa_err, + index, nexts, drop_next_index, sa_index); + bi++; + index++; + } + + return (f->n_elts); +} + #endif /* __ESP_H__ */ /*