diff --git a/src/txrx.c b/src/txrx.c index d2762be..9eb712d 100644 --- a/src/txrx.c +++ b/src/txrx.c @@ -132,6 +132,8 @@ static struct argp_option options[] = { {"wakeup", 'w', 0, 0, "enable need_wakeup"}, {"vlan-prio", 'q', "NUM", 0, "packet vlan priority, also socket priority\n" " Def: 0 | Min: 0 | Max: 7"}, + {"socket-prio", 'g', "NUM", 0, "packet socket priority\n" + " Def: 0 | Min: 0 | Max: 15"}, /* Reserved: u / w */ {0,0,0,0, "TX control:" }, @@ -188,6 +190,19 @@ static error_t parser(int key, char *arg, struct argp_state *state) #endif opt->vlan_prio = opt->socket_prio * 32; break; + case 'g': + len = strlen(arg); + res = strtol((const char *)arg, &str_end, 10); + if (errno || res < 0 || res >= 15 || str_end != &arg[len]) + exit_with_error("Invalid queue number/socket priority. Check --help"); + opt->socket_prio = (uint32_t)res; + //printf("\n%d\n", opt->socket_prio); + //#ifdef WITH_XDP + if (opt->socket_mode == MODE_AFXDP) + exit_with_error("AF_XDP does not support setting socket priority."); + //#endif + //opt->vlan_prio = opt->socket_prio * 32; + break; case 'X': opt->socket_mode = MODE_AFXDP; break;