s390/qeth: remove driver-wide workqueue
The qeth-wide workqueue is now only used by a single caller to schedule close_dev work. Just put it on a system queue instead. Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
bf42d40b12
commit
dcef5cad63
@ -74,8 +74,6 @@ static void qeth_notify_skbs(struct qeth_qdio_out_q *queue,
|
|||||||
static void qeth_release_skbs(struct qeth_qdio_out_buffer *buf);
|
static void qeth_release_skbs(struct qeth_qdio_out_buffer *buf);
|
||||||
static int qeth_init_qdio_out_buf(struct qeth_qdio_out_q *, int);
|
static int qeth_init_qdio_out_buf(struct qeth_qdio_out_q *, int);
|
||||||
|
|
||||||
static struct workqueue_struct *qeth_wq;
|
|
||||||
|
|
||||||
int qeth_card_hw_is_reachable(struct qeth_card *card)
|
int qeth_card_hw_is_reachable(struct qeth_card *card)
|
||||||
{
|
{
|
||||||
return (card->state == CARD_STATE_SOFTSETUP) ||
|
return (card->state == CARD_STATE_SOFTSETUP) ||
|
||||||
@ -92,12 +90,6 @@ static void qeth_close_dev_handler(struct work_struct *work)
|
|||||||
ccwgroup_set_offline(card->gdev);
|
ccwgroup_set_offline(card->gdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qeth_close_dev(struct qeth_card *card)
|
|
||||||
{
|
|
||||||
QETH_CARD_TEXT(card, 2, "cldevsubm");
|
|
||||||
queue_work(qeth_wq, &card->close_dev_work);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *qeth_get_cardname(struct qeth_card *card)
|
static const char *qeth_get_cardname(struct qeth_card *card)
|
||||||
{
|
{
|
||||||
if (card->info.guestlan) {
|
if (card->info.guestlan) {
|
||||||
@ -634,7 +626,7 @@ static struct qeth_ipa_cmd *qeth_check_ipa_data(struct qeth_card *card,
|
|||||||
dev_err(&card->gdev->dev,
|
dev_err(&card->gdev->dev,
|
||||||
"Interface %s is down because the adjacent port is no longer in reflective relay mode\n",
|
"Interface %s is down because the adjacent port is no longer in reflective relay mode\n",
|
||||||
QETH_CARD_IFNAME(card));
|
QETH_CARD_IFNAME(card));
|
||||||
qeth_close_dev(card);
|
schedule_work(&card->close_dev_work);
|
||||||
} else {
|
} else {
|
||||||
dev_warn(&card->gdev->dev,
|
dev_warn(&card->gdev->dev,
|
||||||
"The link for interface %s on CHPID 0x%X failed\n",
|
"The link for interface %s on CHPID 0x%X failed\n",
|
||||||
@ -6265,12 +6257,6 @@ static int __init qeth_core_init(void)
|
|||||||
|
|
||||||
pr_info("loading core functions\n");
|
pr_info("loading core functions\n");
|
||||||
|
|
||||||
qeth_wq = create_singlethread_workqueue("qeth_wq");
|
|
||||||
if (!qeth_wq) {
|
|
||||||
rc = -ENOMEM;
|
|
||||||
goto out_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = qeth_register_dbf_views();
|
rc = qeth_register_dbf_views();
|
||||||
if (rc)
|
if (rc)
|
||||||
goto dbf_err;
|
goto dbf_err;
|
||||||
@ -6312,8 +6298,6 @@ slab_err:
|
|||||||
register_err:
|
register_err:
|
||||||
qeth_unregister_dbf_views();
|
qeth_unregister_dbf_views();
|
||||||
dbf_err:
|
dbf_err:
|
||||||
destroy_workqueue(qeth_wq);
|
|
||||||
out_err:
|
|
||||||
pr_err("Initializing the qeth device driver failed\n");
|
pr_err("Initializing the qeth device driver failed\n");
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -6321,7 +6305,6 @@ out_err:
|
|||||||
static void __exit qeth_core_exit(void)
|
static void __exit qeth_core_exit(void)
|
||||||
{
|
{
|
||||||
qeth_clear_dbf_list();
|
qeth_clear_dbf_list();
|
||||||
destroy_workqueue(qeth_wq);
|
|
||||||
ccwgroup_driver_unregister(&qeth_core_ccwgroup_driver);
|
ccwgroup_driver_unregister(&qeth_core_ccwgroup_driver);
|
||||||
ccw_driver_unregister(&qeth_ccw_driver);
|
ccw_driver_unregister(&qeth_ccw_driver);
|
||||||
kmem_cache_destroy(qeth_qdio_outbuf_cache);
|
kmem_cache_destroy(qeth_qdio_outbuf_cache);
|
||||||
|
Reference in New Issue
Block a user