Loading arch/s390/include/asm/qdio.h +0 −2 Original line number Diff line number Diff line Loading @@ -368,14 +368,12 @@ struct qdio_initialize { #define QDIO_FLAG_SYNC_OUTPUT 0x02 #define QDIO_FLAG_PCI_OUT 0x10 extern int qdio_initialize(struct qdio_initialize *); extern int qdio_allocate(struct qdio_initialize *); extern int qdio_establish(struct qdio_initialize *); extern int qdio_activate(struct ccw_device *); extern int do_QDIO(struct ccw_device *cdev, unsigned int callflags, int q_nr, unsigned int bufnr, unsigned int count); extern int qdio_cleanup(struct ccw_device*, int); extern int qdio_shutdown(struct ccw_device*, int); extern int qdio_free(struct ccw_device *); extern int qdio_get_ssqd_desc(struct ccw_device *dev, struct qdio_ssqd_desc*); Loading drivers/s390/cio/qdio_main.c +0 −46 Original line number Diff line number Diff line Loading @@ -1023,30 +1023,6 @@ int qdio_get_ssqd_desc(struct ccw_device *cdev, } EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc); /** * qdio_cleanup - shutdown queues and free data structures * @cdev: associated ccw device * @how: use halt or clear to shutdown * * This function calls qdio_shutdown() for @cdev with method @how. * and qdio_free(). The qdio_free() return value is ignored since * !irq_ptr is already checked. */ int qdio_cleanup(struct ccw_device *cdev, int how) { struct qdio_irq *irq_ptr = cdev->private->qdio_data; int rc; if (!irq_ptr) return -ENODEV; rc = qdio_shutdown(cdev, how); qdio_free(cdev); return rc; } EXPORT_SYMBOL_GPL(qdio_cleanup); static void qdio_shutdown_queues(struct ccw_device *cdev) { struct qdio_irq *irq_ptr = cdev->private->qdio_data; Loading Loading @@ -1163,28 +1139,6 @@ int qdio_free(struct ccw_device *cdev) } EXPORT_SYMBOL_GPL(qdio_free); /** * qdio_initialize - allocate and establish queues for a qdio subchannel * @init_data: initialization data * * This function first allocates queues via qdio_allocate() and on success * establishes them via qdio_establish(). */ int qdio_initialize(struct qdio_initialize *init_data) { int rc; rc = qdio_allocate(init_data); if (rc) return rc; rc = qdio_establish(init_data); if (rc) qdio_free(init_data->cdev); return rc; } EXPORT_SYMBOL_GPL(qdio_initialize); /** * qdio_allocate - allocate qdio queues and associated data * @init_data: initialization data Loading drivers/s390/net/qeth_core_main.c +13 −4 Original line number Diff line number Diff line Loading @@ -1292,13 +1292,14 @@ int qeth_qdio_clear_card(struct qeth_card *card, int use_halt) QETH_QDIO_CLEANING)) { case QETH_QDIO_ESTABLISHED: if (card->info.type == QETH_CARD_TYPE_IQD) rc = qdio_cleanup(CARD_DDEV(card), rc = qdio_shutdown(CARD_DDEV(card), QDIO_FLAG_CLEANUP_USING_HALT); else rc = qdio_cleanup(CARD_DDEV(card), rc = qdio_shutdown(CARD_DDEV(card), QDIO_FLAG_CLEANUP_USING_CLEAR); if (rc) QETH_DBF_TEXT_(TRACE, 3, "1err%d", rc); qdio_free(CARD_DDEV(card)); atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); break; case QETH_QDIO_CLEANING: Loading Loading @@ -3810,10 +3811,18 @@ static int qeth_qdio_establish(struct qeth_card *card) if (atomic_cmpxchg(&card->qdio.state, QETH_QDIO_ALLOCATED, QETH_QDIO_ESTABLISHED) == QETH_QDIO_ALLOCATED) { rc = qdio_initialize(&init_data); if (rc) rc = qdio_allocate(&init_data); if (rc) { atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); goto out; } rc = qdio_establish(&init_data); if (rc) { atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); qdio_free(CARD_DDEV(card)); } } out: kfree(out_sbal_ptrs); kfree(in_sbal_ptrs); kfree(qib_param_field); Loading Loading
arch/s390/include/asm/qdio.h +0 −2 Original line number Diff line number Diff line Loading @@ -368,14 +368,12 @@ struct qdio_initialize { #define QDIO_FLAG_SYNC_OUTPUT 0x02 #define QDIO_FLAG_PCI_OUT 0x10 extern int qdio_initialize(struct qdio_initialize *); extern int qdio_allocate(struct qdio_initialize *); extern int qdio_establish(struct qdio_initialize *); extern int qdio_activate(struct ccw_device *); extern int do_QDIO(struct ccw_device *cdev, unsigned int callflags, int q_nr, unsigned int bufnr, unsigned int count); extern int qdio_cleanup(struct ccw_device*, int); extern int qdio_shutdown(struct ccw_device*, int); extern int qdio_free(struct ccw_device *); extern int qdio_get_ssqd_desc(struct ccw_device *dev, struct qdio_ssqd_desc*); Loading
drivers/s390/cio/qdio_main.c +0 −46 Original line number Diff line number Diff line Loading @@ -1023,30 +1023,6 @@ int qdio_get_ssqd_desc(struct ccw_device *cdev, } EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc); /** * qdio_cleanup - shutdown queues and free data structures * @cdev: associated ccw device * @how: use halt or clear to shutdown * * This function calls qdio_shutdown() for @cdev with method @how. * and qdio_free(). The qdio_free() return value is ignored since * !irq_ptr is already checked. */ int qdio_cleanup(struct ccw_device *cdev, int how) { struct qdio_irq *irq_ptr = cdev->private->qdio_data; int rc; if (!irq_ptr) return -ENODEV; rc = qdio_shutdown(cdev, how); qdio_free(cdev); return rc; } EXPORT_SYMBOL_GPL(qdio_cleanup); static void qdio_shutdown_queues(struct ccw_device *cdev) { struct qdio_irq *irq_ptr = cdev->private->qdio_data; Loading Loading @@ -1163,28 +1139,6 @@ int qdio_free(struct ccw_device *cdev) } EXPORT_SYMBOL_GPL(qdio_free); /** * qdio_initialize - allocate and establish queues for a qdio subchannel * @init_data: initialization data * * This function first allocates queues via qdio_allocate() and on success * establishes them via qdio_establish(). */ int qdio_initialize(struct qdio_initialize *init_data) { int rc; rc = qdio_allocate(init_data); if (rc) return rc; rc = qdio_establish(init_data); if (rc) qdio_free(init_data->cdev); return rc; } EXPORT_SYMBOL_GPL(qdio_initialize); /** * qdio_allocate - allocate qdio queues and associated data * @init_data: initialization data Loading
drivers/s390/net/qeth_core_main.c +13 −4 Original line number Diff line number Diff line Loading @@ -1292,13 +1292,14 @@ int qeth_qdio_clear_card(struct qeth_card *card, int use_halt) QETH_QDIO_CLEANING)) { case QETH_QDIO_ESTABLISHED: if (card->info.type == QETH_CARD_TYPE_IQD) rc = qdio_cleanup(CARD_DDEV(card), rc = qdio_shutdown(CARD_DDEV(card), QDIO_FLAG_CLEANUP_USING_HALT); else rc = qdio_cleanup(CARD_DDEV(card), rc = qdio_shutdown(CARD_DDEV(card), QDIO_FLAG_CLEANUP_USING_CLEAR); if (rc) QETH_DBF_TEXT_(TRACE, 3, "1err%d", rc); qdio_free(CARD_DDEV(card)); atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); break; case QETH_QDIO_CLEANING: Loading Loading @@ -3810,10 +3811,18 @@ static int qeth_qdio_establish(struct qeth_card *card) if (atomic_cmpxchg(&card->qdio.state, QETH_QDIO_ALLOCATED, QETH_QDIO_ESTABLISHED) == QETH_QDIO_ALLOCATED) { rc = qdio_initialize(&init_data); if (rc) rc = qdio_allocate(&init_data); if (rc) { atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); goto out; } rc = qdio_establish(&init_data); if (rc) { atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); qdio_free(CARD_DDEV(card)); } } out: kfree(out_sbal_ptrs); kfree(in_sbal_ptrs); kfree(qib_param_field); Loading