|
@@ -9758,6 +9758,17 @@ static void ixgbe_fwd_del(struct net_device *pdev, void *priv)
|
|
limit = find_last_bit(&adapter->fwd_bitmask, 32);
|
|
limit = find_last_bit(&adapter->fwd_bitmask, 32);
|
|
adapter->ring_feature[RING_F_VMDQ].limit = limit + 1;
|
|
adapter->ring_feature[RING_F_VMDQ].limit = limit + 1;
|
|
ixgbe_fwd_ring_down(fwd_adapter->netdev, fwd_adapter);
|
|
ixgbe_fwd_ring_down(fwd_adapter->netdev, fwd_adapter);
|
|
|
|
+
|
|
|
|
+ /* go back to full RSS if we're done with our VMQs */
|
|
|
|
+ if (adapter->ring_feature[RING_F_VMDQ].limit == 1) {
|
|
|
|
+ int rss = min_t(int, ixgbe_max_rss_indices(adapter),
|
|
|
|
+ num_online_cpus());
|
|
|
|
+
|
|
|
|
+ adapter->flags &= ~IXGBE_FLAG_VMDQ_ENABLED;
|
|
|
|
+ adapter->flags &= ~IXGBE_FLAG_SRIOV_ENABLED;
|
|
|
|
+ adapter->ring_feature[RING_F_RSS].limit = rss;
|
|
|
|
+ }
|
|
|
|
+
|
|
ixgbe_setup_tc(pdev, netdev_get_num_tc(pdev));
|
|
ixgbe_setup_tc(pdev, netdev_get_num_tc(pdev));
|
|
netdev_dbg(pdev, "pool %i:%i queues %i:%i VSI bitmask %lx\n",
|
|
netdev_dbg(pdev, "pool %i:%i queues %i:%i VSI bitmask %lx\n",
|
|
fwd_adapter->pool, adapter->num_rx_pools,
|
|
fwd_adapter->pool, adapter->num_rx_pools,
|