patch-2.2.6 linux/include/net/irda/irda.h

Next file: linux/include/net/irda/irda_device.h
Previous file: linux/include/net/irda/ircomm_common.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.2.5/linux/include/net/irda/irda.h linux/include/net/irda/irda.h
@@ -6,7 +6,7 @@
  * Status:        Experimental.
  * Author:        Dag Brattli <dagb@cs.uit.no>
  * Created at:    Tue Dec  9 21:13:12 1997
- * Modified at:   Wed Jan 27 14:15:50 1999
+ * Modified at:   Tue Apr  6 20:31:08 1999
  * Modified by:   Dag Brattli <dagb@cs.uit.no>
  * 
  *     Copyright (c) 1998 Dag Brattli, All Rights Reserved.
@@ -22,11 +22,15 @@
  *     
  ********************************************************************/
 
-#ifndef IRDA_H
-#define IRDA_H
+#ifndef NET_IRDA_H
+#define NET_IRDA_H
 
 #include <linux/config.h>
 #include <linux/skbuff.h>
+#include <linux/kernel.h>
+
+#include <net/irda/qos.h>
+#include <net/irda/irqueue.h>
 
 #ifndef TRUE
 #define TRUE 1
@@ -57,47 +61,6 @@
 #define ASSERT(expr, func)
 #endif /* CONFIG_IRDA_DEBUG */
 
-#ifdef CHECK_SKB
-static unsigned int check_skb = CHECK_SKB;
-
-#define SK_FREED_SKB    0x0DE2C0DE
-#define SK_GOOD_SKB     0xDEC0DED1
-#define SK_HEAD_SKB     0x12231298
-
-extern int skb_check(struct sk_buff *skb,int,int, char *);
-
-#ifdef IS_SKB
-#undef IS_SKB
-#endif
-
-#define IS_SKB(skb, func) \
-if( skb_check((skb), 0, __LINE__,__FILE__) == -1) { \
-       ##func}
-
-#ifdef IS_SKB_HEAD
-#undef IS_SKB_HEAD
-#endif
-
-#define IS_SKB_HEAD(skb)  skb_check((skb), 1, __LINE__,__FILE__)
-
-#define ALLOC_SKB_MAGIC(skb) \
-if( check_skb) \
-        skb->magic_debug_cookie = SK_GOOD_SKB;
-
-#define FREE_SKB_MAGIC(skb) \
-if( check_skb) {\
-	skb->magic_debug_cookie = SK_FREED_SKB; \
-}
-
-#else
-#undef IS_SKB
-#define IS_SKB(skb, func)
-#undef IS_SKB_HEAD
-#define IS_SKB_HEAD(skb) 
-#define ALLOC_SKB_MAGIC(skb) 
-#define FREE_SKB_MAGIC(skb)
-#endif /* CHECK_SKB */
-
 /*
  *  Magic numbers used by Linux/IR. Random numbers which must be unique to 
  *  give the best protection
@@ -117,39 +80,153 @@
 #define IAS_OBJECT_MAGIC   0x34234
 #define IAS_ATTRIB_MAGIC   0x45232
 
-#define IAS_DEVICE_ID 0x5342
+#define IAS_DEVICE_ID 0x5342 
 #define IAS_PNP_ID    0xd342
 #define IAS_OBEX_ID   0x34323
 #define IAS_IRLAN_ID  0x34234
 #define IAS_IRCOMM_ID 0x2343
 #define IAS_IRLPT_ID  0x9876
 
-#endif /* IRDA_H */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+typedef enum { FLOW_STOP, FLOW_START } LOCAL_FLOW;
 
+/* IrDA Socket */
+struct tsap_cb;
+struct irda_sock {
+	__u32 saddr;          /* my local address */
+	__u32 daddr;          /* peer address */
+
+	struct ias_object *ias_obj;
+	struct tsap_cb *tsap; /* TSAP used by this connection */
+	__u8 dtsap_sel;       /* remote TSAP address */
+	__u8 stsap_sel;       /* local TSAP address */
+	
+	__u32 max_sdu_size_rx;
+	__u32 max_sdu_size_tx;
+	struct qos_info qos_tx;
+
+	__u16 mask;           /* Hint bits mask */
+	__u16 hints;          /* Hint bits */
+
+	__u32 ckey;           /* IrLMP client handle */
+	__u32 skey;           /* IrLMP service handle */
+
+	int nslots;           /* Number of slots to use for discovery */
+
+	struct sock *sk;
+	struct wait_queue *ias_wait;       /* Wait for LM-IAS answer */
+
+	LOCAL_FLOW tx_flow;
+	LOCAL_FLOW rx_flow;
+};
 
+/*
+ *  This type is used by the protocols that transmit 16 bits words in 
+ *  little endian format. A little endian machine stores MSB of word in
+ *  byte[1] and LSB in byte[0]. A big endian machine stores MSB in byte[0] 
+ *  and LSB in byte[1].
+ */
+typedef union {
+	__u16 word;
+	__u8  byte[2];
+} __u16_host_order;
 
+/*
+ *  Information monitored by some layers
+ */
+struct irda_statistics
+{
+        int     rx_packets;             /* total packets received       */
+        int     tx_packets;             /* total packets transmitted    */
+        int     rx_errors;              /* bad packets received         */
+        int     tx_errors;              /* packet transmit problems     */
+        int     rx_dropped;             /* no space in linux buffers    */
+        int     tx_dropped;             /* no space available in linux  */
+	int     rx_compressed;
+	int     tx_compressed;
+	int     rx_bytes;               /* total bytes received         */
+	int     tx_bytes;               /* total bytes transmitted      */
+
+        int     multicast;              /* multicast packets received   */
+        int     collisions;
+	
+        /* detailed rx_errors: */
+        int     rx_length_errors;
+        int     rx_over_errors;         /* receiver ring buff overflow  */
+        int     rx_crc_errors;          /* recved pkt with crc error    */
+        int     rx_frame_errors;        /* recv'd frame alignment error */
+        int     rx_fifo_errors;         /* recv'r fifo overrun          */
+        int     rx_missed_errors;       /* receiver missed packet       */
+
+        /* detailed tx_errors */
+        int     tx_aborted_errors;
+        int     tx_carrier_errors;
+        int     tx_fifo_errors;
+        int     tx_heartbeat_errors;
+        int     tx_window_errors;
+};
+
+/* Misc status information */
+typedef enum {
+	STATUS_OK,
+	STATUS_ABORTED,
+	STATUS_NO_ACTIVITY,
+	STATUS_NOISY,
+	STATUS_REMOTE,
+} LINK_STATUS;
+
+typedef enum {
+	LOCK_NO_CHANGE,
+	LOCK_LOCKED,
+	LOCK_UNLOCKED,
+} LOCK_STATUS;
+
+typedef enum { /* FIXME check the two first reason codes */
+	LAP_DISC_INDICATION=1, /* Received a disconnect request from peer */
+	LAP_NO_RESPONSE,       /* To many retransmits without response */
+	LAP_RESET_INDICATION,  /* To many retransmits, or invalid nr/ns */
+	LAP_FOUND_NONE,        /* No devices were discovered */
+	LAP_MEDIA_BUSY,
+	LAP_PRIMARY_CONFLICT,
+} LAP_REASON;
+
+/*  
+ *  IrLMP disconnect reasons. The order is very important, since they 
+ *  correspond to disconnect reasons sent in IrLMP disconnect frames, so
+ *  please do not touch :-)
+ */
+typedef enum {
+	LM_USER_REQUEST = 1,  /* User request */
+	LM_LAP_DISCONNECT,    /* Unexpected IrLAP disconnect */
+	LM_CONNECT_FAILURE,   /* Failed to establish IrLAP connection */
+	LM_LAP_RESET,         /* IrLAP reset */
+	LM_INIT_DISCONNECT,   /* Link Management initiated disconnect */
+	LM_LSAP_NOTCONN,      /* Data delivered on unconnected LSAP */
+	LM_NON_RESP_CLIENT,   /* Non responsive LM-MUX client */
+	LM_NO_AVAIL_CLIENT,   /* No available LM-MUX client */
+	LM_CONN_HALF_OPEN,    /* Connection is half open */
+	LM_BAD_SOURCE_ADDR,   /* Illegal source address (i.e 0x00) */
+} LM_REASON;
+#define LM_UNKNOWN 0xff       /* Unspecified disconnect reason */
 
+/*
+ *  Notify structure used between transport and link management layers
+ */
+struct notify_t {
+	int (*data_indication)(void *priv, void *sap, struct sk_buff *skb);
+	int (*udata_indication)(void *priv, void *sap, struct sk_buff *skb);
+	void (*connect_confirm)(void *instance, void *sap, 
+				struct qos_info *qos, __u32 max_sdu_size,
+				struct sk_buff *skb);
+	void (*connect_indication)(void *instance, void *sap, 
+				   struct qos_info *qos, __u32 max_sdu_size,
+				   struct sk_buff *skb);
+	void (*disconnect_indication)(void *instance, void *sap, 
+				      LM_REASON reason, struct sk_buff *);
+	void (*flow_indication)(void *instance, void *sap, LOCAL_FLOW flow);
+	void *instance; /* Layer instance pointer */
+	char name[16];  /* Name of layer */
+};
 
+#define NOTIFY_MAX_NAME 16
 
+#endif /* NET_IRDA_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)