mirror of
https://github.com/torvalds/linux
synced 2024-09-16 00:58:07 +00:00
gve: Make gve_turn(up|down) ignore stopped queues
Currently the queues are either all live or all dead, toggling from one state to the other via the ndo open and stop hooks. The future addition of single-queue ndo hooks changes this, and thus gve_turnup and gve_turndown should evolve to account for a state where some queues are live and some aren't. Tested-by: Mina Almasry <almasrymina@google.com> Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com> Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com> Signed-off-by: Shailend Chand <shailend@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
242f30fe69
commit
5abc37bdcb
|
@ -1937,12 +1937,16 @@ static void gve_turndown(struct gve_priv *priv)
|
|||
int ntfy_idx = gve_tx_idx_to_ntfy(priv, idx);
|
||||
struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx];
|
||||
|
||||
if (!gve_tx_was_added_to_block(priv, idx))
|
||||
continue;
|
||||
napi_disable(&block->napi);
|
||||
}
|
||||
for (idx = 0; idx < priv->rx_cfg.num_queues; idx++) {
|
||||
int ntfy_idx = gve_rx_idx_to_ntfy(priv, idx);
|
||||
struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx];
|
||||
|
||||
if (!gve_rx_was_added_to_block(priv, idx))
|
||||
continue;
|
||||
napi_disable(&block->napi);
|
||||
}
|
||||
|
||||
|
@ -1965,6 +1969,9 @@ static void gve_turnup(struct gve_priv *priv)
|
|||
int ntfy_idx = gve_tx_idx_to_ntfy(priv, idx);
|
||||
struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx];
|
||||
|
||||
if (!gve_tx_was_added_to_block(priv, idx))
|
||||
continue;
|
||||
|
||||
napi_enable(&block->napi);
|
||||
if (gve_is_gqi(priv)) {
|
||||
iowrite32be(0, gve_irq_doorbell(priv, block));
|
||||
|
@ -1977,6 +1984,9 @@ static void gve_turnup(struct gve_priv *priv)
|
|||
int ntfy_idx = gve_rx_idx_to_ntfy(priv, idx);
|
||||
struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx];
|
||||
|
||||
if (!gve_rx_was_added_to_block(priv, idx))
|
||||
continue;
|
||||
|
||||
napi_enable(&block->napi);
|
||||
if (gve_is_gqi(priv)) {
|
||||
iowrite32be(0, gve_irq_doorbell(priv, block));
|
||||
|
|
Loading…
Reference in a new issue