staging: ozwpan: Create deferred work to destroy PD object.
[firefly-linux-kernel-4.4.55.git] / drivers / staging / ozwpan / ozpd.h
index fbf47cbab8a92ffc75ee616a24113beae69bcced..12c712956888e6d2f60dc1cbe3fb5eeab27c3f8c 100644 (file)
@@ -6,6 +6,7 @@
 #ifndef _OZPD_H_
 #define _OZPD_H_
 
+#include <linux/interrupt.h>
 #include "ozeltbuf.h"
 
 /* PD state
@@ -47,8 +48,8 @@ struct oz_farewell {
        struct list_head link;
        u8 ep_num;
        u8 index;
-       u8 report[1];
        u8 len;
+       u8 report[0];
 };
 
 /* Data structure that holds information on a specific peripheral device (PD).
@@ -68,18 +69,16 @@ struct oz_pd {
        u8              isoc_sent;
        u32             last_rx_pkt_num;
        u32             last_tx_pkt_num;
+       struct timespec last_rx_timestamp;
        u32             trigger_pkt_num;
-       unsigned long   pulse_time_j;
-       unsigned long   timeout_time_j;
-       unsigned long   pulse_period_j;
-       unsigned long   presleep_j;
-       unsigned long   keep_alive_j;
-       unsigned long   last_rx_time_j;
+       unsigned long   pulse_time;
+       unsigned long   pulse_period;
+       unsigned long   presleep;
+       unsigned long   keep_alive;
        struct oz_elt_buf elt_buff;
        void            *app_ctx[OZ_APPID_MAX];
        spinlock_t      app_lock[OZ_APPID_MAX];
        int             max_tx_size;
-       u8              heartbeat_requested;
        u8              mode;
        u8              ms_per_isoc;
        unsigned        isoc_latency;
@@ -95,6 +94,12 @@ struct oz_pd {
        spinlock_t      stream_lock;
        struct list_head stream_list;
        struct net_device *net_dev;
+       struct hrtimer  heartbeat;
+       struct hrtimer  timeout;
+       u8      timeout_type;
+       struct tasklet_struct   heartbeat_tasklet;
+       struct tasklet_struct   timeout_tasklet;
+       struct work_struct workitem;
 };
 
 #define OZ_MAX_QUEUED_FRAMES   4