Commit c92aaff1 authored by Ben Hutchings's avatar Ben Hutchings
Browse files

sfc: Reverse initial buffer table allocation to allow for later resizing

We have a very simple way of allocating buffer table entries to
queues, which is just to take the next one available.  The extra
channels are the highest numbered channels but they need to be
allocated the lowest entries so that the traffic channels can be
allocated new entries without any collisions.

Signed-off-by: default avatarBen Hutchings <>
parent 01cb543d
...@@ -585,7 +585,12 @@ static int efx_probe_channels(struct efx_nic *efx) ...@@ -585,7 +585,12 @@ static int efx_probe_channels(struct efx_nic *efx)
/* Restart special buffer allocation */ /* Restart special buffer allocation */
efx->next_buffer_table = 0; efx->next_buffer_table = 0;
efx_for_each_channel(channel, efx) { /* Probe channels in reverse, so that any 'extra' channels
* use the start of the buffer table. This allows the traffic
* channels to be resized without moving them or wasting the
* entries before them.
efx_for_each_channel_rev(channel, efx) {
rc = efx_probe_channel(channel); rc = efx_probe_channel(channel);
if (rc) { if (rc) {
netif_err(efx, probe, efx->net_dev, netif_err(efx, probe, efx->net_dev,
Supports Markdown
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