2015-11-21,测试部发现RFC2544的报文统计值很大,于是到测试部定位,发现:
eteq_stat.tx_pkts_size1 = 0X5;
statistics->tx_pkts_size1= 0X5 0000;
原来是memcpy时,系统按照64字节对齐,修改后问题解决。
![](/attachment/201511/23/29611934_14482602900PaI.png)
struct dpif_rfc2544_operation_statinfo
{
xmsg_uint32 status;
xmsg_uint64 tx_pkts_size1;
xmsg_uint64 tx_pkts_size2;
xmsg_uint64 tx_pkts_size3;
xmsg_uint64 tx_tag_error_pkts;
xmsg_uint64 tx_drop_pkts;
xmsg_uint64 tx_drop_octets;
xmsg_uint64 rx_pkts;
xmsg_uint64 rx_octets;
xmsg_uint64 rx_tag_error_pkts;
xmsg_uint64 rx_fcs_error_pkts;
xmsg_uint64 rx_integrity_error_pkts;
xmsg_uint64 rx_signature_error_pkts;
xmsg_uint32 reserved[4];
};
typedef struct {
uint32 test_id; //key npt1200 /0/1, npt1020/npt1010 0;
uint32 status ; // 0 ?????? ??1 ????????
uint64 tx_pkts_size1 ;
uint64 tx_pkts_size2 ;
uint64 tx_pkts_size3 ;
uint64 tx_tag_error_pkts ;
uint64 tx_drop_pkts;
uint64 tx_drop_octets ;
uint64 rx_pkts ;
uint64 rx_octets;
uint64 rx_tag_error_pkts ;
uint64 rx_fcs_error_pkts;
uint64 rx_integrity_error_pkts;
uint64 rx_signature_error_pkts;
uint32 reserved[4];
}s_eteq_stat_t;
(gdb) p sizeof(struct dpif_rfc2544_operation_statinfo)
$1 = 120
(gdb) p sizeof(s_eteq_stat_t)
$2 = 120
阅读(353) | 评论(0) | 转发(0) |