Commit 15ccf2f4 authored by Ronak Doshi's avatar Ronak Doshi Committed by David S. Miller

vmxnet3: remove power of 2 limitation on the queues

With version 6, vmxnet3 relaxes the restriction on queues to
be power of two. This is helpful in cases (Edge VM) where
vcpus are less than 8 and device requires more than 4 queues.
Signed-off-by: default avatarRonak Doshi <doshir@vmware.com>
Acked-by: default avatarGuolin Yang <gyang@vmware.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 39f9895a
...@@ -3399,7 +3399,6 @@ vmxnet3_probe_device(struct pci_dev *pdev, ...@@ -3399,7 +3399,6 @@ vmxnet3_probe_device(struct pci_dev *pdev,
else else
#endif #endif
num_rx_queues = 1; num_rx_queues = 1;
num_rx_queues = rounddown_pow_of_two(num_rx_queues);
if (enable_mq) if (enable_mq)
num_tx_queues = min(VMXNET3_DEVICE_MAX_TX_QUEUES, num_tx_queues = min(VMXNET3_DEVICE_MAX_TX_QUEUES,
...@@ -3407,7 +3406,6 @@ vmxnet3_probe_device(struct pci_dev *pdev, ...@@ -3407,7 +3406,6 @@ vmxnet3_probe_device(struct pci_dev *pdev,
else else
num_tx_queues = 1; num_tx_queues = 1;
num_tx_queues = rounddown_pow_of_two(num_tx_queues);
netdev = alloc_etherdev_mq(sizeof(struct vmxnet3_adapter), netdev = alloc_etherdev_mq(sizeof(struct vmxnet3_adapter),
max(num_tx_queues, num_rx_queues)); max(num_tx_queues, num_rx_queues));
if (!netdev) if (!netdev)
...@@ -3525,6 +3523,8 @@ vmxnet3_probe_device(struct pci_dev *pdev, ...@@ -3525,6 +3523,8 @@ vmxnet3_probe_device(struct pci_dev *pdev,
} }
} else { } else {
adapter->queuesExtEnabled = false; adapter->queuesExtEnabled = false;
num_rx_queues = rounddown_pow_of_two(num_rx_queues);
num_tx_queues = rounddown_pow_of_two(num_tx_queues);
adapter->num_rx_queues = min(num_rx_queues, adapter->num_rx_queues = min(num_rx_queues,
VMXNET3_DEVICE_DEFAULT_RX_QUEUES); VMXNET3_DEVICE_DEFAULT_RX_QUEUES);
adapter->num_tx_queues = min(num_tx_queues, adapter->num_tx_queues = min(num_tx_queues,
...@@ -3705,7 +3705,9 @@ vmxnet3_remove_device(struct pci_dev *pdev) ...@@ -3705,7 +3705,9 @@ vmxnet3_remove_device(struct pci_dev *pdev)
else else
#endif #endif
num_rx_queues = 1; num_rx_queues = 1;
if (!VMXNET3_VERSION_GE_6(adapter)) {
num_rx_queues = rounddown_pow_of_two(num_rx_queues); num_rx_queues = rounddown_pow_of_two(num_rx_queues);
}
if (VMXNET3_VERSION_GE_6(adapter)) { if (VMXNET3_VERSION_GE_6(adapter)) {
spin_lock_irqsave(&adapter->cmd_lock, flags); spin_lock_irqsave(&adapter->cmd_lock, flags);
VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD, VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment