Commit 96d1bb53 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller

s390/qeth: move gdev shutdown handler to core

Duplicated code.
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
Acked-by: default avatarUrsula Braun <ubraun@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d73ef324
...@@ -711,7 +711,6 @@ struct qeth_discipline { ...@@ -711,7 +711,6 @@ struct qeth_discipline {
void (*remove) (struct ccwgroup_device *); void (*remove) (struct ccwgroup_device *);
int (*set_online) (struct ccwgroup_device *); int (*set_online) (struct ccwgroup_device *);
int (*set_offline) (struct ccwgroup_device *); int (*set_offline) (struct ccwgroup_device *);
void (*shutdown)(struct ccwgroup_device *);
int (*prepare) (struct ccwgroup_device *); int (*prepare) (struct ccwgroup_device *);
void (*complete) (struct ccwgroup_device *); void (*complete) (struct ccwgroup_device *);
int (*freeze)(struct ccwgroup_device *); int (*freeze)(struct ccwgroup_device *);
......
...@@ -5749,8 +5749,12 @@ static int qeth_core_set_offline(struct ccwgroup_device *gdev) ...@@ -5749,8 +5749,12 @@ static int qeth_core_set_offline(struct ccwgroup_device *gdev)
static void qeth_core_shutdown(struct ccwgroup_device *gdev) static void qeth_core_shutdown(struct ccwgroup_device *gdev)
{ {
struct qeth_card *card = dev_get_drvdata(&gdev->dev); struct qeth_card *card = dev_get_drvdata(&gdev->dev);
if (card->discipline && card->discipline->shutdown) qeth_set_allowed_threads(card, 0, 1);
card->discipline->shutdown(gdev); if ((gdev->state == CCWGROUP_ONLINE) && card->info.hwtrap)
qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM);
qeth_qdio_clear_card(card, 0);
qeth_clear_qdio_buffers(card);
qdio_free(CARD_DDEV(card));
} }
static int qeth_core_prepare(struct ccwgroup_device *gdev) static int qeth_core_prepare(struct ccwgroup_device *gdev)
......
...@@ -1200,17 +1200,6 @@ static void __exit qeth_l2_exit(void) ...@@ -1200,17 +1200,6 @@ static void __exit qeth_l2_exit(void)
pr_info("unregister layer 2 discipline\n"); pr_info("unregister layer 2 discipline\n");
} }
static void qeth_l2_shutdown(struct ccwgroup_device *gdev)
{
struct qeth_card *card = dev_get_drvdata(&gdev->dev);
qeth_set_allowed_threads(card, 0, 1);
if ((gdev->state == CCWGROUP_ONLINE) && card->info.hwtrap)
qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM);
qeth_qdio_clear_card(card, 0);
qeth_clear_qdio_buffers(card);
qdio_free(CARD_DDEV(card));
}
static int qeth_l2_pm_suspend(struct ccwgroup_device *gdev) static int qeth_l2_pm_suspend(struct ccwgroup_device *gdev)
{ {
struct qeth_card *card = dev_get_drvdata(&gdev->dev); struct qeth_card *card = dev_get_drvdata(&gdev->dev);
...@@ -1288,7 +1277,6 @@ struct qeth_discipline qeth_l2_discipline = { ...@@ -1288,7 +1277,6 @@ struct qeth_discipline qeth_l2_discipline = {
.remove = qeth_l2_remove_device, .remove = qeth_l2_remove_device,
.set_online = qeth_l2_set_online, .set_online = qeth_l2_set_online,
.set_offline = qeth_l2_set_offline, .set_offline = qeth_l2_set_offline,
.shutdown = qeth_l2_shutdown,
.freeze = qeth_l2_pm_suspend, .freeze = qeth_l2_pm_suspend,
.thaw = qeth_l2_pm_resume, .thaw = qeth_l2_pm_resume,
.restore = qeth_l2_pm_resume, .restore = qeth_l2_pm_resume,
......
...@@ -3251,17 +3251,6 @@ static int qeth_l3_recover(void *ptr) ...@@ -3251,17 +3251,6 @@ static int qeth_l3_recover(void *ptr)
return 0; return 0;
} }
static void qeth_l3_shutdown(struct ccwgroup_device *gdev)
{
struct qeth_card *card = dev_get_drvdata(&gdev->dev);
qeth_set_allowed_threads(card, 0, 1);
if ((gdev->state == CCWGROUP_ONLINE) && card->info.hwtrap)
qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM);
qeth_qdio_clear_card(card, 0);
qeth_clear_qdio_buffers(card);
qdio_free(CARD_DDEV(card));
}
static int qeth_l3_pm_suspend(struct ccwgroup_device *gdev) static int qeth_l3_pm_suspend(struct ccwgroup_device *gdev)
{ {
struct qeth_card *card = dev_get_drvdata(&gdev->dev); struct qeth_card *card = dev_get_drvdata(&gdev->dev);
...@@ -3325,7 +3314,6 @@ struct qeth_discipline qeth_l3_discipline = { ...@@ -3325,7 +3314,6 @@ struct qeth_discipline qeth_l3_discipline = {
.remove = qeth_l3_remove_device, .remove = qeth_l3_remove_device,
.set_online = qeth_l3_set_online, .set_online = qeth_l3_set_online,
.set_offline = qeth_l3_set_offline, .set_offline = qeth_l3_set_offline,
.shutdown = qeth_l3_shutdown,
.freeze = qeth_l3_pm_suspend, .freeze = qeth_l3_pm_suspend,
.thaw = qeth_l3_pm_resume, .thaw = qeth_l3_pm_resume,
.restore = qeth_l3_pm_resume, .restore = qeth_l3_pm_resume,
......
Markdown is supported
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