static int __fm10k_setup_tc(struct net_device *dev, u32 handle, __be16 proto, struct tc_to_netdev *tc) { if (tc->type != TC_SETUP_MQPRIO) return -EINVAL; return fm10k_setup_tc(dev, tc->tc); }
static int fm10k_set_channels(struct net_device *dev, struct ethtool_channels *ch) { struct fm10k_intfc *interface = netdev_priv(dev); unsigned int count = ch->combined_count; struct fm10k_hw *hw = &interface->hw; /* verify they are not requesting separate vectors */ if (!count || ch->rx_count || ch->tx_count) return -EINVAL; /* verify other_count has not changed */ if (ch->other_count != NON_Q_VECTORS(hw)) return -EINVAL; /* verify the number of channels does not exceed hardware limits */ if (count > fm10k_max_channels(dev)) return -EINVAL; interface->ring_feature[RING_F_RSS].limit = count; /* use setup TC to update any traffic class queue mapping */ return fm10k_setup_tc(dev, netdev_get_num_tc(dev)); }