On Wed, Jan 10, 2018 at 10:40:11AM -0800, John Fastabend wrote: > Add a base test that does not use BPF hooks to test baseline case. > > Signed-off-by: John Fastabend <john.fastab...@gmail.com> > --- > samples/sockmap/sockmap_user.c | 26 +++++++++++++++++++++----- > 1 file changed, 21 insertions(+), 5 deletions(-) > > diff --git a/samples/sockmap/sockmap_user.c b/samples/sockmap/sockmap_user.c > index 812fc7e..eb19d14 100644 > --- a/samples/sockmap/sockmap_user.c > +++ b/samples/sockmap/sockmap_user.c > @@ -285,18 +285,24 @@ static int msg_loop(int fd, int iov_count, int > iov_length, int cnt, > > static float giga = 1000000000; > > -static int sendmsg_test(int iov_count, int iov_buf, int cnt, int verbose) > +static int sendmsg_test(int iov_count, int iov_buf, int cnt, > + int verbose, bool base) > { > - int txpid, rxpid, err = 0; > + float sent_Bps = 0, recvd_Bps = 0; > + int rx_fd, txpid, rxpid, err = 0; > struct msg_stats s = {0}; > int status; > - float sent_Bps = 0, recvd_Bps = 0; > > errno = 0; > > + if (base) > + rx_fd = p1; > + else > + rx_fd = p2; > + > rxpid = fork(); > if (rxpid == 0) { > - err = msg_loop(p2, iov_count, iov_buf, cnt, &s, false); > + err = msg_loop(rx_fd, iov_count, iov_buf, cnt, &s, false); I am likely missing something. After receiving from p1, should the base-line case also send to c2 which then will be received by p2?
> if (err) > fprintf(stderr, > "msg_loop_rx: iov_count %i iov_buf %i cnt %i > err %i\n", > @@ -425,6 +431,7 @@ static int forever_ping_pong(int rate, int verbose) > enum { > PING_PONG, > SENDMSG, > + BASE, > }; > > int main(int argc, char **argv) > @@ -463,6 +470,8 @@ int main(int argc, char **argv) > test = PING_PONG; > } else if (memcmp(optarg, "sendmsg", 7) == 0) { > test = SENDMSG; > + } else if (memcmp(optarg, "base", 4) == 0) { > + test = BASE; > } else { > usage(argv); > return -1; > @@ -488,6 +497,10 @@ int main(int argc, char **argv) > /* catch SIGINT */ > signal(SIGINT, running_handler); > > + /* If base test skip BPF setup */ > + if (test == BASE) > + goto run; > + > if (load_bpf_file(filename)) { > fprintf(stderr, "load_bpf_file: (%s) %s\n", > filename, strerror(errno)); > @@ -519,6 +532,7 @@ int main(int argc, char **argv) > return err; > } > > +run: > err = sockmap_init_sockets(); > if (err) { > fprintf(stderr, "ERROR: test socket failed: %d\n", err); > @@ -528,7 +542,9 @@ int main(int argc, char **argv) > if (test == PING_PONG) > err = forever_ping_pong(rate, verbose); > else if (test == SENDMSG) > - err = sendmsg_test(iov_count, length, rate, verbose); > + err = sendmsg_test(iov_count, length, rate, verbose, false); > + else if (test == BASE) > + err = sendmsg_test(iov_count, length, rate, verbose, true); > else > fprintf(stderr, "unknown test\n"); > out: >