Merge branch 'sfc-fixes'
Íñigo Huguet says: ==================== sfc: fix some efx_separate_tx_channels errors Trying to load sfc driver with modparam efx_separate_tx_channels=1 resulted in errors during initialization and not being able to use the NIC. This patches fix a few bugs and make it work again. v2: * added Martin's patch instead of a previous mine. Mine one solved some of the initialization errors, but Martin's solves them also in all possible cases. * removed whitespaces cleanup, as requested by Jakub ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -298,6 +298,7 @@ int efx_probe_interrupts(struct efx_nic *efx)
|
|||||||
efx->n_channels = 1;
|
efx->n_channels = 1;
|
||||||
efx->n_rx_channels = 1;
|
efx->n_rx_channels = 1;
|
||||||
efx->n_tx_channels = 1;
|
efx->n_tx_channels = 1;
|
||||||
|
efx->tx_channel_offset = 0;
|
||||||
efx->n_xdp_channels = 0;
|
efx->n_xdp_channels = 0;
|
||||||
efx->xdp_channel_offset = efx->n_channels;
|
efx->xdp_channel_offset = efx->n_channels;
|
||||||
rc = pci_enable_msi(efx->pci_dev);
|
rc = pci_enable_msi(efx->pci_dev);
|
||||||
@@ -318,6 +319,7 @@ int efx_probe_interrupts(struct efx_nic *efx)
|
|||||||
efx->n_channels = 1 + (efx_separate_tx_channels ? 1 : 0);
|
efx->n_channels = 1 + (efx_separate_tx_channels ? 1 : 0);
|
||||||
efx->n_rx_channels = 1;
|
efx->n_rx_channels = 1;
|
||||||
efx->n_tx_channels = 1;
|
efx->n_tx_channels = 1;
|
||||||
|
efx->tx_channel_offset = 1;
|
||||||
efx->n_xdp_channels = 0;
|
efx->n_xdp_channels = 0;
|
||||||
efx->xdp_channel_offset = efx->n_channels;
|
efx->xdp_channel_offset = efx->n_channels;
|
||||||
efx->legacy_irq = efx->pci_dev->irq;
|
efx->legacy_irq = efx->pci_dev->irq;
|
||||||
@@ -954,10 +956,6 @@ int efx_set_channels(struct efx_nic *efx)
|
|||||||
struct efx_channel *channel;
|
struct efx_channel *channel;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
efx->tx_channel_offset =
|
|
||||||
efx_separate_tx_channels ?
|
|
||||||
efx->n_channels - efx->n_tx_channels : 0;
|
|
||||||
|
|
||||||
if (efx->xdp_tx_queue_count) {
|
if (efx->xdp_tx_queue_count) {
|
||||||
EFX_WARN_ON_PARANOID(efx->xdp_tx_queues);
|
EFX_WARN_ON_PARANOID(efx->xdp_tx_queues);
|
||||||
|
|
||||||
|
|||||||
@@ -1530,7 +1530,7 @@ static inline bool efx_channel_is_xdp_tx(struct efx_channel *channel)
|
|||||||
|
|
||||||
static inline bool efx_channel_has_tx_queues(struct efx_channel *channel)
|
static inline bool efx_channel_has_tx_queues(struct efx_channel *channel)
|
||||||
{
|
{
|
||||||
return true;
|
return channel && channel->channel >= channel->efx->tx_channel_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned int efx_channel_num_tx_queues(struct efx_channel *channel)
|
static inline unsigned int efx_channel_num_tx_queues(struct efx_channel *channel)
|
||||||
|
|||||||
Reference in New Issue
Block a user