From: Mohsin Kazmi Date: Thu, 15 May 2025 17:31:16 +0000 (+0000) Subject: af_packet: fix the error handling on transmit X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=85c2de94faf259fc2ef97c553b2f6b861a42913c;p=vpp.git af_packet: fix the error handling on transmit Type: fix Signed-off-by: Mohsin Kazmi Change-Id: If9fe1bf36b2fb18ade876df1dd9f157ccbb694d1 --- diff --git a/src/plugins/af_packet/device.c b/src/plugins/af_packet/device.c index 993e7cb137d..79e3d7b40d0 100644 --- a/src/plugins/af_packet/device.c +++ b/src/plugins/af_packet/device.c @@ -72,6 +72,21 @@ typedef struct vlib_buffer_t buffer; } af_packet_tx_trace_t; +always_inline word +af_packet_error_is_fatal (word error) +{ + switch (error) + { +#ifdef CLIB_UNIX + case EAGAIN: + case ENOBUFS: + case EINTR: + return 0; +#endif + } + return 1; +} + #ifndef CLIB_MARCH_VARIANT u8 * format_af_packet_device_name (u8 * s, va_list * args) @@ -583,7 +598,7 @@ VNET_DEVICE_CLASS_TX_FN (af_packet_device_class) (vlib_main_t * vm, */ uword counter; - if (unix_error_is_fatal (errno)) + if (af_packet_error_is_fatal (errno)) { counter = AF_PACKET_TX_ERROR_TXRING_FATAL; vlib_log_err (apm->log_class,