static int dump_rings(PacketSockEntry *psk, struct packet_sock_desc *sd) { if (sd->rx) { psk->rx_ring = dump_ring(sd->rx); if (!psk->rx_ring) return -1; } if (sd->tx) { psk->tx_ring = dump_ring(sd->tx); if (!psk->tx_ring) return -1; } return 0; }
static int do_gring(int fd, struct ifreq *ifr) { int err; fprintf(stdout, "Ring parameters for %s:\n", devname); ering.cmd = ETHTOOL_GRINGPARAM; ifr->ifr_data = (caddr_t)&ering; err = ioctl(fd, SIOCETHTOOL, ifr); if (err == 0) { err = dump_ring(); if (err) return err; } else { perror("Cannot get device ring settings"); return 76; } return 0; }