From 3313619bd53f1bafc5e48eb4642213fd5208c0e2 Mon Sep 17 00:00:00 2001 From: Lemmy Huang Date: Sun, 1 Sep 2024 11:33:12 +0800 Subject: [PATCH] cleancode: declare different cfg_params types Signed-off-by: Lemmy Huang --- src/lstack/core/lstack_cfg.c | 10 +- src/lstack/core/lstack_dpdk.c | 8 +- src/lstack/core/lstack_protocol_stack.c | 2 +- src/lstack/core/lstack_virtio.c | 4 +- src/lstack/include/lstack_cfg.h | 161 +++++++++++---------- src/lstack/include/lstack_protocol_stack.h | 2 +- src/lstack/netif/lstack_ethdev.c | 4 +- src/lstack/netif/lstack_vdev.c | 2 +- 8 files changed, 104 insertions(+), 89 deletions(-) diff --git a/src/lstack/core/lstack_cfg.c b/src/lstack/core/lstack_cfg.c index 882e60a..659a2a7 100644 --- a/src/lstack/core/lstack_cfg.c +++ b/src/lstack/core/lstack_cfg.c @@ -1300,9 +1300,9 @@ static int32_t parse_use_sockmap(void) static int32_t parse_nic_rxqueue_size(void) { int32_t ret; - PARSE_ARG(g_config_params.nic.rxqueue_size, "nic_rxqueue_size", 4096, + PARSE_ARG(g_config_params.rxqueue_size, "nic_rxqueue_size", 4096, NIC_QUEUE_SIZE_MIN, NIC_QUEUE_SIZE_MAX, ret); - if (!rte_is_power_of_2(g_config_params.nic.rxqueue_size)) { + if (!rte_is_power_of_2(g_config_params.rxqueue_size)) { LSTACK_LOG(ERR, LSTACK, "nic queue size only support power of two\n"); return -1; } @@ -1312,9 +1312,9 @@ static int32_t parse_nic_rxqueue_size(void) static int32_t parse_nic_txqueue_size(void) { int32_t ret; - PARSE_ARG(g_config_params.nic.txqueue_size, "nic_txqueue_size", 2048, + PARSE_ARG(g_config_params.txqueue_size, "nic_txqueue_size", 2048, NIC_QUEUE_SIZE_MIN, NIC_QUEUE_SIZE_MAX, ret); - if (!rte_is_power_of_2(g_config_params.nic.txqueue_size)) { + if (!rte_is_power_of_2(g_config_params.txqueue_size)) { LSTACK_LOG(ERR, LSTACK, "nic queue size only support power of two\n"); return -1; } @@ -1352,7 +1352,7 @@ static int32_t parse_stack_thread_mode(void) static int32_t parse_nic_vlan_mode(void) { int32_t ret; - PARSE_ARG(g_config_params.nic.vlan_mode, "nic_vlan_mode", -1, -1, 4094, ret); + PARSE_ARG(g_config_params.vlan_mode, "nic_vlan_mode", -1, -1, 4094, ret); return ret; } diff --git a/src/lstack/core/lstack_dpdk.c b/src/lstack/core/lstack_dpdk.c index f87e362..1fe0f0a 100644 --- a/src/lstack/core/lstack_dpdk.c +++ b/src/lstack/core/lstack_dpdk.c @@ -432,8 +432,8 @@ static int eth_params_init(struct eth_params *eth_params, uint16_t port_id, uint eth_params->port_id = port_id; eth_params->nb_queues = nb_queues; - eth_params->nb_rx_desc = get_global_cfg_params()->nic.rxqueue_size; - eth_params->nb_tx_desc = get_global_cfg_params()->nic.txqueue_size; + eth_params->nb_rx_desc = get_global_cfg_params()->rxqueue_size; + eth_params->nb_tx_desc = get_global_cfg_params()->txqueue_size; eth_params->conf.link_speeds = RTE_ETH_LINK_SPEED_AUTONEG; eth_params->conf.txmode.mq_mode = RTE_ETH_MQ_TX_NONE; eth_params->conf.rxmode.mq_mode = RTE_ETH_MQ_RX_NONE; @@ -571,7 +571,7 @@ int32_t dpdk_ethdev_init(int port_id) } /* after rte_eth_dev_configure */ - if ((get_global_cfg_params()->nic.vlan_mode != -1) && + if ((get_global_cfg_params()->vlan_mode != -1) && ((stack_group->rx_offload & RTE_ETH_RX_OFFLOAD_VLAN_FILTER) == RTE_ETH_RX_OFFLOAD_VLAN_FILTER)) { /* * vlan filter can be configured for switch,nic and software. @@ -583,7 +583,7 @@ int32_t dpdk_ethdev_init(int port_id) */ if ((get_global_cfg_params()->bond_mode != BONDING_MODE_8023AD) && (get_global_cfg_params()->bond_mode != BONDING_MODE_ALB)) { - ret = rte_eth_dev_vlan_filter(port_id, get_global_cfg_params()->nic.vlan_mode, 1); + ret = rte_eth_dev_vlan_filter(port_id, get_global_cfg_params()->vlan_mode, 1); if (ret != 0) { LSTACK_LOG(ERR, LSTACK, "dpdk add vlan filter failed ret = %d\n", ret); return -1; diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c index f1eeba1..d03b744 100644 --- a/src/lstack/core/lstack_protocol_stack.c +++ b/src/lstack/core/lstack_protocol_stack.c @@ -571,7 +571,7 @@ static int stack_group_init_mempool(void) struct cfg_params *cfg_params = get_global_cfg_params(); uint32_t total_mbufs = 0; uint32_t total_conn_mbufs = cfg_params->mbuf_count_per_conn * cfg_params->tcp_conn_count; - uint32_t total_nic_mbufs = cfg_params->nic.rxqueue_size + cfg_params->nic.txqueue_size; + uint32_t total_nic_mbufs = cfg_params->rxqueue_size + cfg_params->txqueue_size; struct rte_mempool *rxtx_mbuf = NULL; uint32_t cpu_id = 0; unsigned numa_id = 0; diff --git a/src/lstack/core/lstack_virtio.c b/src/lstack/core/lstack_virtio.c index 7a8d947..fefb06d 100644 --- a/src/lstack/core/lstack_virtio.c +++ b/src/lstack/core/lstack_virtio.c @@ -226,10 +226,10 @@ void virtio_tap_process_rx(uint16_t port, uint32_t queue_id) * so no action will be taken. * For TSO, tap devices do not support it, so no action will be taken. */ - if (get_global_cfg_params()->nic.vlan_mode != -1) { + if (get_global_cfg_params()->vlan_mode != -1) { for (int i = 0; i< pkg_num; i++) { pkts_burst[i]->ol_flags |= RTE_MBUF_F_TX_VLAN; - pkts_burst[i]->vlan_tci = (u16_t)get_global_cfg_params()->nic.vlan_mode; + pkts_burst[i]->vlan_tci = (u16_t)get_global_cfg_params()->vlan_mode; } } diff --git a/src/lstack/include/lstack_cfg.h b/src/lstack/include/lstack_cfg.h index 4fc99f3..5e2d6fc 100644 --- a/src/lstack/include/lstack_cfg.h +++ b/src/lstack/include/lstack_cfg.h @@ -50,93 +50,108 @@ #define LSTACK_LPM_PKTS_IN_DETECT 1000 #define LSTACK_LPM_RX_PKTS 20 - #define LSTACK_LPM_PKTS_IN_DETECT_MIN 5 #define LSTACK_LPM_PKTS_IN_DETECT_MAX 65535 +struct dev_addr { #define DEV_ADDR_TYPE_EMPTY 0 #define DEV_ADDR_TYPE_MAC 1 #define DEV_ADDR_TYPE_PCI 2 - -struct dev_addr { - uint8_t addr_type; // 0:empty, 1:mac, 2:pci + uint8_t addr_type; union addr_union { struct rte_ether_addr mac_addr; struct rte_pci_addr pci_addr; } addr; }; -struct secondary_attach_arg { - uint8_t socket_num; - uint64_t socket_size; - uint32_t socket_per_size[GAZELLE_MAX_NUMA_NODES]; - uintptr_t base_virtaddr; - char file_prefix[PATH_MAX]; -}; - -struct cfg_nic_params { - uint32_t rxqueue_size; - uint32_t txqueue_size; - int32_t vlan_mode; -}; - struct cfg_params { - ip4_addr_t host_addr; - ip6_addr_t host_addr6; - ip4_addr_t netmask; - ip4_addr_t gateway_addr; - uint8_t mac_addr[ETHER_ADDR_LEN]; - uint16_t num_cpu; - uint32_t cpus[CFG_MAX_CPUS]; - uint32_t send_cpus[CFG_MAX_CPUS]; - uint32_t recv_cpus[CFG_MAX_CPUS]; - uint16_t app_exclude_num_cpu; - uint32_t app_exclude_cpus[CFG_MAX_CPUS]; - uint8_t num_ports; - uint16_t ports[CFG_MAX_PORTS]; char log_file[PATH_MAX]; - uint16_t low_power_mod; - uint16_t lpm_rx_pkts; - uint32_t lpm_detect_ms; - uint32_t lpm_pkts_in_detect; - uint32_t tcp_conn_count; - uint32_t mbuf_count_per_conn; - uint32_t read_connect_number; - uint32_t rpc_number; - uint32_t nic_read_number; - uint8_t use_ltran; // false:lstack read from nic. true:lstack read form ltran process. - - uint16_t num_process; - uint16_t num_listen_port; - uint16_t is_primary; - uint16_t num_queue; - uint16_t tot_queue_num; - uint8_t process_idx; - uint32_t process_numa[PROTOCOL_STACK_MAX]; - - bool kni_switch; - bool listen_shadow; // true:listen in all stack thread. false:listen in one stack thread. - bool app_bind_numa; - bool main_thread_affinity; - bool seperate_send_recv; - int dpdk_argc; - char **dpdk_argv; - struct secondary_attach_arg sec_attach_arg; - char unix_socket_filename[NAME_MAX]; - uint16_t send_ring_size; - uint16_t recv_ring_size; - bool tuple_filter; - int8_t bond_mode; - int32_t bond_miimon; - struct dev_addr bond_slave_addr[GAZELLE_MAX_BOND_NUM]; - bool use_sockmap; - bool udp_enable; - struct cfg_nic_params nic; - bool stack_mode_rtc; - bool nonblock_mode; - uint32_t rpc_msg_max; - bool send_cache_mode; - bool flow_bifurcation; + + struct { // dpdk + char **dpdk_argv; + uint8_t dpdk_argc; + struct secondary_attach_arg { + uint8_t socket_num; + uint64_t socket_size; + uint32_t socket_per_size[GAZELLE_MAX_NUMA_NODES]; + uintptr_t base_virtaddr; + char file_prefix[PATH_MAX]; + } sec_attach_arg; + }; + + struct { // eth + ip4_addr_t host_addr; + ip6_addr_t host_addr6; + ip4_addr_t netmask; + ip4_addr_t gateway_addr; + uint8_t mac_addr[ETHER_ADDR_LEN]; + int8_t bond_mode; + int32_t bond_miimon; + struct dev_addr bond_slave_addr[GAZELLE_MAX_BOND_NUM]; + }; + + struct { // low_power + uint16_t low_power_mod; + uint16_t lpm_rx_pkts; + uint32_t lpm_detect_ms; + uint32_t lpm_pkts_in_detect; + }; + + struct { // eth_rxtx + uint32_t rxqueue_size; + uint32_t txqueue_size; + uint16_t num_queue; + uint16_t tot_queue_num; + bool send_cache_mode; + bool flow_bifurcation; + int32_t vlan_mode; + }; + + struct { // stack + uint16_t num_cpu; + uint32_t cpus[CFG_MAX_CPUS]; + + bool main_thread_affinity; + bool app_bind_numa; + uint16_t app_exclude_num_cpu; + uint32_t app_exclude_cpus[CFG_MAX_CPUS]; + + bool stack_mode_rtc; + bool listen_shadow; // true:listen in all stack thread. false:listen in one stack thread. + + uint32_t read_connect_number; + uint32_t nic_read_number; + uint32_t rpc_number; + uint32_t rpc_msg_max; + }; + + struct { // socket + uint16_t send_ring_size; + uint16_t recv_ring_size; + uint32_t tcp_conn_count; + uint32_t mbuf_count_per_conn; + }; + + struct { // deprecated + char unix_socket_filename[NAME_MAX]; + bool use_ltran; // false:lstack read from nic. true:lstack read form ltran process. + bool nonblock_mode; + bool udp_enable; + bool kni_switch; + }; + + struct { // experiment + uint16_t num_process; + uint16_t is_primary; + uint8_t process_idx; + uint32_t process_numa[PROTOCOL_STACK_MAX]; + bool tuple_filter; + bool use_sockmap; + + bool seperate_send_recv; + uint32_t send_cpus[CFG_MAX_CPUS]; + uint32_t recv_cpus[CFG_MAX_CPUS]; + }; }; struct cfg_params *get_global_cfg_params(void); diff --git a/src/lstack/include/lstack_protocol_stack.h b/src/lstack/include/lstack_protocol_stack.h index 08a3901..8cb0020 100644 --- a/src/lstack/include/lstack_protocol_stack.h +++ b/src/lstack/include/lstack_protocol_stack.h @@ -34,7 +34,7 @@ #define SOCK_RECV_RING_SIZE_MAX (2048) #define SOCK_SEND_RING_SIZE_MAX (2048) -#define MBUFPOOL_RESERVE_NUM (get_global_cfg_params()->nic.rxqueue_size + 1024) +#define MBUFPOOL_RESERVE_NUM (get_global_cfg_params()->rxqueue_size + 1024) struct protocol_stack { uint32_t tid; diff --git a/src/lstack/netif/lstack_ethdev.c b/src/lstack/netif/lstack_ethdev.c index 4f3cbc1..1a721f6 100644 --- a/src/lstack/netif/lstack_ethdev.c +++ b/src/lstack/netif/lstack_ethdev.c @@ -418,8 +418,8 @@ int32_t ethdev_init(struct protocol_stack *stack) } /* 0-4094: The vlaue range for VLAN IDs is 0 to 4094. */ - if (get_global_cfg_params()->nic.vlan_mode >= 0 && get_global_cfg_params()->nic.vlan_mode <= 4094) { - netif_set_vlan_tci(&stack->netif, (u16_t)get_global_cfg_params()->nic.vlan_mode); + if (get_global_cfg_params()->vlan_mode >= 0 && get_global_cfg_params()->vlan_mode <= 4094) { + netif_set_vlan_tci(&stack->netif, (u16_t)get_global_cfg_params()->vlan_mode); } netif_set_link_up(&stack->netif); diff --git a/src/lstack/netif/lstack_vdev.c b/src/lstack/netif/lstack_vdev.c index 9ca77ba..e1a63a7 100644 --- a/src/lstack/netif/lstack_vdev.c +++ b/src/lstack/netif/lstack_vdev.c @@ -145,7 +145,7 @@ static uint32_t vdev_rx_poll(struct protocol_stack *stack, struct rte_mbuf **pkt } /* skip gro when tcp/ip cksum offloads disable */ - if (get_protocol_stack_group()->rx_offload == 0 || (get_global_cfg_params()->nic.vlan_mode >= 0 + if (get_protocol_stack_group()->rx_offload == 0 || (get_global_cfg_params()->vlan_mode >= 0 && !(get_protocol_stack_group()->rx_offload & RTE_ETH_RX_OFFLOAD_VLAN_STRIP))) { return pkt_num; } -- 2.33.0