From: Pete Wyckoff <pw at osc.edu> Subject: [Stgt-devel] [PATCH] iscsi tcp: optimize rx Date: Sat, 29 Dec 2007 14:01:58 -0500 > Avoid another trip through the event loop in the case of an > RX with no AHS, by jumping up to the top of the state machine > directly. This saves about 500 ns per command on my hardware. > > Signed-off-by: Pete Wyckoff <pw at osc.edu> > --- > usr/iscsi/iscsid.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c > index 8872818..bbab32d 100644 > --- a/usr/iscsi/iscsid.c > +++ b/usr/iscsi/iscsid.c > @@ -1845,9 +1845,11 @@ again: > if (conn->rx_size) { > conn->rx_buffer = conn->req.ahs; > conn->rx_iostate = IOSTATE_RX_AHS; > - } else > + } else { > conn->rx_iostate = hdigest ? > IOSTATE_RX_INIT_HDIGEST : IOSTATE_RX_INIT_DATA; > + goto again; > + } > > /* > * if the datasize is zero, we must go to Hmm, here we have: if (conn->rx_iostate == IOSTATE_RX_INIT_DATA) goto again; else if (conn->rx_iostate != IOSTATE_RX_AHS) break; conn->rx_iostate == IOSTATE_RX_INIT_DATA case already goes to again? What case do you try to improve? |