On Mon, 9 Feb 2026 09:24:47 +0800 [email protected] wrote: > static s32 sxe_hdc_cmd_process(struct sxe_hw *hw, u64 trace_id, > + struct sxe_hdc_trans_info *trans_info) > +{ > + s32 ret; > + u8 retry_idx; > + struct sxe_adapter *adapter = hw->adapter; > + sigset_t old_mask, new_mask; > + sigemptyset(&new_mask); > + sigaddset(&new_mask, SIGINT); > + sigaddset(&new_mask, SIGTERM); > + ret = pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask); > + if (ret) { > + LOG_ERROR_BDF("hdc set signal mask failed, ret=%d", ret); > + goto l_ret; > + } > + > + LOG_DEBUG_BDF("hw[%p] cmd trace=0x%" SXE_PRIX64 "", hw, trace_id); > + > + ret = sem_wait(sxe_hdc_sema_get()); > + if (ret) { > + LOG_WARN_BDF("hw[%p] hdc concurrency full", hw); > + goto l_ret; > + } > + > + for (retry_idx = 0; retry_idx < 250; retry_idx++) { > + ret = sxe_hdc_packet_trans(hw, trace_id, trans_info); > + if (ret == SXE_SUCCESS) { > + goto l_up; > + } else if (ret == -SXE_HDC_RETRY_ERR) { > + rte_delay_ms(10); > + continue; > + } else { > + LOG_ERROR_BDF("sxe hdc packet trace_id=0x%" SXE_PRIX64 > + " trans error, ret=%d", trace_id, ret); > + ret = -EFAULT; > + goto l_up; > + } > + } > + > +l_up: > + LOG_DEBUG_BDF("hw[%p] cmd trace=0x%" SXE_PRIX64 "", hw, trace_id); > + sem_post(sxe_hdc_sema_get()); > +l_ret: > + ret = pthread_sigmask(SIG_SETMASK, &old_mask, NULL); > + if (ret) > + LOG_ERROR_BDF("hdc restore old signal mask failed, ret=%d", > ret); > + > + if (ret == -SXE_HDC_RETRY_ERR) > + ret = -EFAULT; > + > + return ret; > +} > +
Drivers must not use or manipulate signals. Doing so could break applications. Several years ago DPDK broke a Network Appliance vendors app from the signal manipulation in TAP device. This is a blocker for me.

