1 /* SPDX-License-Identifier: BSD-3-Clause 2 * 3 * Copyright(c) 2019-2021 Xilinx, Inc. 4 * Copyright(c) 2016-2019 Solarflare Communications Inc. 5 * 6 * This software was jointly developed between OKTET Labs (under contract 7 * for Solarflare) and Solarflare Communications, Inc. 8 */ 9 10 #ifndef _SFC_KVARGS_H 11 #define _SFC_KVARGS_H 12 13 #include <rte_kvargs.h> 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 #define SFC_KVARG_VALUES_BOOL "[1|y|yes|on|0|n|no|off]" 20 21 #define SFC_KVARG_PERF_PROFILE "perf_profile" 22 23 #define SFC_KVARG_PERF_PROFILE_AUTO "auto" 24 #define SFC_KVARG_PERF_PROFILE_THROUGHPUT "throughput" 25 #define SFC_KVARG_PERF_PROFILE_LOW_LATENCY "low-latency" 26 #define SFC_KVARG_VALUES_PERF_PROFILE \ 27 "[" SFC_KVARG_PERF_PROFILE_AUTO "|" \ 28 SFC_KVARG_PERF_PROFILE_THROUGHPUT "|" \ 29 SFC_KVARG_PERF_PROFILE_LOW_LATENCY "]" 30 31 #define SFC_KVARG_STATS_UPDATE_PERIOD_MS "stats_update_period_ms" 32 33 #define SFC_KVARG_DATAPATH_EFX "efx" 34 #define SFC_KVARG_DATAPATH_EF10 "ef10" 35 #define SFC_KVARG_DATAPATH_EF10_SIMPLE "ef10_simple" 36 #define SFC_KVARG_DATAPATH_EF10_ESSB "ef10_essb" 37 #define SFC_KVARG_DATAPATH_EF100 "ef100" 38 39 #define SFC_KVARG_RX_DATAPATH "rx_datapath" 40 #define SFC_KVARG_VALUES_RX_DATAPATH \ 41 "[" SFC_KVARG_DATAPATH_EFX "|" \ 42 SFC_KVARG_DATAPATH_EF10 "|" \ 43 SFC_KVARG_DATAPATH_EF10_ESSB "|" \ 44 SFC_KVARG_DATAPATH_EF100 "]" 45 46 #define SFC_KVARG_TX_DATAPATH "tx_datapath" 47 #define SFC_KVARG_VALUES_TX_DATAPATH \ 48 "[" SFC_KVARG_DATAPATH_EFX "|" \ 49 SFC_KVARG_DATAPATH_EF10 "|" \ 50 SFC_KVARG_DATAPATH_EF10_SIMPLE "|" \ 51 SFC_KVARG_DATAPATH_EF100 "]" 52 53 #define SFC_KVARG_FW_VARIANT "fw_variant" 54 55 #define SFC_KVARG_FW_VARIANT_DONT_CARE "dont-care" 56 #define SFC_KVARG_FW_VARIANT_FULL_FEATURED "full-feature" 57 #define SFC_KVARG_FW_VARIANT_LOW_LATENCY "ultra-low-latency" 58 #define SFC_KVARG_FW_VARIANT_PACKED_STREAM "capture-packed-stream" 59 #define SFC_KVARG_FW_VARIANT_DPDK "dpdk" 60 #define SFC_KVARG_VALUES_FW_VARIANT \ 61 "[" SFC_KVARG_FW_VARIANT_DONT_CARE "|" \ 62 SFC_KVARG_FW_VARIANT_FULL_FEATURED "|" \ 63 SFC_KVARG_FW_VARIANT_LOW_LATENCY "|" \ 64 SFC_KVARG_FW_VARIANT_PACKED_STREAM "|" \ 65 SFC_KVARG_FW_VARIANT_DPDK "]" 66 67 #define SFC_KVARG_RXD_WAIT_TIMEOUT_NS "rxd_wait_timeout_ns" 68 69 struct sfc_adapter; 70 71 int sfc_kvargs_parse(struct sfc_adapter *sa); 72 void sfc_kvargs_cleanup(struct sfc_adapter *sa); 73 74 int sfc_kvargs_process(struct sfc_adapter *sa, const char *key_match, 75 arg_handler_t handler, void *opaque_arg); 76 77 int sfc_kvarg_bool_handler(const char *key, const char *value_str, 78 void *opaque); 79 int sfc_kvarg_long_handler(const char *key, const char *value_str, 80 void *opaque); 81 int sfc_kvarg_string_handler(const char *key, const char *value_str, 82 void *opaque); 83 84 #ifdef __cplusplus 85 } 86 #endif 87 88 #endif /* _SFC_KVARGS_H */ 89