qeth: NAPI support for l2 and l3 discipline
[cascardo/linux.git] / drivers / s390 / net / qeth_core.h
index d125776..6be43eb 100644 (file)
@@ -676,6 +676,7 @@ enum qeth_discipline_id {
 };
 
 struct qeth_discipline {
+       void (*start_poll)(struct ccw_device *, int, unsigned long);
        qdio_handler_t *input_handler;
        qdio_handler_t *output_handler;
        int (*recover)(void *ptr);
@@ -702,6 +703,16 @@ struct qeth_skb_data {
 #define QETH_SKB_MAGIC 0x71657468
 #define QETH_SIGA_CC2_RETRIES 3
 
+struct qeth_rx {
+       int b_count;
+       int b_index;
+       struct qdio_buffer_element *b_element;
+       int e_offset;
+       int qdio_err;
+};
+
+#define QETH_NAPI_WEIGHT 128
+
 struct qeth_card {
        struct list_head list;
        enum qeth_card_states state;
@@ -749,6 +760,8 @@ struct qeth_card {
        debug_info_t *debug;
        struct mutex conf_mutex;
        struct mutex discipline_mutex;
+       struct napi_struct napi;
+       struct qeth_rx rx;
 };
 
 struct qeth_card_list_struct {
@@ -831,6 +844,10 @@ struct sk_buff *qeth_core_get_next_skb(struct qeth_card *,
                struct qdio_buffer *, struct qdio_buffer_element **, int *,
                struct qeth_hdr **);
 void qeth_schedule_recovery(struct qeth_card *);
+void qeth_qdio_start_poll(struct ccw_device *, int, unsigned long);
+void qeth_qdio_input_handler(struct ccw_device *,
+               unsigned int, unsigned int, int,
+               int, unsigned long);
 void qeth_qdio_output_handler(struct ccw_device *, unsigned int,
                        int, int, int, unsigned long);
 void qeth_clear_ipacmd_list(struct qeth_card *);