[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL RESEND 15/19] filter-rewriter: skip net_checksum_calc
From: |
Jason Wang |
Subject: |
[Qemu-devel] [PULL RESEND 15/19] filter-rewriter: skip net_checksum_calculate() while offset = 0 |
Date: |
Mon, 6 Mar 2017 13:25:50 +0800 |
From: zhanghailiang <address@hidden>
While the offset of packets's sequence for primary side and
secondary side is zero, it is unnecessary to call net_checksum_calculate()
to recalculate the checksume value of packets.
Signed-off-by: zhanghailiang <address@hidden>
Signed-off-by: Jason Wang <address@hidden>
---
net/filter-rewriter.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c
index c4ab91c..afa06e8 100644
--- a/net/filter-rewriter.c
+++ b/net/filter-rewriter.c
@@ -93,10 +93,12 @@ static int handle_primary_tcp_pkt(NetFilterState *nf,
conn->offset -= (ntohl(tcp_pkt->th_ack) - 1);
conn->syn_flag = 0;
}
- /* handle packets to the secondary from the primary */
- tcp_pkt->th_ack = htonl(ntohl(tcp_pkt->th_ack) + conn->offset);
+ if (conn->offset) {
+ /* handle packets to the secondary from the primary */
+ tcp_pkt->th_ack = htonl(ntohl(tcp_pkt->th_ack) + conn->offset);
- net_checksum_calculate((uint8_t *)pkt->data, pkt->size);
+ net_checksum_calculate((uint8_t *)pkt->data, pkt->size);
+ }
}
return 0;
@@ -129,10 +131,13 @@ static int handle_secondary_tcp_pkt(NetFilterState *nf,
}
if ((tcp_pkt->th_flags & (TH_ACK | TH_SYN)) == TH_ACK) {
- /* handle packets to the primary from the secondary*/
- tcp_pkt->th_seq = htonl(ntohl(tcp_pkt->th_seq) - conn->offset);
+ /* Only need to adjust seq while offset is Non-zero */
+ if (conn->offset) {
+ /* handle packets to the primary from the secondary*/
+ tcp_pkt->th_seq = htonl(ntohl(tcp_pkt->th_seq) - conn->offset);
- net_checksum_calculate((uint8_t *)pkt->data, pkt->size);
+ net_checksum_calculate((uint8_t *)pkt->data, pkt->size);
+ }
}
return 0;
--
2.7.4
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, (continued)
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Laurent Vivier, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Dr. David Alan Gilbert, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Laurent Vivier, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Dr. David Alan Gilbert, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Laurent Vivier, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Dr. David Alan Gilbert, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Dr. David Alan Gilbert, 2017/03/14
- Re: [Qemu-devel] [PULL RESEND 12/19] vmxnet3: Convert ring values to uint32_t's, Laurent Vivier, 2017/03/14
[Qemu-devel] [PULL RESEND 14/19] net/colo: fix memory double free error, Jason Wang, 2017/03/06
[Qemu-devel] [PULL RESEND 13/19] vmxnet3: VMStatify rx/tx q_descr and int_state, Jason Wang, 2017/03/06
[Qemu-devel] [PULL RESEND 15/19] filter-rewriter: skip net_checksum_calculate() while offset = 0,
Jason Wang <=
[Qemu-devel] [PULL RESEND 16/19] COLO-compare: Rename compare function and remove duplicate codes, Jason Wang, 2017/03/06
[Qemu-devel] [PULL RESEND 17/19] COLO-compare: Optimize compare_common and compare_tcp, Jason Wang, 2017/03/06
[Qemu-devel] [PULL RESEND 19/19] net/filter-mirror: Follow CODING_STYLE, Jason Wang, 2017/03/06
[Qemu-devel] [PULL RESEND 18/19] COLO-compare: Fix icmp and udp compare different packet always dump bug, Jason Wang, 2017/03/06
Re: [Qemu-devel] [PULL RESEND 00/19] Net patches, Peter Maydell, 2017/03/07