diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2012-05-15 12:02:21 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-05-16 08:42:48 -0400 |
commit | c041f2d487654eb2f981f517b216cf1efdf3cdf2 (patch) | |
tree | ae9906a72614003b2d6b5725de37718d9ca296d8 /drivers/s390 | |
parent | b7169c515bbdc139fadee5a98a866c5dc5bb98af (diff) |
s390/qeth: stop using struct ccwgroup driver for discipline callbacks
The interface between qeth and its disciplines should not depend on
struct ccwgroup_driver, as a qeth discipline is not a ccwgroup
driver on its own. Instead provide the particular callbacks in struct
qeth_discipline.
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/net/qeth_core.h | 17 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 70 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_sys.c | 6 | ||||
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 16 | ||||
-rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 16 |
5 files changed, 61 insertions, 64 deletions
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h index 81d19db805ba..5686955e62dd 100644 --- a/drivers/s390/net/qeth_core.h +++ b/drivers/s390/net/qeth_core.h | |||
@@ -711,7 +711,16 @@ struct qeth_discipline { | |||
711 | qdio_handler_t *input_handler; | 711 | qdio_handler_t *input_handler; |
712 | qdio_handler_t *output_handler; | 712 | qdio_handler_t *output_handler; |
713 | int (*recover)(void *ptr); | 713 | int (*recover)(void *ptr); |
714 | struct ccwgroup_driver *ccwgdriver; | 714 | int (*setup) (struct ccwgroup_device *); |
715 | void (*remove) (struct ccwgroup_device *); | ||
716 | int (*set_online) (struct ccwgroup_device *); | ||
717 | int (*set_offline) (struct ccwgroup_device *); | ||
718 | void (*shutdown)(struct ccwgroup_device *); | ||
719 | int (*prepare) (struct ccwgroup_device *); | ||
720 | void (*complete) (struct ccwgroup_device *); | ||
721 | int (*freeze)(struct ccwgroup_device *); | ||
722 | int (*thaw) (struct ccwgroup_device *); | ||
723 | int (*restore)(struct ccwgroup_device *); | ||
715 | }; | 724 | }; |
716 | 725 | ||
717 | struct qeth_vlan_vid { | 726 | struct qeth_vlan_vid { |
@@ -775,7 +784,7 @@ struct qeth_card { | |||
775 | struct qeth_perf_stats perf_stats; | 784 | struct qeth_perf_stats perf_stats; |
776 | int read_or_write_problem; | 785 | int read_or_write_problem; |
777 | struct qeth_osn_info osn_info; | 786 | struct qeth_osn_info osn_info; |
778 | struct qeth_discipline discipline; | 787 | struct qeth_discipline *discipline; |
779 | atomic_t force_alloc_skb; | 788 | atomic_t force_alloc_skb; |
780 | struct service_level qeth_service_level; | 789 | struct service_level qeth_service_level; |
781 | struct qdio_ssqd_desc ssqd; | 790 | struct qdio_ssqd_desc ssqd; |
@@ -841,8 +850,8 @@ static inline int qeth_is_diagass_supported(struct qeth_card *card, | |||
841 | return card->info.diagass_support & (__u32)cmd; | 850 | return card->info.diagass_support & (__u32)cmd; |
842 | } | 851 | } |
843 | 852 | ||
844 | extern struct ccwgroup_driver qeth_l2_ccwgroup_driver; | 853 | extern struct qeth_discipline qeth_l2_discipline; |
845 | extern struct ccwgroup_driver qeth_l3_ccwgroup_driver; | 854 | extern struct qeth_discipline qeth_l3_discipline; |
846 | extern const struct attribute_group *qeth_generic_attr_groups[]; | 855 | extern const struct attribute_group *qeth_generic_attr_groups[]; |
847 | extern const struct attribute_group *qeth_osn_attr_groups[]; | 856 | extern const struct attribute_group *qeth_osn_attr_groups[]; |
848 | 857 | ||
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 1a6a3132cb4b..9423f3d7e20f 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c | |||
@@ -1365,7 +1365,7 @@ static void qeth_start_kernel_thread(struct work_struct *work) | |||
1365 | card->write.state != CH_STATE_UP) | 1365 | card->write.state != CH_STATE_UP) |
1366 | return; | 1366 | return; |
1367 | if (qeth_do_start_thread(card, QETH_RECOVER_THREAD)) { | 1367 | if (qeth_do_start_thread(card, QETH_RECOVER_THREAD)) { |
1368 | ts = kthread_run(card->discipline.recover, (void *)card, | 1368 | ts = kthread_run(card->discipline->recover, (void *)card, |
1369 | "qeth_recover"); | 1369 | "qeth_recover"); |
1370 | if (IS_ERR(ts)) { | 1370 | if (IS_ERR(ts)) { |
1371 | qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); | 1371 | qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); |
@@ -4629,7 +4629,7 @@ static int qeth_qdio_establish(struct qeth_card *card) | |||
4629 | goto out_free_in_sbals; | 4629 | goto out_free_in_sbals; |
4630 | } | 4630 | } |
4631 | for (i = 0; i < card->qdio.no_in_queues; ++i) | 4631 | for (i = 0; i < card->qdio.no_in_queues; ++i) |
4632 | queue_start_poll[i] = card->discipline.start_poll; | 4632 | queue_start_poll[i] = card->discipline->start_poll; |
4633 | 4633 | ||
4634 | qeth_qdio_establish_cq(card, in_sbal_ptrs, queue_start_poll); | 4634 | qeth_qdio_establish_cq(card, in_sbal_ptrs, queue_start_poll); |
4635 | 4635 | ||
@@ -4653,8 +4653,8 @@ static int qeth_qdio_establish(struct qeth_card *card) | |||
4653 | init_data.qib_param_field = qib_param_field; | 4653 | init_data.qib_param_field = qib_param_field; |
4654 | init_data.no_input_qs = card->qdio.no_in_queues; | 4654 | init_data.no_input_qs = card->qdio.no_in_queues; |
4655 | init_data.no_output_qs = card->qdio.no_out_queues; | 4655 | init_data.no_output_qs = card->qdio.no_out_queues; |
4656 | init_data.input_handler = card->discipline.input_handler; | 4656 | init_data.input_handler = card->discipline->input_handler; |
4657 | init_data.output_handler = card->discipline.output_handler; | 4657 | init_data.output_handler = card->discipline->output_handler; |
4658 | init_data.queue_start_poll_array = queue_start_poll; | 4658 | init_data.queue_start_poll_array = queue_start_poll; |
4659 | init_data.int_parm = (unsigned long) card; | 4659 | init_data.int_parm = (unsigned long) card; |
4660 | init_data.input_sbal_addr_array = (void **) in_sbal_ptrs; | 4660 | init_data.input_sbal_addr_array = (void **) in_sbal_ptrs; |
@@ -5039,17 +5039,15 @@ int qeth_core_load_discipline(struct qeth_card *card, | |||
5039 | mutex_lock(&qeth_mod_mutex); | 5039 | mutex_lock(&qeth_mod_mutex); |
5040 | switch (discipline) { | 5040 | switch (discipline) { |
5041 | case QETH_DISCIPLINE_LAYER3: | 5041 | case QETH_DISCIPLINE_LAYER3: |
5042 | card->discipline.ccwgdriver = try_then_request_module( | 5042 | card->discipline = try_then_request_module( |
5043 | symbol_get(qeth_l3_ccwgroup_driver), | 5043 | symbol_get(qeth_l3_discipline), "qeth_l3"); |
5044 | "qeth_l3"); | ||
5045 | break; | 5044 | break; |
5046 | case QETH_DISCIPLINE_LAYER2: | 5045 | case QETH_DISCIPLINE_LAYER2: |
5047 | card->discipline.ccwgdriver = try_then_request_module( | 5046 | card->discipline = try_then_request_module( |
5048 | symbol_get(qeth_l2_ccwgroup_driver), | 5047 | symbol_get(qeth_l2_discipline), "qeth_l2"); |
5049 | "qeth_l2"); | ||
5050 | break; | 5048 | break; |
5051 | } | 5049 | } |
5052 | if (!card->discipline.ccwgdriver) { | 5050 | if (!card->discipline) { |
5053 | dev_err(&card->gdev->dev, "There is no kernel module to " | 5051 | dev_err(&card->gdev->dev, "There is no kernel module to " |
5054 | "support discipline %d\n", discipline); | 5052 | "support discipline %d\n", discipline); |
5055 | rc = -EINVAL; | 5053 | rc = -EINVAL; |
@@ -5061,10 +5059,10 @@ int qeth_core_load_discipline(struct qeth_card *card, | |||
5061 | void qeth_core_free_discipline(struct qeth_card *card) | 5059 | void qeth_core_free_discipline(struct qeth_card *card) |
5062 | { | 5060 | { |
5063 | if (card->options.layer2) | 5061 | if (card->options.layer2) |
5064 | symbol_put(qeth_l2_ccwgroup_driver); | 5062 | symbol_put(qeth_l2_discipline); |
5065 | else | 5063 | else |
5066 | symbol_put(qeth_l3_ccwgroup_driver); | 5064 | symbol_put(qeth_l3_discipline); |
5067 | card->discipline.ccwgdriver = NULL; | 5065 | card->discipline = NULL; |
5068 | } | 5066 | } |
5069 | 5067 | ||
5070 | static const struct device_type qeth_generic_devtype = { | 5068 | static const struct device_type qeth_generic_devtype = { |
@@ -5140,7 +5138,7 @@ static int qeth_core_probe_device(struct ccwgroup_device *gdev) | |||
5140 | rc = qeth_core_load_discipline(card, QETH_DISCIPLINE_LAYER2); | 5138 | rc = qeth_core_load_discipline(card, QETH_DISCIPLINE_LAYER2); |
5141 | if (rc) | 5139 | if (rc) |
5142 | goto err_dbf; | 5140 | goto err_dbf; |
5143 | rc = card->discipline.ccwgdriver->probe(card->gdev); | 5141 | rc = card->discipline->setup(card->gdev); |
5144 | if (rc) | 5142 | if (rc) |
5145 | goto err_disc; | 5143 | goto err_disc; |
5146 | case QETH_CARD_TYPE_OSD: | 5144 | case QETH_CARD_TYPE_OSD: |
@@ -5174,8 +5172,8 @@ static void qeth_core_remove_device(struct ccwgroup_device *gdev) | |||
5174 | 5172 | ||
5175 | QETH_DBF_TEXT(SETUP, 2, "removedv"); | 5173 | QETH_DBF_TEXT(SETUP, 2, "removedv"); |
5176 | 5174 | ||
5177 | if (card->discipline.ccwgdriver) { | 5175 | if (card->discipline) { |
5178 | card->discipline.ccwgdriver->remove(gdev); | 5176 | card->discipline->remove(gdev); |
5179 | qeth_core_free_discipline(card); | 5177 | qeth_core_free_discipline(card); |
5180 | } | 5178 | } |
5181 | 5179 | ||
@@ -5195,7 +5193,7 @@ static int qeth_core_set_online(struct ccwgroup_device *gdev) | |||
5195 | int rc = 0; | 5193 | int rc = 0; |
5196 | int def_discipline; | 5194 | int def_discipline; |
5197 | 5195 | ||
5198 | if (!card->discipline.ccwgdriver) { | 5196 | if (!card->discipline) { |
5199 | if (card->info.type == QETH_CARD_TYPE_IQD) | 5197 | if (card->info.type == QETH_CARD_TYPE_IQD) |
5200 | def_discipline = QETH_DISCIPLINE_LAYER3; | 5198 | def_discipline = QETH_DISCIPLINE_LAYER3; |
5201 | else | 5199 | else |
@@ -5203,11 +5201,11 @@ static int qeth_core_set_online(struct ccwgroup_device *gdev) | |||
5203 | rc = qeth_core_load_discipline(card, def_discipline); | 5201 | rc = qeth_core_load_discipline(card, def_discipline); |
5204 | if (rc) | 5202 | if (rc) |
5205 | goto err; | 5203 | goto err; |
5206 | rc = card->discipline.ccwgdriver->probe(card->gdev); | 5204 | rc = card->discipline->setup(card->gdev); |
5207 | if (rc) | 5205 | if (rc) |
5208 | goto err; | 5206 | goto err; |
5209 | } | 5207 | } |
5210 | rc = card->discipline.ccwgdriver->set_online(gdev); | 5208 | rc = card->discipline->set_online(gdev); |
5211 | err: | 5209 | err: |
5212 | return rc; | 5210 | return rc; |
5213 | } | 5211 | } |
@@ -5215,58 +5213,52 @@ err: | |||
5215 | static int qeth_core_set_offline(struct ccwgroup_device *gdev) | 5213 | static int qeth_core_set_offline(struct ccwgroup_device *gdev) |
5216 | { | 5214 | { |
5217 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5215 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5218 | return card->discipline.ccwgdriver->set_offline(gdev); | 5216 | return card->discipline->set_offline(gdev); |
5219 | } | 5217 | } |
5220 | 5218 | ||
5221 | static void qeth_core_shutdown(struct ccwgroup_device *gdev) | 5219 | static void qeth_core_shutdown(struct ccwgroup_device *gdev) |
5222 | { | 5220 | { |
5223 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5221 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5224 | if (card->discipline.ccwgdriver && | 5222 | if (card->discipline && card->discipline->shutdown) |
5225 | card->discipline.ccwgdriver->shutdown) | 5223 | card->discipline->shutdown(gdev); |
5226 | card->discipline.ccwgdriver->shutdown(gdev); | ||
5227 | } | 5224 | } |
5228 | 5225 | ||
5229 | static int qeth_core_prepare(struct ccwgroup_device *gdev) | 5226 | static int qeth_core_prepare(struct ccwgroup_device *gdev) |
5230 | { | 5227 | { |
5231 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5228 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5232 | if (card->discipline.ccwgdriver && | 5229 | if (card->discipline && card->discipline->prepare) |
5233 | card->discipline.ccwgdriver->prepare) | 5230 | return card->discipline->prepare(gdev); |
5234 | return card->discipline.ccwgdriver->prepare(gdev); | ||
5235 | return 0; | 5231 | return 0; |
5236 | } | 5232 | } |
5237 | 5233 | ||
5238 | static void qeth_core_complete(struct ccwgroup_device *gdev) | 5234 | static void qeth_core_complete(struct ccwgroup_device *gdev) |
5239 | { | 5235 | { |
5240 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5236 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5241 | if (card->discipline.ccwgdriver && | 5237 | if (card->discipline && card->discipline->complete) |
5242 | card->discipline.ccwgdriver->complete) | 5238 | card->discipline->complete(gdev); |
5243 | card->discipline.ccwgdriver->complete(gdev); | ||
5244 | } | 5239 | } |
5245 | 5240 | ||
5246 | static int qeth_core_freeze(struct ccwgroup_device *gdev) | 5241 | static int qeth_core_freeze(struct ccwgroup_device *gdev) |
5247 | { | 5242 | { |
5248 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5243 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5249 | if (card->discipline.ccwgdriver && | 5244 | if (card->discipline && card->discipline->freeze) |
5250 | card->discipline.ccwgdriver->freeze) | 5245 | return card->discipline->freeze(gdev); |
5251 | return card->discipline.ccwgdriver->freeze(gdev); | ||
5252 | return 0; | 5246 | return 0; |
5253 | } | 5247 | } |
5254 | 5248 | ||
5255 | static int qeth_core_thaw(struct ccwgroup_device *gdev) | 5249 | static int qeth_core_thaw(struct ccwgroup_device *gdev) |
5256 | { | 5250 | { |
5257 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5251 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5258 | if (card->discipline.ccwgdriver && | 5252 | if (card->discipline && card->discipline->thaw) |
5259 | card->discipline.ccwgdriver->thaw) | 5253 | return card->discipline->thaw(gdev); |
5260 | return card->discipline.ccwgdriver->thaw(gdev); | ||
5261 | return 0; | 5254 | return 0; |
5262 | } | 5255 | } |
5263 | 5256 | ||
5264 | static int qeth_core_restore(struct ccwgroup_device *gdev) | 5257 | static int qeth_core_restore(struct ccwgroup_device *gdev) |
5265 | { | 5258 | { |
5266 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); | 5259 | struct qeth_card *card = dev_get_drvdata(&gdev->dev); |
5267 | if (card->discipline.ccwgdriver && | 5260 | if (card->discipline && card->discipline->restore) |
5268 | card->discipline.ccwgdriver->restore) | 5261 | return card->discipline->restore(gdev); |
5269 | return card->discipline.ccwgdriver->restore(gdev); | ||
5270 | return 0; | 5262 | return 0; |
5271 | } | 5263 | } |
5272 | 5264 | ||
diff --git a/drivers/s390/net/qeth_core_sys.c b/drivers/s390/net/qeth_core_sys.c index a6b49db9f2d2..f163af575c48 100644 --- a/drivers/s390/net/qeth_core_sys.c +++ b/drivers/s390/net/qeth_core_sys.c | |||
@@ -434,8 +434,8 @@ static ssize_t qeth_dev_layer2_store(struct device *dev, | |||
434 | goto out; | 434 | goto out; |
435 | else { | 435 | else { |
436 | card->info.mac_bits = 0; | 436 | card->info.mac_bits = 0; |
437 | if (card->discipline.ccwgdriver) { | 437 | if (card->discipline) { |
438 | card->discipline.ccwgdriver->remove(card->gdev); | 438 | card->discipline->remove(card->gdev); |
439 | qeth_core_free_discipline(card); | 439 | qeth_core_free_discipline(card); |
440 | } | 440 | } |
441 | } | 441 | } |
@@ -444,7 +444,7 @@ static ssize_t qeth_dev_layer2_store(struct device *dev, | |||
444 | if (rc) | 444 | if (rc) |
445 | goto out; | 445 | goto out; |
446 | 446 | ||
447 | rc = card->discipline.ccwgdriver->probe(card->gdev); | 447 | rc = card->discipline->setup(card->gdev); |
448 | out: | 448 | out: |
449 | mutex_unlock(&card->discipline_mutex); | 449 | mutex_unlock(&card->discipline_mutex); |
450 | return rc ? rc : count; | 450 | return rc ? rc : count; |
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 0e7c29d1d7ef..426986518e96 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -882,12 +882,6 @@ static int qeth_l2_probe_device(struct ccwgroup_device *gdev) | |||
882 | INIT_LIST_HEAD(&card->mc_list); | 882 | INIT_LIST_HEAD(&card->mc_list); |
883 | card->options.layer2 = 1; | 883 | card->options.layer2 = 1; |
884 | card->info.hwtrap = 0; | 884 | card->info.hwtrap = 0; |
885 | card->discipline.start_poll = qeth_qdio_start_poll; | ||
886 | card->discipline.input_handler = (qdio_handler_t *) | ||
887 | qeth_qdio_input_handler; | ||
888 | card->discipline.output_handler = (qdio_handler_t *) | ||
889 | qeth_qdio_output_handler; | ||
890 | card->discipline.recover = qeth_l2_recover; | ||
891 | return 0; | 885 | return 0; |
892 | } | 886 | } |
893 | 887 | ||
@@ -1227,8 +1221,12 @@ out: | |||
1227 | return rc; | 1221 | return rc; |
1228 | } | 1222 | } |
1229 | 1223 | ||
1230 | struct ccwgroup_driver qeth_l2_ccwgroup_driver = { | 1224 | struct qeth_discipline qeth_l2_discipline = { |
1231 | .probe = qeth_l2_probe_device, | 1225 | .start_poll = qeth_qdio_start_poll, |
1226 | .input_handler = (qdio_handler_t *) qeth_qdio_input_handler, | ||
1227 | .output_handler = (qdio_handler_t *) qeth_qdio_output_handler, | ||
1228 | .recover = qeth_l2_recover, | ||
1229 | .setup = qeth_l2_probe_device, | ||
1232 | .remove = qeth_l2_remove_device, | 1230 | .remove = qeth_l2_remove_device, |
1233 | .set_online = qeth_l2_set_online, | 1231 | .set_online = qeth_l2_set_online, |
1234 | .set_offline = qeth_l2_set_offline, | 1232 | .set_offline = qeth_l2_set_offline, |
@@ -1237,7 +1235,7 @@ struct ccwgroup_driver qeth_l2_ccwgroup_driver = { | |||
1237 | .thaw = qeth_l2_pm_resume, | 1235 | .thaw = qeth_l2_pm_resume, |
1238 | .restore = qeth_l2_pm_resume, | 1236 | .restore = qeth_l2_pm_resume, |
1239 | }; | 1237 | }; |
1240 | EXPORT_SYMBOL_GPL(qeth_l2_ccwgroup_driver); | 1238 | EXPORT_SYMBOL_GPL(qeth_l2_discipline); |
1241 | 1239 | ||
1242 | static int qeth_osn_send_control_data(struct qeth_card *card, int len, | 1240 | static int qeth_osn_send_control_data(struct qeth_card *card, int len, |
1243 | struct qeth_cmd_buffer *iob) | 1241 | struct qeth_cmd_buffer *iob) |
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c index f85921607686..03535acb7afb 100644 --- a/drivers/s390/net/qeth_l3_main.c +++ b/drivers/s390/net/qeth_l3_main.c | |||
@@ -3376,12 +3376,6 @@ static int qeth_l3_probe_device(struct ccwgroup_device *gdev) | |||
3376 | qeth_l3_create_device_attributes(&gdev->dev); | 3376 | qeth_l3_create_device_attributes(&gdev->dev); |
3377 | card->options.layer2 = 0; | 3377 | card->options.layer2 = 0; |
3378 | card->info.hwtrap = 0; | 3378 | card->info.hwtrap = 0; |
3379 | card->discipline.start_poll = qeth_qdio_start_poll; | ||
3380 | card->discipline.input_handler = (qdio_handler_t *) | ||
3381 | qeth_qdio_input_handler; | ||
3382 | card->discipline.output_handler = (qdio_handler_t *) | ||
3383 | qeth_qdio_output_handler; | ||
3384 | card->discipline.recover = qeth_l3_recover; | ||
3385 | return 0; | 3379 | return 0; |
3386 | } | 3380 | } |
3387 | 3381 | ||
@@ -3656,8 +3650,12 @@ out: | |||
3656 | return rc; | 3650 | return rc; |
3657 | } | 3651 | } |
3658 | 3652 | ||
3659 | struct ccwgroup_driver qeth_l3_ccwgroup_driver = { | 3653 | struct qeth_discipline qeth_l3_discipline = { |
3660 | .probe = qeth_l3_probe_device, | 3654 | .start_poll = qeth_qdio_start_poll, |
3655 | .input_handler = (qdio_handler_t *) qeth_qdio_input_handler, | ||
3656 | .output_handler = (qdio_handler_t *) qeth_qdio_output_handler, | ||
3657 | .recover = qeth_l3_recover, | ||
3658 | .setup = qeth_l3_probe_device, | ||
3661 | .remove = qeth_l3_remove_device, | 3659 | .remove = qeth_l3_remove_device, |
3662 | .set_online = qeth_l3_set_online, | 3660 | .set_online = qeth_l3_set_online, |
3663 | .set_offline = qeth_l3_set_offline, | 3661 | .set_offline = qeth_l3_set_offline, |
@@ -3666,7 +3664,7 @@ struct ccwgroup_driver qeth_l3_ccwgroup_driver = { | |||
3666 | .thaw = qeth_l3_pm_resume, | 3664 | .thaw = qeth_l3_pm_resume, |
3667 | .restore = qeth_l3_pm_resume, | 3665 | .restore = qeth_l3_pm_resume, |
3668 | }; | 3666 | }; |
3669 | EXPORT_SYMBOL_GPL(qeth_l3_ccwgroup_driver); | 3667 | EXPORT_SYMBOL_GPL(qeth_l3_discipline); |
3670 | 3668 | ||
3671 | static int qeth_l3_ip_event(struct notifier_block *this, | 3669 | static int qeth_l3_ip_event(struct notifier_block *this, |
3672 | unsigned long event, void *ptr) | 3670 | unsigned long event, void *ptr) |