Skip to content

Commit

Permalink
ibmvnic: Update and clean up reset TX pool routine
Browse files Browse the repository at this point in the history
Update TX pool reset routine to accommodate new TSO pool array. Introduce
a function that resets one TX pool, and use that function to initialize
each pool in both pool arrays.

Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Thomas Falcon authored and David S. Miller committed Mar 18, 2018
1 parent 4bd95a5 commit e26dc25
Showing 1 changed file with 25 additions and 20 deletions.
45 changes: 25 additions & 20 deletions drivers/net/ethernet/ibm/ibmvnic.c
Original file line number Diff line number Diff line change
Expand Up @@ -557,36 +557,41 @@ static int init_rx_pools(struct net_device *netdev)
return 0;
}

static int reset_one_tx_pool(struct ibmvnic_adapter *adapter,
struct ibmvnic_tx_pool *tx_pool)
{
int rc, i;

rc = reset_long_term_buff(adapter, &tx_pool->long_term_buff);
if (rc)
return rc;

memset(tx_pool->tx_buff, 0,
tx_pool->num_buffers *
sizeof(struct ibmvnic_tx_buff));

for (i = 0; i < tx_pool->num_buffers; i++)
tx_pool->free_map[i] = i;

tx_pool->consumer_index = 0;
tx_pool->producer_index = 0;

return 0;
}

static int reset_tx_pools(struct ibmvnic_adapter *adapter)
{
struct ibmvnic_tx_pool *tx_pool;
int tx_scrqs;
int i, j, rc;
int i, rc;

tx_scrqs = be32_to_cpu(adapter->login_rsp_buf->num_txsubm_subcrqs);
for (i = 0; i < tx_scrqs; i++) {
netdev_dbg(adapter->netdev, "Re-setting tx_pool[%d]\n", i);

tx_pool = &adapter->tx_pool[i];

rc = reset_long_term_buff(adapter, &tx_pool->long_term_buff);
rc = reset_one_tx_pool(adapter, &adapter->tso_pool[i]);
if (rc)
return rc;

rc = reset_long_term_buff(adapter, &tx_pool->tso_ltb);
rc = reset_one_tx_pool(adapter, &adapter->tx_pool[i]);
if (rc)
return rc;

memset(tx_pool->tx_buff, 0,
adapter->req_tx_entries_per_subcrq *
sizeof(struct ibmvnic_tx_buff));

for (j = 0; j < adapter->req_tx_entries_per_subcrq; j++)
tx_pool->free_map[j] = j;

tx_pool->consumer_index = 0;
tx_pool->producer_index = 0;
tx_pool->tso_index = 0;
}

return 0;
Expand Down

0 comments on commit e26dc25

Please sign in to comment.