/linux-4.4.14/drivers/s390/scsi/ |
H A D | zfcp_qdio.c | 21 static void zfcp_qdio_handler_error(struct zfcp_qdio *qdio, char *id, zfcp_qdio_handler_error() argument 24 struct zfcp_adapter *adapter = qdio->adapter; zfcp_qdio_handler_error() 49 static inline void zfcp_qdio_account(struct zfcp_qdio *qdio) zfcp_qdio_account() argument 55 span = (now - qdio->req_q_time) >> 12; zfcp_qdio_account() 56 used = QDIO_MAX_BUFFERS_PER_Q - atomic_read(&qdio->req_q_free); zfcp_qdio_account() 57 qdio->req_q_util += used * span; zfcp_qdio_account() 58 qdio->req_q_time = now; zfcp_qdio_account() 65 struct zfcp_qdio *qdio = (struct zfcp_qdio *) parm; zfcp_qdio_int_req() local 68 zfcp_qdio_handler_error(qdio, "qdireq1", qdio_err); zfcp_qdio_int_req() 73 zfcp_qdio_zero_sbals(qdio->req_q, idx, count); zfcp_qdio_int_req() 75 spin_lock_irq(&qdio->stat_lock); zfcp_qdio_int_req() 76 zfcp_qdio_account(qdio); zfcp_qdio_int_req() 77 spin_unlock_irq(&qdio->stat_lock); zfcp_qdio_int_req() 78 atomic_add(count, &qdio->req_q_free); zfcp_qdio_int_req() 79 wake_up(&qdio->req_q_wq); zfcp_qdio_int_req() 86 struct zfcp_qdio *qdio = (struct zfcp_qdio *) parm; zfcp_qdio_int_resp() local 87 struct zfcp_adapter *adapter = qdio->adapter; zfcp_qdio_int_resp() 99 sbale = qdio->res_q[idx]->element; zfcp_qdio_int_resp() 108 pl[sbal_no] = qdio->res_q[sbal_idx]; zfcp_qdio_int_resp() 112 zfcp_qdio_handler_error(qdio, "qdires1", qdio_err); zfcp_qdio_int_resp() 123 zfcp_fsf_reqid_check(qdio, sbal_idx); zfcp_qdio_int_resp() 130 zfcp_erp_adapter_reopen(qdio->adapter, 0, "qdires2"); zfcp_qdio_int_resp() 134 zfcp_qdio_sbal_chain(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req) zfcp_qdio_sbal_chain() argument 139 sbale = zfcp_qdio_sbale_curr(qdio, q_req); zfcp_qdio_sbal_chain() 147 sbale = zfcp_qdio_sbale_req(qdio, q_req); zfcp_qdio_sbal_chain() 162 sbale = zfcp_qdio_sbale_curr(qdio, q_req); zfcp_qdio_sbal_chain() 169 zfcp_qdio_sbale_next(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req) zfcp_qdio_sbale_next() argument 171 if (q_req->sbale_curr == qdio->max_sbale_per_sbal - 1) zfcp_qdio_sbale_next() 172 return zfcp_qdio_sbal_chain(qdio, q_req); zfcp_qdio_sbale_next() 174 return zfcp_qdio_sbale_curr(qdio, q_req); zfcp_qdio_sbale_next() 179 * @qdio: pointer to struct zfcp_qdio 185 int zfcp_qdio_sbals_from_sg(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req, zfcp_qdio_sbals_from_sg() argument 191 sbale = zfcp_qdio_sbale_req(qdio, q_req); zfcp_qdio_sbals_from_sg() 195 sbale = zfcp_qdio_sbale_next(qdio, q_req); zfcp_qdio_sbals_from_sg() 197 atomic_inc(&qdio->req_q_full); zfcp_qdio_sbals_from_sg() 198 zfcp_qdio_zero_sbals(qdio->req_q, q_req->sbal_first, zfcp_qdio_sbals_from_sg() 208 static int zfcp_qdio_sbal_check(struct zfcp_qdio *qdio) zfcp_qdio_sbal_check() argument 210 if (atomic_read(&qdio->req_q_free) || zfcp_qdio_sbal_check() 211 !(atomic_read(&qdio->adapter->status) & ZFCP_STATUS_ADAPTER_QDIOUP)) zfcp_qdio_sbal_check() 218 * @qdio: pointer to struct zfcp_qdio 226 int zfcp_qdio_sbal_get(struct zfcp_qdio *qdio) zfcp_qdio_sbal_get() argument 230 ret = wait_event_interruptible_lock_irq_timeout(qdio->req_q_wq, zfcp_qdio_sbal_get() 231 zfcp_qdio_sbal_check(qdio), qdio->req_q_lock, 5 * HZ); zfcp_qdio_sbal_get() 233 if (!(atomic_read(&qdio->adapter->status) & ZFCP_STATUS_ADAPTER_QDIOUP)) zfcp_qdio_sbal_get() 240 atomic_inc(&qdio->req_q_full); zfcp_qdio_sbal_get() 242 zfcp_erp_adapter_reopen(qdio->adapter, 0, "qdsbg_1"); zfcp_qdio_sbal_get() 250 * @qdio: pointer to struct zfcp_qdio 254 int zfcp_qdio_send(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req) zfcp_qdio_send() argument 259 spin_lock(&qdio->stat_lock); zfcp_qdio_send() 260 zfcp_qdio_account(qdio); zfcp_qdio_send() 261 spin_unlock(&qdio->stat_lock); zfcp_qdio_send() 263 retval = do_QDIO(qdio->adapter->ccw_device, QDIO_FLAG_SYNC_OUTPUT, 0, zfcp_qdio_send() 267 zfcp_qdio_zero_sbals(qdio->req_q, q_req->sbal_first, zfcp_qdio_send() 273 atomic_sub(sbal_number, &qdio->req_q_free); zfcp_qdio_send() 274 qdio->req_q_idx += sbal_number; zfcp_qdio_send() 275 qdio->req_q_idx %= QDIO_MAX_BUFFERS_PER_Q; zfcp_qdio_send() 282 struct zfcp_qdio *qdio) zfcp_qdio_setup_init_data() 285 id->cdev = qdio->adapter->ccw_device; zfcp_qdio_setup_init_data() 296 id->int_parm = (unsigned long) qdio; zfcp_qdio_setup_init_data() 297 id->input_sbal_addr_array = (void **) (qdio->res_q); zfcp_qdio_setup_init_data() 298 id->output_sbal_addr_array = (void **) (qdio->req_q); zfcp_qdio_setup_init_data() 309 static int zfcp_qdio_allocate(struct zfcp_qdio *qdio) zfcp_qdio_allocate() argument 314 ret = qdio_alloc_buffers(qdio->req_q, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_allocate() 318 ret = qdio_alloc_buffers(qdio->res_q, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_allocate() 322 zfcp_qdio_setup_init_data(&init_data, qdio); zfcp_qdio_allocate() 323 init_waitqueue_head(&qdio->req_q_wq); zfcp_qdio_allocate() 332 qdio_free_buffers(qdio->res_q, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_allocate() 334 qdio_free_buffers(qdio->req_q, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_allocate() 339 * zfcp_close_qdio - close qdio queues for an adapter 340 * @qdio: pointer to structure zfcp_qdio 342 void zfcp_qdio_close(struct zfcp_qdio *qdio) zfcp_qdio_close() argument 344 struct zfcp_adapter *adapter = qdio->adapter; zfcp_qdio_close() 351 spin_lock_irq(&qdio->req_q_lock); zfcp_qdio_close() 353 spin_unlock_irq(&qdio->req_q_lock); zfcp_qdio_close() 355 wake_up(&qdio->req_q_wq); zfcp_qdio_close() 360 count = atomic_read(&qdio->req_q_free); zfcp_qdio_close() 362 idx = (qdio->req_q_idx + count) % QDIO_MAX_BUFFERS_PER_Q; zfcp_qdio_close() 364 zfcp_qdio_zero_sbals(qdio->req_q, idx, count); zfcp_qdio_close() 366 qdio->req_q_idx = 0; zfcp_qdio_close() 367 atomic_set(&qdio->req_q_free, 0); zfcp_qdio_close() 372 * @qdio: pointer to struct zfcp_qdio 375 int zfcp_qdio_open(struct zfcp_qdio *qdio) zfcp_qdio_open() argument 379 struct zfcp_adapter *adapter = qdio->adapter; zfcp_qdio_open() 388 &qdio->adapter->status); zfcp_qdio_open() 390 zfcp_qdio_setup_init_data(&init_data, qdio); zfcp_qdio_open() 400 &qdio->adapter->status); zfcp_qdio_open() 404 qdio->max_sbale_per_sbal = QDIO_MAX_ELEMENTS_PER_BUFFER; zfcp_qdio_open() 407 qdio->max_sbale_per_sbal = QDIO_MAX_ELEMENTS_PER_BUFFER - 1; zfcp_qdio_open() 410 qdio->max_sbale_per_req = zfcp_qdio_open() 411 ZFCP_QDIO_MAX_SBALS_PER_REQ * qdio->max_sbale_per_sbal zfcp_qdio_open() 417 sbale = &(qdio->res_q[cc]->element[0]); zfcp_qdio_open() 428 qdio->req_q_idx = 0; zfcp_qdio_open() 429 atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_open() 430 atomic_or(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status); zfcp_qdio_open() 433 adapter->scsi_host->sg_tablesize = qdio->max_sbale_per_req; zfcp_qdio_open() 434 adapter->scsi_host->max_sectors = qdio->max_sbale_per_req * 8; zfcp_qdio_open() 447 void zfcp_qdio_destroy(struct zfcp_qdio *qdio) zfcp_qdio_destroy() argument 449 if (!qdio) zfcp_qdio_destroy() 452 if (qdio->adapter->ccw_device) zfcp_qdio_destroy() 453 qdio_free(qdio->adapter->ccw_device); zfcp_qdio_destroy() 455 qdio_free_buffers(qdio->req_q, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_destroy() 456 qdio_free_buffers(qdio->res_q, QDIO_MAX_BUFFERS_PER_Q); zfcp_qdio_destroy() 457 kfree(qdio); zfcp_qdio_destroy() 462 struct zfcp_qdio *qdio; zfcp_qdio_setup() local 464 qdio = kzalloc(sizeof(struct zfcp_qdio), GFP_KERNEL); zfcp_qdio_setup() 465 if (!qdio) zfcp_qdio_setup() 468 qdio->adapter = adapter; zfcp_qdio_setup() 470 if (zfcp_qdio_allocate(qdio)) { zfcp_qdio_setup() 471 kfree(qdio); zfcp_qdio_setup() 475 spin_lock_init(&qdio->req_q_lock); zfcp_qdio_setup() 476 spin_lock_init(&qdio->stat_lock); zfcp_qdio_setup() 478 adapter->qdio = qdio; zfcp_qdio_setup() 488 * triggered once before going through qdio shutdown. 490 * The triggers are always run from qdio tasklet context, so no 281 zfcp_qdio_setup_init_data(struct qdio_initialize *id, struct zfcp_qdio *qdio) zfcp_qdio_setup_init_data() argument
|
H A D | zfcp_qdio.h | 4 * Header file for zfcp qdio interface 12 #include <asm/qdio.h> 20 * struct zfcp_qdio - basic qdio data structure 31 * @adapter: adapter used in conjunction with this qdio structure 50 * struct zfcp_qdio_req - qdio queue related values for a request 73 * @qdio: pointer to struct zfcp_qdio 78 zfcp_qdio_sbale_req(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req) zfcp_qdio_sbale_req() argument 80 return &qdio->req_q[q_req->sbal_last]->element[0]; zfcp_qdio_sbale_req() 85 * @qdio: pointer to struct zfcp_qdio 90 zfcp_qdio_sbale_curr(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req) zfcp_qdio_sbale_curr() argument 92 return &qdio->req_q[q_req->sbal_last]->element[q_req->sbale_curr]; zfcp_qdio_sbale_curr() 96 * zfcp_qdio_req_init - initialize qdio request 97 * @qdio: request queue where to start putting the request 98 * @q_req: the qdio request to start 109 void zfcp_qdio_req_init(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req, zfcp_qdio_req_init() argument 113 int count = min(atomic_read(&qdio->req_q_free), zfcp_qdio_req_init() 116 q_req->sbal_first = q_req->sbal_last = qdio->req_q_idx; zfcp_qdio_req_init() 123 sbale = zfcp_qdio_sbale_req(qdio, q_req); zfcp_qdio_req_init() 137 * @qdio: pointer to struct zfcp_qdio 144 void zfcp_qdio_fill_next(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req, zfcp_qdio_fill_next() argument 149 BUG_ON(q_req->sbale_curr == qdio->max_sbale_per_sbal - 1); zfcp_qdio_fill_next() 151 sbale = zfcp_qdio_sbale_curr(qdio, q_req); zfcp_qdio_fill_next() 158 * @qdio: pointer to struct zfcp_qdio 162 void zfcp_qdio_set_sbale_last(struct zfcp_qdio *qdio, zfcp_qdio_set_sbale_last() argument 167 sbale = zfcp_qdio_sbale_curr(qdio, q_req); zfcp_qdio_set_sbale_last() 189 void zfcp_qdio_skip_to_last_sbale(struct zfcp_qdio *qdio, zfcp_qdio_skip_to_last_sbale() argument 192 q_req->sbale_curr = qdio->max_sbale_per_sbal - 1; zfcp_qdio_skip_to_last_sbale() 197 * @qdio: pointer to struct zfcp_qdio 202 void zfcp_qdio_sbal_limit(struct zfcp_qdio *qdio, zfcp_qdio_sbal_limit() argument 205 int count = min(atomic_read(&qdio->req_q_free), max_sbals); zfcp_qdio_sbal_limit() 213 * @qdio: pointer to struct zfcp_qdio 218 void zfcp_qdio_set_data_div(struct zfcp_qdio *qdio, zfcp_qdio_set_data_div() argument 223 sbale = qdio->req_q[q_req->sbal_first]->element; zfcp_qdio_set_data_div() 259 * @qdio: pointer to struct zfcp_qdio 263 void zfcp_qdio_set_scount(struct zfcp_qdio *qdio, struct zfcp_qdio_req *q_req) zfcp_qdio_set_scount() argument 267 sbale = qdio->req_q[q_req->sbal_first]->element; zfcp_qdio_set_scount()
|
H A D | zfcp_fsf.c | 680 static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_qdio *qdio, zfcp_fsf_req_create() argument 684 struct zfcp_adapter *adapter = qdio->adapter; zfcp_fsf_req_create() 722 zfcp_qdio_req_init(adapter->qdio, &req->qdio_req, req->req_id, sbtype, zfcp_fsf_req_create() 731 struct zfcp_qdio *qdio = adapter->qdio; zfcp_fsf_req_send() local 737 req->qdio_req.qdio_outb_usage = atomic_read(&qdio->req_q_free); zfcp_fsf_req_send() 739 if (zfcp_qdio_send(qdio, &req->qdio_req)) { zfcp_fsf_req_send() 761 int zfcp_fsf_status_read(struct zfcp_qdio *qdio) zfcp_fsf_status_read() argument 763 struct zfcp_adapter *adapter = qdio->adapter; zfcp_fsf_status_read() 769 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_status_read() 770 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_status_read() 773 req = zfcp_fsf_req_create(qdio, FSF_QTCB_UNSOLICITED_STATUS, zfcp_fsf_status_read() 790 zfcp_qdio_fill_next(qdio, &req->qdio_req, sr_buf, sizeof(*sr_buf)); zfcp_fsf_status_read() 791 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_status_read() 806 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_status_read() 878 struct zfcp_qdio *qdio = zfcp_sdev->port->adapter->qdio; zfcp_fsf_abort_fcp_cmnd() local 881 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_abort_fcp_cmnd() 882 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_abort_fcp_cmnd() 884 req = zfcp_fsf_req_create(qdio, FSF_QTCB_ABORT_FCP_CMND, zfcp_fsf_abort_fcp_cmnd() 886 qdio->adapter->pool.scsi_abort); zfcp_fsf_abort_fcp_cmnd() 896 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_abort_fcp_cmnd() 912 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_abort_fcp_cmnd() 963 static void zfcp_fsf_setup_ct_els_unchained(struct zfcp_qdio *qdio, zfcp_fsf_setup_ct_els_unchained() argument 968 zfcp_qdio_fill_next(qdio, q_req, sg_virt(sg_req), sg_req->length); zfcp_fsf_setup_ct_els_unchained() 969 zfcp_qdio_fill_next(qdio, q_req, sg_virt(sg_resp), sg_resp->length); zfcp_fsf_setup_ct_els_unchained() 970 zfcp_qdio_set_sbale_last(qdio, q_req); zfcp_fsf_setup_ct_els_unchained() 978 struct zfcp_qdio *qdio = adapter->qdio; zfcp_fsf_setup_ct_els_sbals() local 983 if (zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, sg_req)) zfcp_fsf_setup_ct_els_sbals() 985 if (zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, sg_resp)) zfcp_fsf_setup_ct_els_sbals() 988 zfcp_qdio_set_data_div(qdio, &req->qdio_req, zfcp_fsf_setup_ct_els_sbals() 990 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_setup_ct_els_sbals() 991 zfcp_qdio_set_scount(qdio, &req->qdio_req); zfcp_fsf_setup_ct_els_sbals() 997 zfcp_fsf_setup_ct_els_unchained(qdio, &req->qdio_req, zfcp_fsf_setup_ct_els_sbals() 1005 if (zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, sg_req)) zfcp_fsf_setup_ct_els_sbals() 1010 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_setup_ct_els_sbals() 1011 zfcp_qdio_skip_to_last_sbale(qdio, &req->qdio_req); zfcp_fsf_setup_ct_els_sbals() 1013 if (zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, sg_resp)) zfcp_fsf_setup_ct_els_sbals() 1018 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_setup_ct_els_sbals() 1053 struct zfcp_qdio *qdio = wka_port->adapter->qdio; zfcp_fsf_send_ct() local 1057 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_send_ct() 1058 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_send_ct() 1061 req = zfcp_fsf_req_create(qdio, FSF_QTCB_SEND_GENERIC, zfcp_fsf_send_ct() 1089 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_send_ct() 1145 struct zfcp_qdio *qdio = adapter->qdio; zfcp_fsf_send_els() local 1148 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_send_els() 1149 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_send_els() 1152 req = zfcp_fsf_req_create(qdio, FSF_QTCB_SEND_ELS, zfcp_fsf_send_els() 1163 zfcp_qdio_sbal_limit(qdio, &req->qdio_req, 2); zfcp_fsf_send_els() 1185 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_send_els() 1192 struct zfcp_qdio *qdio = erp_action->adapter->qdio; zfcp_fsf_exchange_config_data() local 1195 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_config_data() 1196 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_exchange_config_data() 1199 req = zfcp_fsf_req_create(qdio, FSF_QTCB_EXCHANGE_CONFIG_DATA, zfcp_fsf_exchange_config_data() 1201 qdio->adapter->pool.erp_req); zfcp_fsf_exchange_config_data() 1209 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_exchange_config_data() 1225 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_config_data() 1229 int zfcp_fsf_exchange_config_data_sync(struct zfcp_qdio *qdio, zfcp_fsf_exchange_config_data_sync() argument 1235 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_config_data_sync() 1236 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_exchange_config_data_sync() 1239 req = zfcp_fsf_req_create(qdio, FSF_QTCB_EXCHANGE_CONFIG_DATA, zfcp_fsf_exchange_config_data_sync() 1247 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_exchange_config_data_sync() 1259 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_config_data_sync() 1267 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_config_data_sync() 1278 struct zfcp_qdio *qdio = erp_action->adapter->qdio; zfcp_fsf_exchange_port_data() local 1282 if (!(qdio->adapter->adapter_features & FSF_FEATURE_HBAAPI_MANAGEMENT)) zfcp_fsf_exchange_port_data() 1285 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_port_data() 1286 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_exchange_port_data() 1289 req = zfcp_fsf_req_create(qdio, FSF_QTCB_EXCHANGE_PORT_DATA, zfcp_fsf_exchange_port_data() 1291 qdio->adapter->pool.erp_req); zfcp_fsf_exchange_port_data() 1299 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_exchange_port_data() 1312 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_port_data() 1318 * @qdio: pointer to struct zfcp_qdio 1322 int zfcp_fsf_exchange_port_data_sync(struct zfcp_qdio *qdio, zfcp_fsf_exchange_port_data_sync() argument 1328 if (!(qdio->adapter->adapter_features & FSF_FEATURE_HBAAPI_MANAGEMENT)) zfcp_fsf_exchange_port_data_sync() 1331 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_port_data_sync() 1332 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_exchange_port_data_sync() 1335 req = zfcp_fsf_req_create(qdio, FSF_QTCB_EXCHANGE_PORT_DATA, zfcp_fsf_exchange_port_data_sync() 1346 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_exchange_port_data_sync() 1351 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_port_data_sync() 1361 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_exchange_port_data_sync() 1437 struct zfcp_qdio *qdio = erp_action->adapter->qdio; zfcp_fsf_open_port() local 1442 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_open_port() 1443 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_open_port() 1446 req = zfcp_fsf_req_create(qdio, FSF_QTCB_OPEN_PORT_WITH_DID, zfcp_fsf_open_port() 1448 qdio->adapter->pool.erp_req); zfcp_fsf_open_port() 1456 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_open_port() 1473 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_open_port() 1504 struct zfcp_qdio *qdio = erp_action->adapter->qdio; zfcp_fsf_close_port() local 1508 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_close_port() 1509 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_close_port() 1512 req = zfcp_fsf_req_create(qdio, FSF_QTCB_CLOSE_PORT, zfcp_fsf_close_port() 1514 qdio->adapter->pool.erp_req); zfcp_fsf_close_port() 1522 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_close_port() 1537 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_close_port() 1577 struct zfcp_qdio *qdio = wka_port->adapter->qdio; zfcp_fsf_open_wka_port() local 1581 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_open_wka_port() 1582 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_open_wka_port() 1585 req = zfcp_fsf_req_create(qdio, FSF_QTCB_OPEN_PORT_WITH_DID, zfcp_fsf_open_wka_port() 1587 qdio->adapter->pool.erp_req); zfcp_fsf_open_wka_port() 1595 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_open_wka_port() 1606 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_open_wka_port() 1630 struct zfcp_qdio *qdio = wka_port->adapter->qdio; zfcp_fsf_close_wka_port() local 1634 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_close_wka_port() 1635 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_close_wka_port() 1638 req = zfcp_fsf_req_create(qdio, FSF_QTCB_CLOSE_PORT, zfcp_fsf_close_wka_port() 1640 qdio->adapter->pool.erp_req); zfcp_fsf_close_wka_port() 1648 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_close_wka_port() 1659 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_close_wka_port() 1719 struct zfcp_qdio *qdio = erp_action->adapter->qdio; zfcp_fsf_close_physical_port() local 1723 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_close_physical_port() 1724 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_close_physical_port() 1727 req = zfcp_fsf_req_create(qdio, FSF_QTCB_CLOSE_PHYSICAL_PORT, zfcp_fsf_close_physical_port() 1729 qdio->adapter->pool.erp_req); zfcp_fsf_close_physical_port() 1737 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_close_physical_port() 1752 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_close_physical_port() 1838 struct zfcp_qdio *qdio = adapter->qdio; zfcp_fsf_open_lun() local 1842 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_open_lun() 1843 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_open_lun() 1846 req = zfcp_fsf_req_create(qdio, FSF_QTCB_OPEN_LUN, zfcp_fsf_open_lun() 1856 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_open_lun() 1875 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_open_lun() 1928 struct zfcp_qdio *qdio = erp_action->adapter->qdio; zfcp_fsf_close_lun() local 1933 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_close_lun() 1934 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_close_lun() 1937 req = zfcp_fsf_req_create(qdio, FSF_QTCB_CLOSE_LUN, zfcp_fsf_close_lun() 1939 qdio->adapter->pool.erp_req); zfcp_fsf_close_lun() 1947 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_close_lun() 1963 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_close_lun() 2202 struct zfcp_qdio *qdio = adapter->qdio; zfcp_fsf_fcp_cmnd() local 2210 spin_lock_irqsave(&qdio->req_q_lock, flags); zfcp_fsf_fcp_cmnd() 2211 if (atomic_read(&qdio->req_q_free) <= 0) { zfcp_fsf_fcp_cmnd() 2212 atomic_inc(&qdio->req_q_full); zfcp_fsf_fcp_cmnd() 2219 req = zfcp_fsf_req_create(qdio, FSF_QTCB_FCP_CMND, zfcp_fsf_fcp_cmnd() 2250 zfcp_qdio_set_data_div(qdio, &req->qdio_req, zfcp_fsf_fcp_cmnd() 2252 retval = zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, zfcp_fsf_fcp_cmnd() 2260 retval = zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, zfcp_fsf_fcp_cmnd() 2265 zfcp_qdio_set_sbale_last(adapter->qdio, &req->qdio_req); zfcp_fsf_fcp_cmnd() 2267 zfcp_qdio_set_scount(qdio, &req->qdio_req); zfcp_fsf_fcp_cmnd() 2279 spin_unlock_irqrestore(&qdio->req_q_lock, flags); zfcp_fsf_fcp_cmnd() 2310 struct zfcp_qdio *qdio = zfcp_sdev->port->adapter->qdio; zfcp_fsf_fcp_task_mgmt() local 2316 spin_lock_irq(&qdio->req_q_lock); zfcp_fsf_fcp_task_mgmt() 2317 if (zfcp_qdio_sbal_get(qdio)) zfcp_fsf_fcp_task_mgmt() 2320 req = zfcp_fsf_req_create(qdio, FSF_QTCB_FCP_CMND, zfcp_fsf_fcp_task_mgmt() 2322 qdio->adapter->pool.scsi_req); zfcp_fsf_fcp_task_mgmt() 2337 zfcp_qdio_set_sbale_last(qdio, &req->qdio_req); zfcp_fsf_fcp_task_mgmt() 2349 spin_unlock_irq(&qdio->req_q_lock); zfcp_fsf_fcp_task_mgmt() 2358 void zfcp_fsf_reqid_check(struct zfcp_qdio *qdio, int sbal_idx) zfcp_fsf_reqid_check() argument 2360 struct zfcp_adapter *adapter = qdio->adapter; zfcp_fsf_reqid_check() 2361 struct qdio_buffer *sbal = qdio->res_q[sbal_idx]; zfcp_fsf_reqid_check()
|
H A D | zfcp_sysfs.c | 538 retval = zfcp_fsf_exchange_port_data_sync(adapter->qdio, qtcb_port); zfcp_sysfs_adapter_util_show() 564 retval = zfcp_fsf_exchange_config_data_sync(adapter->qdio, qtcb_config); zfcp_sysfs_adapter_ex_config() 605 struct zfcp_qdio *qdio = zfcp_sysfs_adapter_q_full_show() local 606 ((struct zfcp_adapter *) scsi_host->hostdata[0])->qdio; zfcp_sysfs_adapter_q_full_show() 609 spin_lock_bh(&qdio->stat_lock); zfcp_sysfs_adapter_q_full_show() 610 util = qdio->req_q_util; zfcp_sysfs_adapter_q_full_show() 611 spin_unlock_bh(&qdio->stat_lock); zfcp_sysfs_adapter_q_full_show() 613 return sprintf(buf, "%d %llu\n", atomic_read(&qdio->req_q_full), zfcp_sysfs_adapter_q_full_show()
|
H A D | zfcp_scsi.c | 459 ret = zfcp_fsf_exchange_port_data_sync(adapter->qdio, data); zfcp_get_fc_host_stats() 488 ret = zfcp_fsf_exchange_port_data_sync(adapter->qdio, data); zfcp_reset_fc_host_stats() 656 shost->sg_prot_tablesize = adapter->qdio->max_sbale_per_req / 2; zfcp_scsi_set_prot() 657 shost->sg_tablesize = adapter->qdio->max_sbale_per_req / 2; zfcp_scsi_set_prot()
|
H A D | zfcp_def.h | 150 struct zfcp_qdio *qdio; member in struct:zfcp_adapter 286 * @qdio_req: qdio queue related values
|
H A D | zfcp_aux.c | 279 if (zfcp_fsf_status_read(adapter->qdio)) { zfcp_status_read_refill() 436 zfcp_qdio_destroy(adapter->qdio); zfcp_adapter_unregister()
|
H A D | zfcp_erp.c | 760 zfcp_qdio_close(adapter->qdio); zfcp_erp_adapter_strategy_close() 775 if (zfcp_qdio_open(adapter->qdio)) { zfcp_erp_adapter_strategy_open()
|
/linux-4.4.14/drivers/s390/cio/ |
H A D | Makefile | 15 qdio-objs := qdio_main.o qdio_thinint.o qdio_debug.o qdio_setup.o 16 obj-$(CONFIG_QDIO) += qdio.o
|
H A D | qdio_debug.h | 10 #include <asm/qdio.h> 11 #include "qdio.h"
|
H A D | qdio_setup.c | 2 * qdio queue initialization 10 #include <asm/qdio.h> 17 #include "qdio.h" 38 * qdio_free_buffers() - free qdio buffers 39 * @buf: array of pointers to qdio buffers 40 * @count: number of qdio buffers to free 52 * qdio_alloc_buffers() - allocate qdio buffers 53 * @buf: array of pointers to qdio buffers 54 * @count: number of qdio buffers to allocate 75 * qdio_reset_buffers() - reset qdio buffers 76 * @buf: array of pointers to qdio buffers 77 * @count: number of qdio buffers that will be zeroed 492 /* get qdio commands */ qdio_setup_irq() 523 snprintf(s, 80, "qdio: %s %s on SC %x using " qdio_print_subchannel_info()
|
H A D | qdio_thinint.c | 12 #include <asm/qdio.h> 18 #include "qdio.h" 180 * tiqdio_thinint_handler - thin interrupt handler for qdio
|
H A D | qdio_main.c | 2 * Linux for s390 qdio support, buffer handling, qdio API and module support. 18 #include <asm/qdio.h> 24 #include "qdio.h" 1064 /* qdio interrupt handler */ qdio_int_handler() 1115 * qdio_get_ssqd_desc - get qdio subchannel description 1150 * qdio_shutdown - shut down a qdio subchannel 1225 * qdio_free - free data structures for a qdio subchannel 1249 * qdio_allocate - allocate qdio queues and associated data 1329 * qdio_establish - establish queues on a qdio subchannel 1405 * qdio_activate - activate queues on a qdio subchannel 1598 * @cdev: associated ccw_device for the qdio subchannel 1635 * @cdev: associated ccw_device for the qdio subchannel 1677 * @cdev: associated ccw_device for the qdio subchannel 1729 * @cdev: associated ccw_device for the qdio subchannel
|
H A D | qdio_debug.c | 13 #include "qdio.h" 351 debugfs_root = debugfs_create_dir("qdio", NULL); qdio_debug_init()
|
H A D | chsc.h | 10 #include <asm/qdio.h>
|
H A D | cio.h | 18 u32 qf : 1; /* qdio facility */
|
H A D | qdio.h | 76 /* flags for st qdio sch data */
|
/linux-4.4.14/drivers/s390/net/ |
H A D | qeth_core_sys.c | 83 if (card->qdio.in_buf_size == 16384) qeth_get_bufsize_str() 85 else if (card->qdio.in_buf_size == 24576) qeth_get_bufsize_str() 87 else if (card->qdio.in_buf_size == 32768) qeth_get_bufsize_str() 89 else if (card->qdio.in_buf_size == 40960) qeth_get_bufsize_str() 180 switch (card->qdio.do_prio_queueing) { qeth_dev_prioqing_show() 191 card->qdio.default_out_queue); qeth_dev_prioqing_show() 214 if (card->qdio.no_out_queues == 1) { qeth_dev_prioqing_store() 215 card->qdio.do_prio_queueing = QETH_PRIOQ_DEFAULT; qeth_dev_prioqing_store() 221 card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_PREC; qeth_dev_prioqing_store() 222 card->qdio.default_out_queue = QETH_DEFAULT_QUEUE; qeth_dev_prioqing_store() 224 card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_SKB; qeth_dev_prioqing_store() 225 card->qdio.default_out_queue = QETH_DEFAULT_QUEUE; qeth_dev_prioqing_store() 227 card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_TOS; qeth_dev_prioqing_store() 228 card->qdio.default_out_queue = QETH_DEFAULT_QUEUE; qeth_dev_prioqing_store() 234 card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_VLAN; qeth_dev_prioqing_store() 235 card->qdio.default_out_queue = QETH_DEFAULT_QUEUE; qeth_dev_prioqing_store() 237 card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING; qeth_dev_prioqing_store() 238 card->qdio.default_out_queue = 0; qeth_dev_prioqing_store() 240 card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING; qeth_dev_prioqing_store() 241 card->qdio.default_out_queue = 1; qeth_dev_prioqing_store() 243 card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING; qeth_dev_prioqing_store() 244 card->qdio.default_out_queue = 2; qeth_dev_prioqing_store() 246 card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING; qeth_dev_prioqing_store() 247 card->qdio.default_out_queue = 3; qeth_dev_prioqing_store() 249 card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING; qeth_dev_prioqing_store() 250 card->qdio.default_out_queue = QETH_DEFAULT_QUEUE; qeth_dev_prioqing_store() 269 return sprintf(buf, "%i\n", card->qdio.in_buf_pool.buf_count); qeth_dev_bufcnt_show() 290 old_cnt = card->qdio.in_buf_pool.buf_count; qeth_dev_bufcnt_store()
|
H A D | qeth_core_main.c | 248 &card->qdio.in_buf_pool.entry_list, list){ qeth_clear_working_pool_list() 261 for (i = 0; i < card->qdio.init_pool.buf_count; ++i) { qeth_alloc_buffer_pool() 280 &card->qdio.init_pool.entry_list); qeth_alloc_buffer_pool() 296 card->qdio.in_buf_pool.buf_count = bufcnt; qeth_realloc_buffer_pool() 297 card->qdio.init_pool.buf_count = bufcnt; qeth_realloc_buffer_pool() 337 qdio_reset_buffers(card->qdio.c_q->qdio_bufs, qeth_cq_init() 339 card->qdio.c_q->next_buf_to_init = 127; qeth_cq_init() 341 card->qdio.no_in_queues - 1, 0, qeth_cq_init() 362 card->qdio.c_q = qeth_alloc_qdio_queue(); qeth_alloc_cq() 363 if (!card->qdio.c_q) { qeth_alloc_cq() 367 card->qdio.no_in_queues = 2; qeth_alloc_cq() 368 card->qdio.out_bufstates = qeth_alloc_cq() 369 kzalloc(card->qdio.no_out_queues * qeth_alloc_cq() 372 outbuf_states = card->qdio.out_bufstates; qeth_alloc_cq() 377 for (i = 0; i < card->qdio.no_out_queues; ++i) { qeth_alloc_cq() 378 card->qdio.out_qs[i]->bufstates = outbuf_states; qeth_alloc_cq() 383 card->qdio.c_q = NULL; qeth_alloc_cq() 384 card->qdio.no_in_queues = 1; qeth_alloc_cq() 386 QETH_DBF_TEXT_(SETUP, 2, "iqc%d", card->qdio.no_in_queues); qeth_alloc_cq() 391 qeth_free_qdio_queue(card->qdio.c_q); qeth_alloc_cq() 392 card->qdio.c_q = NULL; qeth_alloc_cq() 400 if (card->qdio.c_q) { qeth_free_cq() 401 --card->qdio.no_in_queues; qeth_free_cq() 402 qeth_free_qdio_queue(card->qdio.c_q); qeth_free_cq() 403 card->qdio.c_q = NULL; qeth_free_cq() 405 kfree(card->qdio.out_bufstates); qeth_free_cq() 406 card->qdio.out_bufstates = NULL; qeth_free_cq() 515 card->qdio.c_q != NULL && qeth_is_cq() 517 queue == card->qdio.no_in_queues - 1; qeth_is_cq() 1299 for (i = 0; i < card->qdio.no_out_queues; ++i) { qeth_clear_qdio_buffers() 1300 if (card->qdio.out_qs[i]) { qeth_clear_qdio_buffers() 1301 qeth_clear_outq_buffers(card->qdio.out_qs[i], 0); qeth_clear_qdio_buffers() 1312 &card->qdio.init_pool.entry_list, init_list){ qeth_free_buffer_pool() 1331 if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) && qeth_set_single_write_queues() 1332 (card->qdio.no_out_queues == 4)) qeth_set_single_write_queues() 1335 card->qdio.no_out_queues = 1; qeth_set_single_write_queues() 1336 if (card->qdio.default_out_queue != 0) qeth_set_single_write_queues() 1339 card->qdio.default_out_queue = 0; qeth_set_single_write_queues() 1344 if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) && qeth_set_multiple_write_queues() 1345 (card->qdio.no_out_queues == 1)) { qeth_set_multiple_write_queues() 1347 card->qdio.default_out_queue = 2; qeth_set_multiple_write_queues() 1349 card->qdio.no_out_queues = 4; qeth_set_multiple_write_queues() 1375 QETH_DBF_TEXT_(SETUP, 2, "nr:%x", card->qdio.no_out_queues); qeth_update_from_chp_desc() 1382 atomic_set(&card->qdio.state, QETH_QDIO_UNINITIALIZED); qeth_init_qdio_info() 1384 card->qdio.in_buf_size = QETH_IN_BUF_SIZE_DEFAULT; qeth_init_qdio_info() 1386 card->qdio.init_pool.buf_count = QETH_IN_BUF_COUNT_HSDEFAULT; qeth_init_qdio_info() 1388 card->qdio.init_pool.buf_count = QETH_IN_BUF_COUNT_DEFAULT; qeth_init_qdio_info() 1389 card->qdio.in_buf_pool.buf_count = card->qdio.init_pool.buf_count; qeth_init_qdio_info() 1390 INIT_LIST_HEAD(&card->qdio.in_buf_pool.entry_list); qeth_init_qdio_info() 1391 INIT_LIST_HEAD(&card->qdio.init_pool.entry_list); qeth_init_qdio_info() 1533 card->qdio.do_prio_queueing = QETH_PRIOQ_DEFAULT; qeth_determine_card_type() 1534 card->qdio.default_out_queue = QETH_DEFAULT_QUEUE; qeth_determine_card_type() 1541 card->qdio.no_out_queues = qeth_determine_card_type() 1543 card->qdio.no_in_queues = 1; qeth_determine_card_type() 1652 switch (atomic_cmpxchg(&card->qdio.state, QETH_QDIO_ESTABLISHED, qeth_qdio_clear_card() 1663 atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); qeth_qdio_clear_card() 2307 card->qdio.in_buf_size = mtu + 2 * PAGE_SIZE; qeth_ulp_enable_cb() 2313 card->qdio.in_buf_size = QETH_IN_BUF_SIZE_DEFAULT; qeth_ulp_enable_cb() 2470 if (atomic_cmpxchg(&card->qdio.state, QETH_QDIO_UNINITIALIZED, qeth_alloc_qdio_buffers() 2475 card->qdio.in_q = qeth_alloc_qdio_queue(); qeth_alloc_qdio_buffers() 2476 if (!card->qdio.in_q) qeth_alloc_qdio_buffers() 2484 card->qdio.out_qs = qeth_alloc_qdio_buffers() 2485 kzalloc(card->qdio.no_out_queues * qeth_alloc_qdio_buffers() 2487 if (!card->qdio.out_qs) qeth_alloc_qdio_buffers() 2489 for (i = 0; i < card->qdio.no_out_queues; ++i) { qeth_alloc_qdio_buffers() 2490 card->qdio.out_qs[i] = qeth_alloc_qdio_out_buf(); qeth_alloc_qdio_buffers() 2491 if (!card->qdio.out_qs[i]) qeth_alloc_qdio_buffers() 2494 QETH_DBF_HEX(SETUP, 2, &card->qdio.out_qs[i], sizeof(void *)); qeth_alloc_qdio_buffers() 2495 card->qdio.out_qs[i]->queue_no = i; qeth_alloc_qdio_buffers() 2498 WARN_ON(card->qdio.out_qs[i]->bufs[j] != NULL); qeth_alloc_qdio_buffers() 2499 if (qeth_init_qdio_out_buf(card->qdio.out_qs[i], j)) qeth_alloc_qdio_buffers() 2514 card->qdio.out_qs[i]->bufs[j]); qeth_alloc_qdio_buffers() 2515 card->qdio.out_qs[i]->bufs[j] = NULL; qeth_alloc_qdio_buffers() 2519 qeth_free_qdio_out_buf(card->qdio.out_qs[--i]); qeth_alloc_qdio_buffers() 2520 qeth_clear_outq_buffers(card->qdio.out_qs[i], 1); qeth_alloc_qdio_buffers() 2522 kfree(card->qdio.out_qs); qeth_alloc_qdio_buffers() 2523 card->qdio.out_qs = NULL; qeth_alloc_qdio_buffers() 2527 qeth_free_qdio_queue(card->qdio.in_q); qeth_alloc_qdio_buffers() 2528 card->qdio.in_q = NULL; qeth_alloc_qdio_buffers() 2530 atomic_set(&card->qdio.state, QETH_QDIO_UNINITIALIZED); qeth_alloc_qdio_buffers() 2538 if (atomic_xchg(&card->qdio.state, QETH_QDIO_UNINITIALIZED) == qeth_free_qdio_buffers() 2545 if (card->qdio.in_q->bufs[j].rx_skb) qeth_free_qdio_buffers() 2546 dev_kfree_skb_any(card->qdio.in_q->bufs[j].rx_skb); qeth_free_qdio_buffers() 2548 qeth_free_qdio_queue(card->qdio.in_q); qeth_free_qdio_buffers() 2549 card->qdio.in_q = NULL; qeth_free_qdio_buffers() 2553 if (card->qdio.out_qs) { qeth_free_qdio_buffers() 2554 for (i = 0; i < card->qdio.no_out_queues; ++i) { qeth_free_qdio_buffers() 2555 qeth_clear_outq_buffers(card->qdio.out_qs[i], 1); qeth_free_qdio_buffers() 2556 qeth_free_qdio_out_buf(card->qdio.out_qs[i]); qeth_free_qdio_buffers() 2558 kfree(card->qdio.out_qs); qeth_free_qdio_buffers() 2559 card->qdio.out_qs = NULL; qeth_free_qdio_buffers() 2726 &card->qdio.init_pool.entry_list, init_list) { qeth_initialize_working_pool_list() 2739 if (list_empty(&card->qdio.in_buf_pool.entry_list)) qeth_find_free_buffer_pool_entry() 2742 list_for_each(plh, &card->qdio.in_buf_pool.entry_list) { qeth_find_free_buffer_pool_entry() 2758 entry = list_entry(card->qdio.in_buf_pool.entry_list.next, qeth_find_free_buffer_pool_entry() 2821 qdio_reset_buffers(card->qdio.in_q->qdio_bufs, qeth_init_qdio_queues() 2825 for (i = 0; i < card->qdio.in_buf_pool.buf_count - 1; ++i) qeth_init_qdio_queues() 2826 qeth_init_input_buffer(card, &card->qdio.in_q->bufs[i]); qeth_init_qdio_queues() 2827 card->qdio.in_q->next_buf_to_init = qeth_init_qdio_queues() 2828 card->qdio.in_buf_pool.buf_count - 1; qeth_init_qdio_queues() 2830 card->qdio.in_buf_pool.buf_count - 1); qeth_init_qdio_queues() 2843 for (i = 0; i < card->qdio.no_out_queues; ++i) { qeth_init_qdio_queues() 2844 qdio_reset_buffers(card->qdio.out_qs[i]->qdio_bufs, qeth_init_qdio_queues() 2847 qeth_clear_output_buffer(card->qdio.out_qs[i], qeth_init_qdio_queues() 2848 card->qdio.out_qs[i]->bufs[j], qeth_init_qdio_queues() 2851 card->qdio.out_qs[i]->card = card; qeth_init_qdio_queues() 2852 card->qdio.out_qs[i]->next_buf_to_fill = 0; qeth_init_qdio_queues() 2853 card->qdio.out_qs[i]->do_pack = 0; qeth_init_qdio_queues() 2854 atomic_set(&card->qdio.out_qs[i]->used_buffers, 0); qeth_init_qdio_queues() 2855 atomic_set(&card->qdio.out_qs[i]->set_pci_flags_count, 0); qeth_init_qdio_queues() 2856 atomic_set(&card->qdio.out_qs[i]->state, qeth_init_qdio_queues() 3263 struct qeth_qdio_q *queue = card->qdio.in_q; qeth_queue_input_buffer() 3271 card->qdio.in_buf_pool.buf_count - qeth_queue_input_buffer() 3273 card->qdio.in_buf_pool.buf_count - qeth_queue_input_buffer() 3298 list_for_each(lh, &card->qdio.in_buf_pool.entry_list) qeth_queue_input_buffer() 3300 if (i == card->qdio.in_buf_pool.buf_count) { qeth_queue_input_buffer() 3605 struct qeth_qdio_q *cq = card->qdio.c_q; qeth_qdio_cq_handler() 3650 card->qdio.c_q->next_buf_to_init, qeth_qdio_cq_handler() 3657 card->qdio.c_q->next_buf_to_init = (card->qdio.c_q->next_buf_to_init qeth_qdio_cq_handler() 3694 struct qeth_qdio_out_q *queue = card->qdio.out_qs[__queue]; qeth_qdio_output_handler() 3773 (card->qdio.no_out_queues - 1); qeth_get_priority_queue() 3775 switch (card->qdio.do_prio_queueing) { qeth_get_priority_queue() 3786 return card->qdio.default_out_queue; qeth_get_priority_queue() 3788 if (card->qdio.do_prio_queueing == QETH_PRIO_Q_ING_PREC) qeth_get_priority_queue() 3811 return card->qdio.default_out_queue; qeth_get_priority_queue() 4841 (card->qdio.no_in_queues - 1); qeth_qdio_establish_cq() 4842 i = QDIO_MAX_BUFFERS_PER_Q * (card->qdio.no_in_queues - 1); qeth_qdio_establish_cq() 4845 virt_to_phys(card->qdio.c_q->bufs[i].buffer); qeth_qdio_establish_cq() 4848 queue_start_poll[card->qdio.no_in_queues - 1] = NULL; qeth_qdio_establish_cq() 4874 in_sbal_ptrs = kzalloc(card->qdio.no_in_queues * qeth_qdio_establish() 4883 virt_to_phys(card->qdio.in_q->bufs[i].buffer); qeth_qdio_establish() 4886 queue_start_poll = kzalloc(sizeof(void *) * card->qdio.no_in_queues, qeth_qdio_establish() 4892 for (i = 0; i < card->qdio.no_in_queues; ++i) qeth_qdio_establish() 4898 kzalloc(card->qdio.no_out_queues * QDIO_MAX_BUFFERS_PER_Q * qeth_qdio_establish() 4904 for (i = 0, k = 0; i < card->qdio.no_out_queues; ++i) qeth_qdio_establish() 4907 card->qdio.out_qs[i]->bufs[j]->buffer); qeth_qdio_establish() 4915 init_data.no_input_qs = card->qdio.no_in_queues; qeth_qdio_establish() 4916 init_data.no_output_qs = card->qdio.no_out_queues; qeth_qdio_establish() 4923 init_data.output_sbal_state_array = card->qdio.out_bufstates; qeth_qdio_establish() 4927 if (atomic_cmpxchg(&card->qdio.state, QETH_QDIO_ALLOCATED, qeth_qdio_establish() 4931 atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); qeth_qdio_establish() 4936 atomic_set(&card->qdio.state, QETH_QDIO_ALLOCATED); qeth_qdio_establish() 5833 data[19] = atomic_read(&card->qdio.out_qs[0]->used_buffers); qeth_core_get_ethtool_stats() 5834 data[20] = (card->qdio.no_out_queues > 1) ? qeth_core_get_ethtool_stats() 5835 atomic_read(&card->qdio.out_qs[1]->used_buffers) : 0; qeth_core_get_ethtool_stats() 5836 data[21] = (card->qdio.no_out_queues > 2) ? qeth_core_get_ethtool_stats() 5837 atomic_read(&card->qdio.out_qs[2]->used_buffers) : 0; qeth_core_get_ethtool_stats() 5838 data[22] = (card->qdio.no_out_queues > 3) ? qeth_core_get_ethtool_stats() 5839 atomic_read(&card->qdio.out_qs[3]->used_buffers) : 0; qeth_core_get_ethtool_stats()
|
H A D | qeth_core.h | 28 #include <asm/qdio.h> 257 #define QETH_MAX_BUFFER_ELEMENTS(card) ((card)->qdio.in_buf_size >> 12) 259 ((card)->qdio.in_buf_pool.buf_count / 2) 262 #define QETH_PCI_THRESHOLD_A(card) ((card)->qdio.in_buf_pool.buf_count+1) 813 struct qeth_qdio_info qdio; member in struct:qeth_card 871 list_add_tail(&entry->list, &card->qdio.in_buf_pool.entry_list); qeth_put_buffer_pool_entry()
|
H A D | qeth_l2_main.c | 488 &card->qdio.in_q->bufs[card->rx.b_index], qeth_l2_process_inbound_buffer() 561 &card->qdio.in_q->bufs[card->rx.b_index] qeth_l2_poll() 567 buffer = &card->qdio.in_q->bufs[card->rx.b_index]; qeth_l2_poll() 588 &card->qdio.in_q qeth_l2_poll() 873 if (card->qdio.do_prio_queueing || (cast_type && qeth_l2_hard_start_xmit() 875 queue = card->qdio.out_qs[qeth_get_priority_queue(card, skb, qeth_l2_hard_start_xmit() 878 queue = card->qdio.out_qs[card->qdio.default_out_queue]; qeth_l2_hard_start_xmit()
|
H A D | qeth_l3_main.c | 1865 &card->qdio.in_q->bufs[card->rx.b_index], qeth_l3_process_inbound_buffer() 1940 &card->qdio.in_q->bufs[card->rx.b_index] qeth_l3_poll() 1946 buffer = &card->qdio.in_q->bufs[card->rx.b_index]; qeth_l3_poll() 1967 &card->qdio.in_q qeth_l3_poll() 2841 card->qdio.out_qs[card->qdio.do_prio_queueing qeth_l3_hard_start_xmit() 2844 card->qdio.default_out_queue]; qeth_l3_hard_start_xmit()
|
H A D | qeth_l3_sys.c | 221 if (card->qdio.init_pool.buf_count != qeth_l3_dev_sniffer_store()
|
/linux-4.4.14/arch/s390/include/asm/ |
H A D | isc.h | 20 #define QDIO_AIRQ_ISC IO_SCH_ISC /* I/O subchannel in qdio mode */
|
H A D | qdio.h | 270 /* qdio adapter-characteristics-1 flag */ 315 /* qdio errors reported to the upper-layer program */ 329 * struct qdio_initialize - qdio initialization data
|