devices: vnet_get_aggregate_rx_packets should not be dpdk specific
Change-Id: I1152db4b7d1602653d7d8b2c6cb28cf5c526c4ca Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:

committed by
Neale Ranns

parent
f7c379403a
commit
b3bb10101c
@ -239,6 +239,7 @@ af_packet_device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
|
||||
+ VNET_INTERFACE_COUNTER_RX,
|
||||
os_get_cpu_number (), apif->hw_if_index, n_rx_packets, n_rx_bytes);
|
||||
|
||||
vnet_device_increment_rx_packets (cpu_index, n_rx_packets);
|
||||
return n_rx_packets;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,8 @@
|
||||
#include <vnet/ip/ip.h>
|
||||
#include <vnet/ethernet/ethernet.h>
|
||||
|
||||
vnet_device_main_t vnet_device_main;
|
||||
|
||||
static uword
|
||||
device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
|
||||
vlib_frame_t * frame)
|
||||
@ -82,6 +84,18 @@ VNET_FEATURE_INIT (ethernet_input, static) = {
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
static clib_error_t *
|
||||
vnet_device_init (vlib_main_t * vm)
|
||||
{
|
||||
vnet_device_main_t *vdm = &vnet_device_main;
|
||||
vlib_thread_main_t *tm = vlib_get_thread_main ();
|
||||
|
||||
vec_validate_aligned (vdm->workers, tm->n_vlib_mains - 1,
|
||||
CLIB_CACHE_LINE_BYTES);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VLIB_INIT_FUNCTION (vnet_device_init);
|
||||
/*
|
||||
* fd.io coding-style-patch-verification: ON
|
||||
*
|
||||
|
@ -39,9 +39,45 @@ typedef enum
|
||||
[VNET_DEVICE_INPUT_NEXT_MPLS_INPUT] = "mpls-input", \
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
|
||||
|
||||
/* total input packet counter */
|
||||
u64 aggregate_rx_packets;
|
||||
} vnet_device_per_worker_data_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
vnet_device_per_worker_data_t *workers;
|
||||
} vnet_device_main_t;
|
||||
|
||||
extern vnet_device_main_t vnet_device_main;
|
||||
extern vlib_node_registration_t device_input_node;
|
||||
extern const u32 device_input_next_node_advance[];
|
||||
|
||||
static inline u64
|
||||
vnet_get_aggregate_rx_packets (void)
|
||||
{
|
||||
vnet_device_main_t *vdm = &vnet_device_main;
|
||||
u64 sum = 0;
|
||||
vnet_device_per_worker_data_t *pwd;
|
||||
|
||||
vec_foreach (pwd, vdm->workers) sum += pwd->aggregate_rx_packets;
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
static inline void
|
||||
vnet_device_increment_rx_packets (u32 cpu_index, u64 count)
|
||||
{
|
||||
vnet_device_main_t *vdm = &vnet_device_main;
|
||||
vnet_device_per_worker_data_t *pwd;
|
||||
|
||||
pwd = vec_elt_at_index (vdm->workers, cpu_index);
|
||||
pwd->aggregate_rx_packets += count;
|
||||
}
|
||||
|
||||
#endif /* included_vnet_vnet_device_h */
|
||||
|
||||
/*
|
||||
|
@ -223,22 +223,6 @@ typedef struct
|
||||
#define DPDK_LINK_POLL_INTERVAL (3.0)
|
||||
#define DPDK_MIN_LINK_POLL_INTERVAL (0.001) /* 1msec */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
|
||||
|
||||
/* total input packet counter */
|
||||
u64 aggregate_rx_packets;
|
||||
} dpdk_worker_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
|
||||
|
||||
/* total input packet counter */
|
||||
u64 aggregate_rx_packets;
|
||||
} dpdk_hqos_thread_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 device;
|
||||
@ -360,12 +344,6 @@ typedef struct
|
||||
/* vlib buffer free list, must be same size as an rte_mbuf */
|
||||
u32 vlib_buffer_free_list_index;
|
||||
|
||||
/* dpdk worker "threads" */
|
||||
dpdk_worker_t *workers;
|
||||
|
||||
/* dpdk HQoS "threads" */
|
||||
dpdk_hqos_thread_t *hqos_threads;
|
||||
|
||||
/* Ethernet input node index */
|
||||
u32 ethernet_input_node_index;
|
||||
|
||||
@ -475,18 +453,6 @@ void dpdk_update_link_state (dpdk_device_t * xd, f64 now);
|
||||
void dpdk_device_lock_init (dpdk_device_t * xd);
|
||||
void dpdk_device_lock_free (dpdk_device_t * xd);
|
||||
|
||||
static inline u64
|
||||
vnet_get_aggregate_rx_packets (void)
|
||||
{
|
||||
dpdk_main_t *dm = &dpdk_main;
|
||||
u64 sum = 0;
|
||||
dpdk_worker_t *dw;
|
||||
|
||||
vec_foreach (dw, dm->workers) sum += dw->aggregate_rx_packets;
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
void dpdk_rx_trace (dpdk_main_t * dm,
|
||||
vlib_node_runtime_t * node,
|
||||
dpdk_device_t * xd,
|
||||
|
@ -277,9 +277,6 @@ dpdk_lib_init (dpdk_main_t * dm)
|
||||
vec_validate_aligned (dm->devices_by_cpu, tm->n_vlib_mains - 1,
|
||||
CLIB_CACHE_LINE_BYTES);
|
||||
|
||||
vec_validate_aligned (dm->workers, tm->n_vlib_mains - 1,
|
||||
CLIB_CACHE_LINE_BYTES);
|
||||
|
||||
dm->hqos_cpu_first_index = 0;
|
||||
dm->hqos_cpu_count = 0;
|
||||
|
||||
@ -296,9 +293,6 @@ dpdk_lib_init (dpdk_main_t * dm)
|
||||
vec_validate_aligned (dm->devices_by_hqos_cpu, tm->n_vlib_mains - 1,
|
||||
CLIB_CACHE_LINE_BYTES);
|
||||
|
||||
vec_validate_aligned (dm->hqos_threads, tm->n_vlib_mains - 1,
|
||||
CLIB_CACHE_LINE_BYTES);
|
||||
|
||||
nports = rte_eth_dev_count ();
|
||||
if (nports < 1)
|
||||
{
|
||||
@ -1756,8 +1750,6 @@ dpdk_init (vlib_main_t * vm)
|
||||
STATIC_ASSERT (offsetof (dpdk_device_t, cacheline1) ==
|
||||
CLIB_CACHE_LINE_BYTES,
|
||||
"Data in cache line 0 is bigger than cache line size");
|
||||
STATIC_ASSERT (offsetof (dpdk_worker_t, cacheline0) == 0,
|
||||
"Cache line marker must be 1st element in dpdk_worker_t");
|
||||
STATIC_ASSERT (offsetof (frame_queue_trace_t, cacheline0) == 0,
|
||||
"Cache line marker must be 1st element in frame_queue_trace_t");
|
||||
|
||||
|
@ -556,8 +556,7 @@ dpdk_device_input (dpdk_main_t * dm, dpdk_device_t * xd,
|
||||
+ VNET_INTERFACE_COUNTER_RX,
|
||||
cpu_index, xd->vlib_sw_if_index, mb_index, n_rx_bytes);
|
||||
|
||||
dpdk_worker_t *dw = vec_elt_at_index (dm->workers, cpu_index);
|
||||
dw->aggregate_rx_packets += mb_index;
|
||||
vnet_device_increment_rx_packets (cpu_index, mb_index);
|
||||
|
||||
return mb_index;
|
||||
}
|
||||
|
@ -249,6 +249,8 @@ netmap_device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
|
||||
+ VNET_INTERFACE_COUNTER_RX,
|
||||
os_get_cpu_number (), nif->hw_if_index, n_rx_packets, n_rx_bytes);
|
||||
|
||||
vnet_device_increment_rx_packets (cpu_index, n_rx_packets);
|
||||
|
||||
return n_rx_packets;
|
||||
}
|
||||
|
||||
|
@ -287,6 +287,8 @@ out:
|
||||
+ VNET_INTERFACE_COUNTER_RX, cpu_index,
|
||||
intfc->vlib_hw_if_index, rx_queue_index, n_rx_bytes);
|
||||
|
||||
vnet_device_increment_rx_packets (cpu_index, rx_queue_index);
|
||||
|
||||
return rx_queue_index;
|
||||
}
|
||||
|
||||
|
@ -1819,6 +1819,8 @@ vhost_user_if_input (vlib_main_t * vm,
|
||||
+ VNET_INTERFACE_COUNTER_RX,
|
||||
os_get_cpu_number (), vui->sw_if_index, n_rx_packets, n_rx_bytes);
|
||||
|
||||
vnet_device_increment_rx_packets (cpu_index, n_rx_packets);
|
||||
|
||||
return n_rx_packets;
|
||||
}
|
||||
|
||||
|
@ -59,17 +59,9 @@ typedef struct
|
||||
|
||||
} gmon_main_t;
|
||||
|
||||
#if DPDK == 0
|
||||
static inline u64
|
||||
vnet_get_aggregate_rx_packets (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#include <vlib/vlib.h>
|
||||
#include <vnet/vnet.h>
|
||||
#include <vnet/devices/dpdk/dpdk.h>
|
||||
#endif
|
||||
#include <vnet/devices/devices.h>
|
||||
|
||||
gmon_main_t gmon_main;
|
||||
|
||||
|
Reference in New Issue
Block a user