[S390] qdio: remove API wrappers
authorJan Glauber <jang@linux.vnet.ibm.com>
Mon, 17 May 2010 08:00:19 +0000 (10:00 +0200)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Mon, 17 May 2010 08:00:17 +0000 (10:00 +0200)
Remove qdio API wrappers used by qeth and replace them by calling the
appropriate functions directly.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/qdio.h
drivers/s390/cio/qdio_main.c
drivers/s390/net/qeth_core_main.c

index 9b04b1102bbcf4023469ac250e1f6afd46da8eb7..0eaae6260274fd7e78a363d336977e38b9ef2151 100644 (file)
@@ -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*);
index dafb3e5bdad72cbe6188481064e71c377bd70ab4..00520f9a7a8e0ae2240d10855835ef13531a8284 100644 (file)
@@ -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;
@@ -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
index 3ba738b2e27117eb4c932143fffedce377919df1..28f71349fdeca9355a01be3fa10b742d66ba714c 100644 (file)
@@ -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:
@@ -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);