qdio.h (6ffed94ea73c0c15e3201d4d479b6efe8343fb96) | qdio.h (5f4026f8b2e4c5e26713d6c707592a33326a88c4) |
---|---|
1/* 2 * linux/drivers/s390/cio/qdio.h 3 * 4 * Copyright 2000,2009 IBM Corp. 5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 6 * Jan Glauber <jang@linux.vnet.ibm.com> 7 */ 8#ifndef _CIO_QDIO_H --- 404 unchanged lines hidden (view full) --- 413#define sub_buf(bufnr, dec) \ 414 ((bufnr - dec) & QDIO_MAX_BUFFERS_MASK) 415 416#define queue_irqs_enabled(q) \ 417 (test_bit(QDIO_QUEUE_IRQS_DISABLED, &q->u.in.queue_irq_state) == 0) 418#define queue_irqs_disabled(q) \ 419 (test_bit(QDIO_QUEUE_IRQS_DISABLED, &q->u.in.queue_irq_state) != 0) 420 | 1/* 2 * linux/drivers/s390/cio/qdio.h 3 * 4 * Copyright 2000,2009 IBM Corp. 5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 6 * Jan Glauber <jang@linux.vnet.ibm.com> 7 */ 8#ifndef _CIO_QDIO_H --- 404 unchanged lines hidden (view full) --- 413#define sub_buf(bufnr, dec) \ 414 ((bufnr - dec) & QDIO_MAX_BUFFERS_MASK) 415 416#define queue_irqs_enabled(q) \ 417 (test_bit(QDIO_QUEUE_IRQS_DISABLED, &q->u.in.queue_irq_state) == 0) 418#define queue_irqs_disabled(q) \ 419 (test_bit(QDIO_QUEUE_IRQS_DISABLED, &q->u.in.queue_irq_state) != 0) 420 |
421#define TIQDIO_SHARED_IND 63 422 423/* device state change indicators */ 424struct indicator_t { 425 u32 ind; /* u32 because of compare-and-swap performance */ 426 atomic_t count; /* use count, 0 or 1 for non-shared indicators */ 427}; 428 429extern struct indicator_t *q_indicators; 430 431static inline int has_multiple_inq_on_dsci(struct qdio_irq *irq) 432{ 433 return irq->nr_input_qs > 1; 434} 435 436static inline int references_shared_dsci(struct qdio_irq *irq) 437{ 438 return irq->dsci == &q_indicators[TIQDIO_SHARED_IND].ind; 439} 440 441static inline int shared_ind(struct qdio_q *q) 442{ 443 struct qdio_irq *i = q->irq_ptr; 444 return references_shared_dsci(i) || has_multiple_inq_on_dsci(i); 445} 446 | |
447extern u64 last_ai_time; 448 449/* prototypes for thin interrupt */ 450void qdio_setup_thinint(struct qdio_irq *irq_ptr); 451int qdio_establish_thinint(struct qdio_irq *irq_ptr); 452void qdio_shutdown_thinint(struct qdio_irq *irq_ptr); 453void tiqdio_add_input_queues(struct qdio_irq *irq_ptr); 454void tiqdio_remove_input_queues(struct qdio_irq *irq_ptr); 455void tiqdio_inbound_processing(unsigned long q); 456int tiqdio_allocate_memory(void); 457void tiqdio_free_memory(void); 458int tiqdio_register_thinints(void); 459void tiqdio_unregister_thinints(void); | 421extern u64 last_ai_time; 422 423/* prototypes for thin interrupt */ 424void qdio_setup_thinint(struct qdio_irq *irq_ptr); 425int qdio_establish_thinint(struct qdio_irq *irq_ptr); 426void qdio_shutdown_thinint(struct qdio_irq *irq_ptr); 427void tiqdio_add_input_queues(struct qdio_irq *irq_ptr); 428void tiqdio_remove_input_queues(struct qdio_irq *irq_ptr); 429void tiqdio_inbound_processing(unsigned long q); 430int tiqdio_allocate_memory(void); 431void tiqdio_free_memory(void); 432int tiqdio_register_thinints(void); 433void tiqdio_unregister_thinints(void); |
434void clear_nonshared_ind(struct qdio_irq *); 435int test_nonshared_ind(struct qdio_irq *); |
|
460 | 436 |
461 | |
462/* prototypes for setup */ 463void qdio_inbound_processing(unsigned long data); 464void qdio_outbound_processing(unsigned long data); 465void qdio_outbound_timer(unsigned long data); 466void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm, 467 struct irb *irb); 468int qdio_allocate_qs(struct qdio_irq *irq_ptr, int nr_input_qs, 469 int nr_output_qs); --- 19 unchanged lines hidden --- | 437/* prototypes for setup */ 438void qdio_inbound_processing(unsigned long data); 439void qdio_outbound_processing(unsigned long data); 440void qdio_outbound_timer(unsigned long data); 441void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm, 442 struct irb *irb); 443int qdio_allocate_qs(struct qdio_irq *irq_ptr, int nr_input_qs, 444 int nr_output_qs); --- 19 unchanged lines hidden --- |