diff options
author | Damjan Marion <damarion@cisco.com> | 2020-08-20 17:28:20 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2020-09-11 07:49:45 +0000 |
commit | 66bb7dd64ee2377103e18b96f1e6bf6405de44b5 (patch) | |
tree | 1a98102ba4c0346431de03717d0c6dbf7344e443 /src/plugins/avf/avf.h | |
parent | 78681def21b931309a779dfc6a5cbc6ff8b1f814 (diff) |
avf: fix race between avf process node and avf_delete_if(...)
It may happen that process node is suspended while it waits for response
from adminq and during that time CLI or API process can call
avf_delete_if. When avf process node resumes, it may happen that device
is not there anymeore.
This patch delegates interface deletion to process node, so CLI/API
process just sends signal instead of deleting device instance itself.
Type: fix
Change-Id: I7f12e12df3071650f6e60ad7eb5af23b7acfe335
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/plugins/avf/avf.h')
-rw-r--r-- | src/plugins/avf/avf.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/plugins/avf/avf.h b/src/plugins/avf/avf.h index 5d517826009..4b35899da38 100644 --- a/src/plugins/avf/avf.h +++ b/src/plugins/avf/avf.h @@ -200,7 +200,7 @@ typedef struct typedef enum { AVF_PROCESS_EVENT_START = 1, - AVF_PROCESS_EVENT_STOP = 2, + AVF_PROCESS_EVENT_DELETE_IF = 2, AVF_PROCESS_EVENT_AQ_INT = 3, } avf_process_event_t; @@ -246,9 +246,9 @@ typedef struct } avf_create_if_args_t; void avf_create_if (vlib_main_t * vm, avf_create_if_args_t * args); -void avf_delete_if (vlib_main_t * vm, avf_device_t * ad); extern vlib_node_registration_t avf_input_node; +extern vlib_node_registration_t avf_process_node; extern vnet_device_class_t avf_device_class; /* format.c */ |