🎈 perf(traffic mirror): 优化底层发包函数
优化底层发包函数为marsio_send_burst
This commit is contained in:
@@ -11,11 +11,11 @@
|
||||
|
||||
static int send_raw_packet(struct traffic_mirror *ttm,char * pkt_ptr,int pkt_len,int *vlan_array,int vlan_num,int thread_seq)
|
||||
{
|
||||
int ret=tsg_traffic_mirror_send_burst(ttm, (char *)pkt_ptr, pkt_len, vlan_array, vlan_num, thread_seq);
|
||||
if(ret==TRRAFFIC_MIRROR_SEND_SUCCESS)
|
||||
{
|
||||
int ret=tsg_traffic_mirror_send_burst(ttm, (char *)pkt_ptr, pkt_len, vlan_array, vlan_num, thread_seq);
|
||||
if(ret==TRAFFIC_MIRROR_SEND_SUCCESS)
|
||||
{
|
||||
FS_operate(g_tsg_para.fs2_handle, g_tsg_para.fs2_field_id[TSG_FS2_MIRRORED_PKT_SUCCESS], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_tsg_para.fs2_handle, g_tsg_para.fs2_field_id[TSG_FS2_MIRRORED_BYTE_SUCCESS], 0, FS_OP_ADD, pkt_len);
|
||||
FS_operate(g_tsg_para.fs2_handle, g_tsg_para.fs2_field_id[TSG_FS2_MIRRORED_BYTE_SUCCESS], 0, FS_OP_ADD, pkt_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -34,7 +34,7 @@ int tsg_send_raw_packet(const struct streaminfo *a_stream, int *vlan_id, int vla
|
||||
void *p_eth_rawpkt=NULL;
|
||||
int eth_rawpkt_len=0;
|
||||
raw_ipfrag_list_t *frag_pkt=NULL;
|
||||
|
||||
|
||||
if(g_tsg_para.mirror_switch==0)
|
||||
{
|
||||
return 0;
|
||||
@@ -49,21 +49,21 @@ int tsg_send_raw_packet(const struct streaminfo *a_stream, int *vlan_id, int vla
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
send_raw_packet(g_tsg_para.mirror_handle, (char *)p_eth_rawpkt, eth_rawpkt_len, vlan_id, vlan_id_num, thread_seq);
|
||||
break;
|
||||
case 1:
|
||||
frag_pkt=(raw_ipfrag_list_t *)p_eth_rawpkt;
|
||||
while(frag_pkt)
|
||||
{
|
||||
send_raw_packet(g_tsg_para.mirror_handle, (char *)(frag_pkt->frag_packet), frag_pkt->pkt_len, vlan_id, vlan_id_num, thread_seq);
|
||||
send_raw_packet(g_tsg_para.mirror_handle, (char *)(frag_pkt->frag_packet), frag_pkt->pkt_len, vlan_id, vlan_id_num, thread_seq);
|
||||
frag_pkt = frag_pkt->next;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ int tsg_send_raw_packet_init(const char* conffile, void *logger)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
g_tsg_para.mirror_handle=tsg_traffic_mirror_init(conffile, g_tsg_para.logger);
|
||||
if(g_tsg_para.mirror_handle==NULL)
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ struct traffic_mirror
|
||||
|
||||
struct traffic_mirror *tsg_traffic_mirror_init(const char *conffile, void *logger)
|
||||
{
|
||||
int ret=0,traffic_mirror_enable=TRRAFFIC_MIRROR_DISABLE;
|
||||
int ret=0,traffic_mirror_enable=TRAFFIC_MIRROR_DISABLE;
|
||||
struct traffic_mirror *ttm = NULL;
|
||||
|
||||
ttm=(struct traffic_mirror *)calloc(1, sizeof(struct traffic_mirror));
|
||||
@@ -40,7 +40,7 @@ struct traffic_mirror *tsg_traffic_mirror_init(const char *conffile, void *logge
|
||||
}
|
||||
|
||||
MESA_load_profile_int_def(conffile, "TRAFFIC_MIRROR", "TRAFFIC_MIRROR_ENABLE", &traffic_mirror_enable, 0);
|
||||
if (traffic_mirror_enable != TRRAFFIC_MIRROR_ENABLE)
|
||||
if (traffic_mirror_enable != TRAFFIC_MIRROR_ENABLE)
|
||||
{
|
||||
MESA_handle_runtime_log(logger, RLOG_LV_FATAL, "TSG_TRAFFIC_MIRROR", "Traffic Mirror Is Disable !!!");
|
||||
goto init_error;
|
||||
@@ -131,7 +131,7 @@ int tsg_traffic_mirror_send_burst(struct traffic_mirror *ttm,char * pkt_ptr,int
|
||||
return SEND_ERROR_VLAN_NUM_EXCEED_BURST_MAX;
|
||||
}
|
||||
|
||||
if (PREDICT_FALSE((vlan_num <= 1) || (vlan_array == NULL)))
|
||||
if (PREDICT_FALSE((vlan_num < 1) || (vlan_array == NULL)))
|
||||
{
|
||||
tx_buffer_num = 1;
|
||||
vlan_tag_array = &ttm->default_vlan_id;
|
||||
@@ -157,11 +157,12 @@ int tsg_traffic_mirror_send_burst(struct traffic_mirror *ttm,char * pkt_ptr,int
|
||||
marsio_buff_set_metadata(tx_buff_ptr,MR_BUFF_METADATA_VLAN_TCI,&vlan_id,sizeof(vlan_id));
|
||||
}
|
||||
|
||||
ret = marsio_send_burst_with_options(ttm->to_dev_sendpath, thread_seq, tx_buff, tx_buffer_num, MARSIO_SEND_OPT_FAST);
|
||||
ret = marsio_send_burst(ttm->to_dev_sendpath, thread_seq, tx_buff, tx_buffer_num);
|
||||
if (PREDICT_FALSE(ret < 0))
|
||||
{
|
||||
return TRRAFFIC_MIRROR_SEND_ERROR_DROP;
|
||||
marsio_buff_free(ttm->mr_instance, tx_buff, tx_buffer_num, MARSIO_SOCKET_ID_ANY, MARSIO_LCORE_ID_ANY);
|
||||
return TRAFFIC_MIRROR_SEND_ERROR_DROP;
|
||||
}
|
||||
|
||||
return TRRAFFIC_MIRROR_SEND_SUCCESS;
|
||||
return TRAFFIC_MIRROR_SEND_SUCCESS;
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef __TSG_TRAFFIC_MIRROR_H__
|
||||
#define __TSG_TRAFFIC_MIRROR_H__
|
||||
|
||||
#define TRRAFFIC_MIRROR_DISABLE 0
|
||||
#define TRRAFFIC_MIRROR_ENABLE 1
|
||||
#define TRAFFIC_MIRROR_DISABLE 0
|
||||
#define TRAFFIC_MIRROR_ENABLE 1
|
||||
|
||||
#define TRRAFFIC_MIRROR_SEND_SUCCESS 0
|
||||
#define TRAFFIC_MIRROR_SEND_SUCCESS 0
|
||||
#define SEND_ERROR_NOT_INIT -1
|
||||
#define SEND_ERROR_THREAD_SEQ_ERR -2
|
||||
#define SEND_ERROR_PKT_BUFFER_IS_NULL -3
|
||||
@@ -13,7 +13,7 @@
|
||||
#define SEND_ERROR_VLAN_NUM_ERROR -6
|
||||
#define SEND_ERROR_VLAN_NUM_EXCEED_BURST_MAX -7
|
||||
#define SEND_ERROR_BUFF_MALLOC_ERROR -8
|
||||
#define TRRAFFIC_MIRROR_SEND_ERROR_DROP -9
|
||||
#define TRAFFIC_MIRROR_SEND_ERROR_DROP -9
|
||||
|
||||
struct traffic_mirror;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user