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:
> 

Reply via email to