Searched refs:qdio (Results 1 - 25 of 25) sorted by relevance

/linux-4.4.14/drivers/s390/scsi/
H A Dzfcp_qdio.c21 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 Dzfcp_qdio.h4 * 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 Dzfcp_fsf.c680 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 Dzfcp_sysfs.c538 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 Dzfcp_scsi.c459 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 Dzfcp_def.h150 struct zfcp_qdio *qdio; member in struct:zfcp_adapter
286 * @qdio_req: qdio queue related values
H A Dzfcp_aux.c279 if (zfcp_fsf_status_read(adapter->qdio)) { zfcp_status_read_refill()
436 zfcp_qdio_destroy(adapter->qdio); zfcp_adapter_unregister()
H A Dzfcp_erp.c760 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 DMakefile15 qdio-objs := qdio_main.o qdio_thinint.o qdio_debug.o qdio_setup.o
16 obj-$(CONFIG_QDIO) += qdio.o
H A Dqdio_debug.h10 #include <asm/qdio.h>
11 #include "qdio.h"
H A Dqdio_setup.c2 * 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 Dqdio_thinint.c12 #include <asm/qdio.h>
18 #include "qdio.h"
180 * tiqdio_thinint_handler - thin interrupt handler for qdio
H A Dqdio_main.c2 * 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 Dqdio_debug.c13 #include "qdio.h"
351 debugfs_root = debugfs_create_dir("qdio", NULL); qdio_debug_init()
H A Dchsc.h10 #include <asm/qdio.h>
H A Dcio.h18 u32 qf : 1; /* qdio facility */
H A Dqdio.h76 /* flags for st qdio sch data */
/linux-4.4.14/drivers/s390/net/
H A Dqeth_core_sys.c83 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 Dqeth_core_main.c248 &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 Dqeth_core.h28 #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 Dqeth_l2_main.c488 &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 Dqeth_l3_main.c1865 &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 Dqeth_l3_sys.c221 if (card->qdio.init_pool.buf_count != qeth_l3_dev_sniffer_store()
/linux-4.4.14/arch/s390/include/asm/
H A Disc.h20 #define QDIO_AIRQ_ISC IO_SCH_ISC /* I/O subchannel in qdio mode */
H A Dqdio.h270 /* qdio adapter-characteristics-1 flag */
315 /* qdio errors reported to the upper-layer program */
329 * struct qdio_initialize - qdio initialization data

Completed in 489 milliseconds