diff options
author | Julian Wiedmann | 2019-02-15 19:22:26 +0100 |
---|---|---|
committer | David S. Miller | 2019-02-16 05:35:29 +0100 |
commit | bb92d3f8667f674ae6b2150406f19b33d5ad5f85 (patch) | |
tree | d2e20fcfff44376f8ebd96c4fb0267c0dfc9d1dc /drivers/s390/net/qeth_core_main.c | |
parent | s390/qeth: allow manual recovery when device is SOFTSETUP (diff) | |
download | kernel-qcow2-linux-bb92d3f8667f674ae6b2150406f19b33d5ad5f85.tar.gz kernel-qcow2-linux-bb92d3f8667f674ae6b2150406f19b33d5ad5f85.tar.xz kernel-qcow2-linux-bb92d3f8667f674ae6b2150406f19b33d5ad5f85.zip |
s390/qeth: use a static Output Queue array
qeth dynamically allocates an array for storing pointers to its
Output Queue structures. Switch this to a static array - we are
currently limited to 4 Output Queues, so shrinking the qeth_qdio_info
struct by just a few bytes doesn't justify the additional complexity.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_core_main.c')
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 5ca934775c42..d01a4aded4cc 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c @@ -2433,12 +2433,6 @@ static int qeth_alloc_qdio_buffers(struct qeth_card *card) goto out_freeinq; /* outbound */ - card->qdio.out_qs = - kcalloc(card->qdio.no_out_queues, - sizeof(struct qeth_qdio_out_q *), - GFP_KERNEL); - if (!card->qdio.out_qs) - goto out_freepool; for (i = 0; i < card->qdio.no_out_queues; ++i) { card->qdio.out_qs[i] = qeth_alloc_qdio_out_buf(); if (!card->qdio.out_qs[i]) @@ -2468,11 +2462,10 @@ out_freeoutqbufs: card->qdio.out_qs[i]->bufs[j] = NULL; } out_freeoutq: - while (i > 0) + while (i > 0) { qeth_free_output_queue(card->qdio.out_qs[--i]); - kfree(card->qdio.out_qs); - card->qdio.out_qs = NULL; -out_freepool: + card->qdio.out_qs[i] = NULL; + } qeth_free_buffer_pool(card); out_freeinq: qeth_free_qdio_queue(card->qdio.in_q); @@ -2501,11 +2494,9 @@ static void qeth_free_qdio_buffers(struct qeth_card *card) /* inbound buffer pool */ qeth_free_buffer_pool(card); /* free outbound qdio_qs */ - if (card->qdio.out_qs) { - for (i = 0; i < card->qdio.no_out_queues; i++) - qeth_free_output_queue(card->qdio.out_qs[i]); - kfree(card->qdio.out_qs); - card->qdio.out_qs = NULL; + for (i = 0; i < card->qdio.no_out_queues; i++) { + qeth_free_output_queue(card->qdio.out_qs[i]); + card->qdio.out_qs[i] = NULL; } } |