static int qlcnic_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ring) { struct qlcnic_adapter *adapter = netdev_priv(dev); u16 num_rxd, num_jumbo_rxd, num_txd; if (ring->rx_mini_pending) return -EOPNOTSUPP; num_rxd = qlcnic_validate_ringparam(ring->rx_pending, MIN_RCV_DESCRIPTORS, adapter->max_rxd, "rx"); num_jumbo_rxd = qlcnic_validate_ringparam(ring->rx_jumbo_pending, MIN_JUMBO_DESCRIPTORS, adapter->max_jumbo_rxd, "rx jumbo"); num_txd = qlcnic_validate_ringparam(ring->tx_pending, MIN_CMD_DESCRIPTORS, MAX_CMD_DESCRIPTORS, "tx"); if (num_rxd == adapter->num_rxd && num_txd == adapter->num_txd && num_jumbo_rxd == adapter->num_jumbo_rxd) return 0; adapter->num_rxd = num_rxd; adapter->num_jumbo_rxd = num_jumbo_rxd; adapter->num_txd = num_txd; return qlcnic_reset_context(adapter); }
static int qlcnic_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ring) { struct qlcnic_adapter *adapter = netdev_priv(dev); u16 max_rcv_desc = MAX_RCV_DESCRIPTORS_10G; u16 max_jumbo_desc = MAX_JUMBO_RCV_DESCRIPTORS_10G; u16 num_rxd, num_jumbo_rxd, num_txd; if (ring->rx_mini_pending) return -EOPNOTSUPP; if (adapter->ahw.port_type == QLCNIC_GBE) { max_rcv_desc = MAX_RCV_DESCRIPTORS_1G; max_jumbo_desc = MAX_JUMBO_RCV_DESCRIPTORS_10G; } num_rxd = qlcnic_validate_ringparam(ring->rx_pending, MIN_RCV_DESCRIPTORS, max_rcv_desc, "rx"); num_jumbo_rxd = qlcnic_validate_ringparam(ring->rx_jumbo_pending, MIN_JUMBO_DESCRIPTORS, max_jumbo_desc, "rx jumbo"); num_txd = qlcnic_validate_ringparam(ring->tx_pending, MIN_CMD_DESCRIPTORS, MAX_CMD_DESCRIPTORS, "tx"); if (num_rxd == adapter->num_rxd && num_txd == adapter->num_txd && num_jumbo_rxd == adapter->num_jumbo_rxd) return 0; adapter->num_rxd = num_rxd; adapter->num_jumbo_rxd = num_jumbo_rxd; adapter->num_txd = num_txd; return qlcnic_reset_context(adapter); }