/* SPDX-License-Identifier: Apache-2.0 * Copyright(c) 2023 Cisco Systems, Inc. */ #ifndef _ENA_INLINES_H_ #define _ENA_INLINES_H_ #include #include #include #define ena_log_is_debug() \ vlib_log_is_enabled (VLIB_LOG_LEVEL_DEBUG, ena_log.class) #define ena_stats_log_err(dev, f, ...) \ vlib_log (VLIB_LOG_LEVEL_ERR, ena_stats_log.class, "%U: " f, \ format_vnet_dev_addr, dev, ##__VA_ARGS__) #define ena_stats_log_debug(dev, f, ...) \ vlib_log (VLIB_LOG_LEVEL_DEBUG, ena_stats_log.class, "%U: " f, \ format_vnet_dev_addr, dev, ##__VA_ARGS__) #define ena_stats_log_is_debug() \ vlib_log_is_enabled (VLIB_LOG_LEVEL_DEBUG, ena_stats_log.class) static_always_inline void ena_set_mem_addr (vlib_main_t *vm, vnet_dev_t *dev, ena_mem_addr_t *m, void *p) { u64 pa = vnet_dev_get_dma_addr (vm, dev, p); *m = (ena_mem_addr_t){ .addr_lo = (u32) pa, .addr_hi = (u16) (pa >> 32) }; } static_always_inline int ena_aq_feature_is_supported (vnet_dev_t *dev, ena_aq_feature_id_t feat_id) { ena_device_t *ed = vnet_dev_get_data (dev); return (ed->dev_attr.supported_features & (1U << feat_id)) != 0; } #endif /* ENA_INLINES_H */