Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[S390] qdio: remove API wrappers

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>

authored by

Jan Glauber and committed by
Martin Schwidefsky
cc961d40 d0c9d4a8

+13 -52
-2
arch/s390/include/asm/qdio.h
··· 368 368 #define QDIO_FLAG_SYNC_OUTPUT 0x02 369 369 #define QDIO_FLAG_PCI_OUT 0x10 370 370 371 - extern int qdio_initialize(struct qdio_initialize *); 372 371 extern int qdio_allocate(struct qdio_initialize *); 373 372 extern int qdio_establish(struct qdio_initialize *); 374 373 extern int qdio_activate(struct ccw_device *); 375 374 376 375 extern int do_QDIO(struct ccw_device *cdev, unsigned int callflags, 377 376 int q_nr, unsigned int bufnr, unsigned int count); 378 - extern int qdio_cleanup(struct ccw_device*, int); 379 377 extern int qdio_shutdown(struct ccw_device*, int); 380 378 extern int qdio_free(struct ccw_device *); 381 379 extern int qdio_get_ssqd_desc(struct ccw_device *dev, struct qdio_ssqd_desc*);
-46
drivers/s390/cio/qdio_main.c
··· 1023 1023 } 1024 1024 EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc); 1025 1025 1026 - /** 1027 - * qdio_cleanup - shutdown queues and free data structures 1028 - * @cdev: associated ccw device 1029 - * @how: use halt or clear to shutdown 1030 - * 1031 - * This function calls qdio_shutdown() for @cdev with method @how. 1032 - * and qdio_free(). The qdio_free() return value is ignored since 1033 - * !irq_ptr is already checked. 1034 - */ 1035 - int qdio_cleanup(struct ccw_device *cdev, int how) 1036 - { 1037 - struct qdio_irq *irq_ptr = cdev->private->qdio_data; 1038 - int rc; 1039 - 1040 - if (!irq_ptr) 1041 - return -ENODEV; 1042 - 1043 - rc = qdio_shutdown(cdev, how); 1044 - 1045 - qdio_free(cdev); 1046 - return rc; 1047 - } 1048 - EXPORT_SYMBOL_GPL(qdio_cleanup); 1049 - 1050 1026 static void qdio_shutdown_queues(struct ccw_device *cdev) 1051 1027 { 1052 1028 struct qdio_irq *irq_ptr = cdev->private->qdio_data; ··· 1138 1162 return 0; 1139 1163 } 1140 1164 EXPORT_SYMBOL_GPL(qdio_free); 1141 - 1142 - /** 1143 - * qdio_initialize - allocate and establish queues for a qdio subchannel 1144 - * @init_data: initialization data 1145 - * 1146 - * This function first allocates queues via qdio_allocate() and on success 1147 - * establishes them via qdio_establish(). 1148 - */ 1149 - int qdio_initialize(struct qdio_initialize *init_data) 1150 - { 1151 - int rc; 1152 - 1153 - rc = qdio_allocate(init_data); 1154 - if (rc) 1155 - return rc; 1156 - 1157 - rc = qdio_establish(init_data); 1158 - if (rc) 1159 - qdio_free(init_data->cdev); 1160 - return rc; 1161 - } 1162 - EXPORT_SYMBOL_GPL(qdio_initialize); 1163 1165 1164 1166 /** 1165 1167 * qdio_allocate - allocate qdio queues and associated data
+13 -4
drivers/s390/net/qeth_core_main.c
··· 1292 1292 QETH_QDIO_CLEANING)) { 1293 1293 case QETH_QDIO_ESTABLISHED: 1294 1294 if (card->info.type == QETH_CARD_TYPE_IQD) 1295 - rc = qdio_cleanup(CARD_DDEV(card), 1295 + rc = qdio_shutdown(CARD_DDEV(card), 1296 1296 QDIO_FLAG_CLEANUP_USING_HALT); 1297 1297 else 1298 - rc = qdio_cleanup(CARD_DDEV(card), 1298 + rc = qdio_shutdown(CARD_DDEV(card), 1299 1299 QDIO_FLAG_CLEANUP_USING_CLEAR); 1300 1300 if (rc) 1301 1301 QETH_DBF_TEXT_(TRACE, 3, "1err%d", rc); 1302 + qdio_free(CARD_DDEV(card)); 1302 1303 atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); 1303 1304 break; 1304 1305 case QETH_QDIO_CLEANING: ··· 3811 3810 3812 3811 if (atomic_cmpxchg(&card->qdio.state, QETH_QDIO_ALLOCATED, 3813 3812 QETH_QDIO_ESTABLISHED) == QETH_QDIO_ALLOCATED) { 3814 - rc = qdio_initialize(&init_data); 3815 - if (rc) 3813 + rc = qdio_allocate(&init_data); 3814 + if (rc) { 3816 3815 atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); 3816 + goto out; 3817 + } 3818 + rc = qdio_establish(&init_data); 3819 + if (rc) { 3820 + atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); 3821 + qdio_free(CARD_DDEV(card)); 3822 + } 3817 3823 } 3824 + out: 3818 3825 kfree(out_sbal_ptrs); 3819 3826 kfree(in_sbal_ptrs); 3820 3827 kfree(qib_param_field);