Message ID | 1617263249-54501-11-git-send-email-lei.rao@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fixed some bugs and optimized some codes for COLO | expand |
> -----Original Message----- > From: Rao, Lei <lei.rao@intel.com> > Sent: Thursday, April 1, 2021 3:47 PM > To: Zhang, Chen <chen.zhang@intel.com>; lizhijian@cn.fujitsu.com; > jasowang@redhat.com; quintela@redhat.com; dgilbert@redhat.com; > pbonzini@redhat.com; lukasstraub2@web.de > Cc: qemu-devel@nongnu.org; Rao, Lei <lei.rao@intel.com> > Subject: [PATCH v5 10/10] Fixed calculation error of pkt->header_size in > fill_pkt_tcp_info() > > From: "Rao, Lei" <lei.rao@intel.com> > > The data pointer has skipped vnet_hdr_len in the function of > parse_packet_early().So, we can not subtract vnet_hdr_len again when > calculating pkt->header_size in fill_pkt_tcp_info(). Otherwise, it will cause > network packet comparsion errors and greatly increase the frequency of > checkpoints. > > Signed-off-by: Lei Rao <lei.rao@intel.com> > Signed-off-by: Zhang Chen <chen.zhang@intel.com> > Reviewed-by: Li Zhijian <lizhijian@fujitsu.com> Reviewed-by: Zhang Chen <chen.zhang@intel.com> > --- > net/colo-compare.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/colo-compare.c b/net/colo-compare.c index > 5b538f4..b100e7b 100644 > --- a/net/colo-compare.c > +++ b/net/colo-compare.c > @@ -211,7 +211,7 @@ static void fill_pkt_tcp_info(void *data, uint32_t > *max_ack) > pkt->tcp_ack = ntohl(tcphd->th_ack); > *max_ack = *max_ack > pkt->tcp_ack ? *max_ack : pkt->tcp_ack; > pkt->header_size = pkt->transport_header - (uint8_t *)pkt->data > - + (tcphd->th_off << 2) - pkt->vnet_hdr_len; > + + (tcphd->th_off << 2); > pkt->payload_size = pkt->size - pkt->header_size; > pkt->seq_end = pkt->tcp_seq + pkt->payload_size; > pkt->flags = tcphd->th_flags; > -- > 1.8.3.1
diff --git a/net/colo-compare.c b/net/colo-compare.c index 5b538f4..b100e7b 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -211,7 +211,7 @@ static void fill_pkt_tcp_info(void *data, uint32_t *max_ack) pkt->tcp_ack = ntohl(tcphd->th_ack); *max_ack = *max_ack > pkt->tcp_ack ? *max_ack : pkt->tcp_ack; pkt->header_size = pkt->transport_header - (uint8_t *)pkt->data - + (tcphd->th_off << 2) - pkt->vnet_hdr_len; + + (tcphd->th_off << 2); pkt->payload_size = pkt->size - pkt->header_size; pkt->seq_end = pkt->tcp_seq + pkt->payload_size; pkt->flags = tcphd->th_flags;