diff options
Diffstat (limited to 'samples/bpf/xdpsock_user.c')
| -rw-r--r-- | samples/bpf/xdpsock_user.c | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c index 4914788b6727..57ecadc58403 100644 --- a/samples/bpf/xdpsock_user.c +++ b/samples/bpf/xdpsock_user.c @@ -118,7 +118,6 @@ struct xdpsock {  	unsigned long prev_tx_npkts;  }; -#define MAX_SOCKS 4  static int num_socks;  struct xdpsock *xsks[MAX_SOCKS]; @@ -596,7 +595,7 @@ static void dump_stats(void)  	prev_time = now; -	for (i = 0; i < num_socks; i++) { +	for (i = 0; i < num_socks && xsks[i]; i++) {  		char *fmt = "%-15s %'-11.0f %'-11lu\n";  		double rx_pps, tx_pps; @@ -649,6 +648,8 @@ static struct option long_options[] = {  	{"xdp-skb", no_argument, 0, 'S'},  	{"xdp-native", no_argument, 0, 'N'},  	{"interval", required_argument, 0, 'n'}, +	{"zero-copy", no_argument, 0, 'z'}, +	{"copy", no_argument, 0, 'c'},  	{0, 0, 0, 0}  }; @@ -667,6 +668,8 @@ static void usage(const char *prog)  		"  -S, --xdp-skb=n	Use XDP skb-mod\n"  		"  -N, --xdp-native=n	Enfore XDP native mode\n"  		"  -n, --interval=n	Specify statistics update interval (default 1 sec).\n" +		"  -z, --zero-copy      Force zero-copy mode.\n" +		"  -c, --copy           Force copy mode.\n"  		"\n";  	fprintf(stderr, str, prog);  	exit(EXIT_FAILURE); @@ -679,7 +682,7 @@ static void parse_command_line(int argc, char **argv)  	opterr = 0;  	for (;;) { -		c = getopt_long(argc, argv, "rtli:q:psSNn:", long_options, +		c = getopt_long(argc, argv, "rtli:q:psSNn:cz", long_options,  				&option_index);  		if (c == -1)  			break; @@ -716,6 +719,12 @@ static void parse_command_line(int argc, char **argv)  		case 'n':  			opt_interval = atoi(optarg);  			break; +		case 'z': +			opt_xdp_bind_flags |= XDP_ZEROCOPY; +			break; +		case 'c': +			opt_xdp_bind_flags |= XDP_COPY; +			break;  		default:  			usage(basename(argv[0]));  		}  | 
