Stanislav Fomichev <sdf@xxxxxxxxxx> writes: > +static int rxq_num(const char *ifname) > +{ > + struct ethtool_channels ch = { > + .cmd = ETHTOOL_GCHANNELS, > + }; > + > + struct ifreq ifr = { > + .ifr_data = (void *)&ch, > + }; > + strcpy(ifr.ifr_name, ifname); > + int fd, ret; > + > + fd = socket(AF_UNIX, SOCK_DGRAM, 0); > + if (fd < 0) > + error(-1, errno, "socket"); > + > + ret = ioctl(fd, SIOCETHTOOL, &ifr); > + if (ret < 0) > + error(-1, errno, "socket"); > + > + close(fd); > + > + return ch.rx_count; > +} mlx5 uses 'combined' channels, so this returns 0. Changing it to just: return ch.rx_count ?: ch.combined_count; works though :) -Toke