NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
flow_switch_hot_upgrade_sample.c File Reference
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include <sys/time.h>
#include <doca_dev.h>
#include <doca_log.h>
#include <doca_flow.h>
#include "doca_error.h"
#include "flow_common.h"
Include dependency graph for flow_switch_hot_upgrade_sample.c:

Go to the source code of this file.

Data Structures

struct  port_control
 

Macros

#define FLOW_SWITCH_PROXY_PORT_NB   2
 
#define INTERVAL_QUERY_TIME   1
 
#define SEC2USEC(sec)   ((sec) * (1000000L))
 
#define DEFAULT_CTRL_PIPE_SIZE   (8192)
 

Functions

 DOCA_LOG_REGISTER (FLOW_SWITCH_HOT_UPGRADE)
 
static doca_error_t create_switch_pipe (struct doca_flow_port *port, struct doca_flow_pipe **pipe)
 
static doca_error_t add_switch_pipe_entries (uint8_t switch_port_idx, struct port_control *control, struct entries_status *status)
 
static doca_error_t port_control_init (struct doca_flow_port *port, struct doca_dev *dev, uint8_t switch_port_idx, enum doca_flow_port_operation_state state, struct entries_status *status, struct port_control *control)
 
static void ports_operation_state_modify (enum doca_flow_port_operation_state state)
 
static void activate_signal_handler (int signum)
 
static void quit_signal_handler (int signum)
 
static int signal_handler_register (void)
 
static doca_error_t port_control_query (struct port_control *control)
 
doca_error_t flow_switch_hot_upgrade (int nb_queues, int nb_ports, struct doca_dev *dev_main, struct doca_dev *dev_sec, enum doca_flow_port_operation_state state)
 

Variables

static struct doca_flow_port * switch_ports [FLOW_SWITCH_PROXY_PORT_NB]
 
static uint8_t waiting_for_traffic
 
static enum doca_flow_port_operation_state current_state
 

Macro Definition Documentation

◆ DEFAULT_CTRL_PIPE_SIZE

#define DEFAULT_CTRL_PIPE_SIZE   (8192)

Definition at line 48 of file flow_switch_hot_upgrade_sample.c.

◆ FLOW_SWITCH_PROXY_PORT_NB

#define FLOW_SWITCH_PROXY_PORT_NB   2

Definition at line 42 of file flow_switch_hot_upgrade_sample.c.

◆ INTERVAL_QUERY_TIME

#define INTERVAL_QUERY_TIME   1

Definition at line 44 of file flow_switch_hot_upgrade_sample.c.

◆ SEC2USEC

#define SEC2USEC (   sec)    ((sec) * (1000000L))

Definition at line 46 of file flow_switch_hot_upgrade_sample.c.

Function Documentation

◆ activate_signal_handler()

static void activate_signal_handler ( int  signum)
static

Definition at line 313 of file flow_switch_hot_upgrade_sample.c.

◆ add_switch_pipe_entries()

static doca_error_t add_switch_pipe_entries ( uint8_t  switch_port_idx,
struct port_control control,
struct entries_status status 
)
static

Definition at line 150 of file flow_switch_hot_upgrade_sample.c.

◆ create_switch_pipe()

static doca_error_t create_switch_pipe ( struct doca_flow_port *  port,
struct doca_flow_pipe **  pipe 
)
static

Definition at line 79 of file flow_switch_hot_upgrade_sample.c.

◆ DOCA_LOG_REGISTER()

DOCA_LOG_REGISTER ( FLOW_SWITCH_HOT_UPGRADE  )

◆ flow_switch_hot_upgrade()

doca_error_t flow_switch_hot_upgrade ( int  nb_queues,
int  nb_ports,
struct doca_dev *  dev_main,
struct doca_dev *  dev_sec,
enum doca_flow_port_operation_state  state 
)

Definition at line 453 of file flow_switch_hot_upgrade_sample.c.

◆ port_control_init()

static doca_error_t port_control_init ( struct doca_flow_port *  port,
struct doca_dev *  dev,
uint8_t  switch_port_idx,
enum doca_flow_port_operation_state  state,
struct entries_status status,
struct port_control control 
)
static

Definition at line 217 of file flow_switch_hot_upgrade_sample.c.

◆ port_control_query()

static doca_error_t port_control_query ( struct port_control control)
static

Definition at line 394 of file flow_switch_hot_upgrade_sample.c.

◆ ports_operation_state_modify()

static void ports_operation_state_modify ( enum doca_flow_port_operation_state  state)
static

Definition at line 283 of file flow_switch_hot_upgrade_sample.c.

◆ quit_signal_handler()

static void quit_signal_handler ( int  signum)
static

Definition at line 343 of file flow_switch_hot_upgrade_sample.c.

◆ signal_handler_register()

static int signal_handler_register ( void  )
static

Definition at line 365 of file flow_switch_hot_upgrade_sample.c.

Variable Documentation

◆ current_state

enum doca_flow_port_operation_state current_state
static

Definition at line 65 of file flow_switch_hot_upgrade_sample.c.

◆ switch_ports

struct doca_flow_port* switch_ports[FLOW_SWITCH_PROXY_PORT_NB]
static

Definition at line 64 of file flow_switch_hot_upgrade_sample.c.

◆ waiting_for_traffic

uint8_t waiting_for_traffic
static

Definition at line 65 of file flow_switch_hot_upgrade_sample.c.