irda: move include/net/irda into staging subdirectory
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 27 Aug 2017 15:03:33 +0000 (17:03 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Aug 2017 23:42:57 +0000 (16:42 -0700)
And finally, move the irda include files into
drivers/staging/irda/include/net/irda.  Yes, it's a long path, but it
makes it easy for us to just add a Makefile directory path addition and
all of the net and drivers code "just works".

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
70 files changed:
drivers/staging/irda/drivers/Makefile
drivers/staging/irda/include/net/irda/af_irda.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/crc.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/discovery.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_core.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_event.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_lmp.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_param.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_ttp.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_tty.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/ircomm_tty_attach.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irda.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irda_device.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/iriap.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/iriap_event.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irias_object.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlan_client.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlan_common.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlan_eth.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlan_event.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlan_filter.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlan_provider.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlap.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlap_event.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlap_frame.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlmp.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlmp_event.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irlmp_frame.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irmod.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irqueue.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/irttp.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/parameters.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/qos.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/timer.h [new file with mode: 0644]
drivers/staging/irda/include/net/irda/wrapper.h [new file with mode: 0644]
drivers/staging/irda/net/Makefile
include/net/irda/af_irda.h [deleted file]
include/net/irda/crc.h [deleted file]
include/net/irda/discovery.h [deleted file]
include/net/irda/ircomm_core.h [deleted file]
include/net/irda/ircomm_event.h [deleted file]
include/net/irda/ircomm_lmp.h [deleted file]
include/net/irda/ircomm_param.h [deleted file]
include/net/irda/ircomm_ttp.h [deleted file]
include/net/irda/ircomm_tty.h [deleted file]
include/net/irda/ircomm_tty_attach.h [deleted file]
include/net/irda/irda.h [deleted file]
include/net/irda/irda_device.h [deleted file]
include/net/irda/iriap.h [deleted file]
include/net/irda/iriap_event.h [deleted file]
include/net/irda/irias_object.h [deleted file]
include/net/irda/irlan_client.h [deleted file]
include/net/irda/irlan_common.h [deleted file]
include/net/irda/irlan_eth.h [deleted file]
include/net/irda/irlan_event.h [deleted file]
include/net/irda/irlan_filter.h [deleted file]
include/net/irda/irlan_provider.h [deleted file]
include/net/irda/irlap.h [deleted file]
include/net/irda/irlap_event.h [deleted file]
include/net/irda/irlap_frame.h [deleted file]
include/net/irda/irlmp.h [deleted file]
include/net/irda/irlmp_event.h [deleted file]
include/net/irda/irlmp_frame.h [deleted file]
include/net/irda/irmod.h [deleted file]
include/net/irda/irqueue.h [deleted file]
include/net/irda/irttp.h [deleted file]
include/net/irda/parameters.h [deleted file]
include/net/irda/qos.h [deleted file]
include/net/irda/timer.h [deleted file]
include/net/irda/wrapper.h [deleted file]

index 4c344433dae59f41055c42c2b5556953141e4a98..e2901b1355288c52152148cffd41254aad539aef 100644 (file)
@@ -5,6 +5,8 @@
 # Rewritten to use lists instead of if-statements.
 #
 
+subdir-ccflags-y += -I$(srctree)/drivers/staging/irda/include
+
 # FIR drivers
 obj-$(CONFIG_USB_IRDA)         += irda-usb.o
 obj-$(CONFIG_SIGMATEL_FIR)     += stir4200.o
diff --git a/drivers/staging/irda/include/net/irda/af_irda.h b/drivers/staging/irda/include/net/irda/af_irda.h
new file mode 100644 (file)
index 0000000..0df5749
--- /dev/null
@@ -0,0 +1,87 @@
+/*********************************************************************
+ *                
+ * Filename:      af_irda.h
+ * Version:       1.0
+ * Description:   IrDA sockets declarations
+ * Status:        Stable
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Dec  9 21:13:12 1997
+ * Modified at:   Fri Jan 28 13:16:32 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *      
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *     
+ ********************************************************************/
+
+#ifndef AF_IRDA_H
+#define AF_IRDA_H
+
+#include <linux/irda.h>
+#include <net/irda/irda.h>
+#include <net/irda/iriap.h>            /* struct iriap_cb */
+#include <net/irda/irias_object.h>     /* struct ias_value */
+#include <net/irda/irlmp.h>            /* struct lsap_cb */
+#include <net/irda/irttp.h>            /* struct tsap_cb */
+#include <net/irda/discovery.h>                /* struct discovery_t */
+#include <net/sock.h>
+
+/* IrDA Socket */
+struct irda_sock {
+       /* struct sock has to be the first member of irda_sock */
+       struct sock sk;
+       __u32 saddr;          /* my local address */
+       __u32 daddr;          /* peer address */
+
+       struct lsap_cb *lsap; /* LSAP used by Ultra */
+       __u8  pid;            /* Protocol IP (PID) used by Ultra */
+
+       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;
+       __u32 max_data_size;
+       __u8  max_header_size;
+       struct qos_info qos_tx;
+
+       __u16_host_order mask;           /* Hint bits mask */
+       __u16_host_order hints;          /* Hint bits */
+
+       void *ckey;           /* IrLMP client handle */
+       void *skey;           /* IrLMP service handle */
+
+       struct ias_object *ias_obj;   /* Our service name + lsap in IAS */
+       struct iriap_cb *iriap;       /* Used to query remote IAS */
+       struct ias_value *ias_result; /* Result of remote IAS query */
+
+       hashbin_t *cachelog;            /* Result of discovery query */
+       __u32 cachedaddr;       /* Result of selective discovery query */
+
+       int nslots;           /* Number of slots to use for discovery */
+
+       int errno;            /* status of the IAS query */
+
+       wait_queue_head_t query_wait;   /* Wait for the answer to a query */
+       struct timer_list watchdog;     /* Timeout for discovery */
+
+       LOCAL_FLOW tx_flow;
+       LOCAL_FLOW rx_flow;
+};
+
+static inline struct irda_sock *irda_sk(struct sock *sk)
+{
+       return (struct irda_sock *)sk;
+}
+
+#endif /* AF_IRDA_H */
diff --git a/drivers/staging/irda/include/net/irda/crc.h b/drivers/staging/irda/include/net/irda/crc.h
new file mode 100644 (file)
index 0000000..f202296
--- /dev/null
@@ -0,0 +1,29 @@
+/*********************************************************************
+ *                
+ * Filename:      crc.h
+ * Version:       
+ * Description:   CRC routines
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Sun May  2 20:25:23 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ ********************************************************************/
+
+#ifndef IRDA_CRC_H
+#define IRDA_CRC_H
+
+#include <linux/types.h>
+#include <linux/crc-ccitt.h>
+
+#define INIT_FCS  0xffff   /* Initial FCS value */
+#define GOOD_FCS  0xf0b8   /* Good final FCS value */
+
+/* Recompute the FCS with one more character appended. */
+#define irda_fcs(fcs, c) crc_ccitt_byte(fcs, c)
+
+/* Recompute the FCS with len bytes appended. */
+#define irda_calc_crc16(fcs, buf, len) crc_ccitt(fcs, buf, len)
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/discovery.h b/drivers/staging/irda/include/net/irda/discovery.h
new file mode 100644 (file)
index 0000000..63ae325
--- /dev/null
@@ -0,0 +1,95 @@
+/*********************************************************************
+ *                
+ * Filename:      discovery.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Apr  6 16:53:53 1999
+ * Modified at:   Tue Oct  5 10:05:10 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef DISCOVERY_H
+#define DISCOVERY_H
+
+#include <asm/param.h>
+
+#include <net/irda/irda.h>
+#include <net/irda/irqueue.h>          /* irda_queue_t */
+#include <net/irda/irlap_event.h>      /* LAP_REASON */
+
+#define DISCOVERY_EXPIRE_TIMEOUT (2*sysctl_discovery_timeout*HZ)
+#define DISCOVERY_DEFAULT_SLOTS  0
+
+/*
+ *  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].
+ *
+ * This structure is used in the code for things that are endian neutral
+ * but that fit in a word so that we can manipulate them efficiently.
+ * By endian neutral, I mean things that are really an array of bytes,
+ * and always used as such, for example the hint bits. Jean II
+ */
+typedef union {
+       __u16 word;
+       __u8  byte[2];
+} __u16_host_order;
+
+/* Types of discovery */
+typedef enum {
+       DISCOVERY_LOG,          /* What's in our discovery log */
+       DISCOVERY_ACTIVE,       /* Doing our own discovery on the medium */
+       DISCOVERY_PASSIVE,      /* Peer doing discovery on the medium */
+       EXPIRY_TIMEOUT,         /* Entry expired due to timeout */
+} DISCOVERY_MODE;
+
+#define NICKNAME_MAX_LEN 21
+
+/* Basic discovery information about a peer */
+typedef struct irda_device_info                discinfo_t;     /* linux/irda.h */
+
+/*
+ * The DISCOVERY structure is used for both discovery requests and responses
+ */
+typedef struct discovery_t {
+       irda_queue_t    q;              /* Must be first! */
+
+       discinfo_t      data;           /* Basic discovery information */
+       int             name_len;       /* Length of nickname */
+
+       LAP_REASON      condition;      /* More info about the discovery */
+       int             gen_addr_bit;   /* Need to generate a new device
+                                        * address? */
+       int             nslots;         /* Number of slots to use when
+                                        * discovering */
+       unsigned long   timestamp;      /* Last time discovered */
+       unsigned long   firststamp;     /* First time discovered */
+} discovery_t;
+
+void irlmp_add_discovery(hashbin_t *cachelog, discovery_t *discovery);
+void irlmp_add_discovery_log(hashbin_t *cachelog, hashbin_t *log);
+void irlmp_expire_discoveries(hashbin_t *log, __u32 saddr, int force);
+struct irda_device_info *irlmp_copy_discoveries(hashbin_t *log, int *pn,
+                                               __u16 mask, int old_entries);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/ircomm_core.h b/drivers/staging/irda/include/net/irda/ircomm_core.h
new file mode 100644 (file)
index 0000000..2a580ce
--- /dev/null
@@ -0,0 +1,106 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_core.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Wed Jun  9 08:58:43 1999
+ * Modified at:   Mon Dec 13 11:52:29 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_CORE_H
+#define IRCOMM_CORE_H
+
+#include <net/irda/irda.h>
+#include <net/irda/irqueue.h>
+#include <net/irda/ircomm_event.h>
+
+#define IRCOMM_MAGIC 0x98347298
+#define IRCOMM_HEADER_SIZE 1
+
+struct ircomm_cb;   /* Forward decl. */
+
+/*
+ * A small call-table, so we don't have to check the service-type whenever
+ * we want to do something
+ */
+typedef struct {
+       int (*data_request)(struct ircomm_cb *, struct sk_buff *, int clen);
+       int (*connect_request)(struct ircomm_cb *, struct sk_buff *, 
+                              struct ircomm_info *);
+       int (*connect_response)(struct ircomm_cb *, struct sk_buff *);
+       int (*disconnect_request)(struct ircomm_cb *, struct sk_buff *, 
+                                 struct ircomm_info *);        
+} call_t;
+
+struct ircomm_cb {
+       irda_queue_t queue;
+       magic_t magic;
+
+       notify_t notify;
+       call_t   issue;
+
+       int state;
+       int line;            /* Which TTY line we are using */
+
+       struct tsap_cb *tsap;
+       struct lsap_cb *lsap;
+       
+       __u8 dlsap_sel;      /* Destination LSAP/TSAP selector */
+       __u8 slsap_sel;      /* Source LSAP/TSAP selector */
+
+       __u32 saddr;         /* Source device address (link we are using) */
+       __u32 daddr;         /* Destination device address */
+
+       int max_header_size; /* Header space we must reserve for each frame */
+       int max_data_size;   /* The amount of data we can fill in each frame */
+
+       LOCAL_FLOW flow_status; /* Used by ircomm_lmp */
+       int pkt_count;          /* Number of frames we have sent to IrLAP */
+
+       __u8 service_type;
+};
+
+extern hashbin_t *ircomm;
+
+struct ircomm_cb *ircomm_open(notify_t *notify, __u8 service_type, int line);
+int ircomm_close(struct ircomm_cb *self);
+
+int ircomm_data_request(struct ircomm_cb *self, struct sk_buff *skb);
+void ircomm_data_indication(struct ircomm_cb *self, struct sk_buff *skb);
+void ircomm_process_data(struct ircomm_cb *self, struct sk_buff *skb);
+int ircomm_control_request(struct ircomm_cb *self, struct sk_buff *skb);
+int ircomm_connect_request(struct ircomm_cb *self, __u8 dlsap_sel, 
+                          __u32 saddr, __u32 daddr, struct sk_buff *skb,
+                          __u8 service_type);
+void ircomm_connect_indication(struct ircomm_cb *self, struct sk_buff *skb,
+                              struct ircomm_info *info);
+void ircomm_connect_confirm(struct ircomm_cb *self, struct sk_buff *skb,
+                           struct ircomm_info *info);
+int ircomm_connect_response(struct ircomm_cb *self, struct sk_buff *userdata);
+int ircomm_disconnect_request(struct ircomm_cb *self, struct sk_buff *userdata);
+void ircomm_disconnect_indication(struct ircomm_cb *self, struct sk_buff *skb,
+                                 struct ircomm_info *info);
+void ircomm_flow_request(struct ircomm_cb *self, LOCAL_FLOW flow);
+
+#define ircomm_is_connected(self) (self->state == IRCOMM_CONN)
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/ircomm_event.h b/drivers/staging/irda/include/net/irda/ircomm_event.h
new file mode 100644 (file)
index 0000000..5bbc329
--- /dev/null
@@ -0,0 +1,83 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_event.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Jun  6 23:51:13 1999
+ * Modified at:   Thu Jun 10 08:36:25 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_EVENT_H
+#define IRCOMM_EVENT_H
+
+#include <net/irda/irmod.h>
+
+typedef enum {
+        IRCOMM_IDLE,
+        IRCOMM_WAITI,
+        IRCOMM_WAITR,
+        IRCOMM_CONN,
+} IRCOMM_STATE;
+
+/* IrCOMM Events */
+typedef enum {
+        IRCOMM_CONNECT_REQUEST,
+        IRCOMM_CONNECT_RESPONSE,
+        IRCOMM_TTP_CONNECT_INDICATION,
+       IRCOMM_LMP_CONNECT_INDICATION,
+        IRCOMM_TTP_CONNECT_CONFIRM,
+       IRCOMM_LMP_CONNECT_CONFIRM,
+
+        IRCOMM_LMP_DISCONNECT_INDICATION,
+       IRCOMM_TTP_DISCONNECT_INDICATION,
+        IRCOMM_DISCONNECT_REQUEST,
+
+        IRCOMM_TTP_DATA_INDICATION,
+       IRCOMM_LMP_DATA_INDICATION,
+        IRCOMM_DATA_REQUEST,
+        IRCOMM_CONTROL_REQUEST,
+        IRCOMM_CONTROL_INDICATION,
+} IRCOMM_EVENT;
+
+/*
+ * Used for passing information through the state-machine
+ */
+struct ircomm_info {
+        __u32     saddr;               /* Source device address */
+        __u32     daddr;               /* Destination device address */
+        __u8      dlsap_sel;
+        LM_REASON reason;              /* Reason for disconnect */
+       __u32     max_data_size;
+       __u32     max_header_size;
+
+       struct qos_info *qos;
+};
+
+extern const char *const ircomm_state[];
+
+struct ircomm_cb;   /* Forward decl. */
+
+int ircomm_do_event(struct ircomm_cb *self, IRCOMM_EVENT event,
+                   struct sk_buff *skb, struct ircomm_info *info);
+void ircomm_next_state(struct ircomm_cb *self, IRCOMM_STATE state);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/ircomm_lmp.h b/drivers/staging/irda/include/net/irda/ircomm_lmp.h
new file mode 100644 (file)
index 0000000..5042a50
--- /dev/null
@@ -0,0 +1,36 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_lmp.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Wed Jun  9 10:06:07 1999
+ * Modified at:   Fri Aug 13 07:32:32 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_LMP_H
+#define IRCOMM_LMP_H
+
+#include <net/irda/ircomm_core.h>
+
+int ircomm_open_lsap(struct ircomm_cb *self);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/ircomm_param.h b/drivers/staging/irda/include/net/irda/ircomm_param.h
new file mode 100644 (file)
index 0000000..1f67432
--- /dev/null
@@ -0,0 +1,147 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_param.h
+ * Version:       1.0
+ * Description:   Parameter handling for the IrCOMM protocol
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Jun  7 08:47:28 1999
+ * Modified at:   Wed Aug 25 13:46:33 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_PARAMS_H
+#define IRCOMM_PARAMS_H
+
+#include <net/irda/parameters.h>
+
+/* Parameters common to all service types */
+#define IRCOMM_SERVICE_TYPE     0x00
+#define IRCOMM_PORT_TYPE        0x01 /* Only used in LM-IAS */
+#define IRCOMM_PORT_NAME        0x02 /* Only used in LM-IAS */
+
+/* Parameters for both 3 wire and 9 wire */
+#define IRCOMM_DATA_RATE        0x10
+#define IRCOMM_DATA_FORMAT      0x11
+#define IRCOMM_FLOW_CONTROL     0x12
+#define IRCOMM_XON_XOFF         0x13
+#define IRCOMM_ENQ_ACK          0x14
+#define IRCOMM_LINE_STATUS      0x15
+#define IRCOMM_BREAK            0x16
+
+/* Parameters for 9 wire */
+#define IRCOMM_DTE              0x20
+#define IRCOMM_DCE              0x21
+#define IRCOMM_POLL             0x22
+
+/* Service type (details) */
+#define IRCOMM_3_WIRE_RAW       0x01
+#define IRCOMM_3_WIRE           0x02
+#define IRCOMM_9_WIRE           0x04
+#define IRCOMM_CENTRONICS       0x08
+
+/* Port type (details) */
+#define IRCOMM_SERIAL           0x00
+#define IRCOMM_PARALLEL         0x01
+
+/* Data format (details) */
+#define IRCOMM_WSIZE_5          0x00
+#define IRCOMM_WSIZE_6          0x01
+#define IRCOMM_WSIZE_7          0x02
+#define IRCOMM_WSIZE_8          0x03
+
+#define IRCOMM_1_STOP_BIT       0x00
+#define IRCOMM_2_STOP_BIT       0x04 /* 1.5 if char len 5 */
+
+#define IRCOMM_PARITY_DISABLE   0x00
+#define IRCOMM_PARITY_ENABLE    0x08
+
+#define IRCOMM_PARITY_ODD       0x00
+#define IRCOMM_PARITY_EVEN      0x10
+#define IRCOMM_PARITY_MARK      0x20
+#define IRCOMM_PARITY_SPACE     0x30
+
+/* Flow control */
+#define IRCOMM_XON_XOFF_IN      0x01
+#define IRCOMM_XON_XOFF_OUT     0x02
+#define IRCOMM_RTS_CTS_IN       0x04
+#define IRCOMM_RTS_CTS_OUT      0x08
+#define IRCOMM_DSR_DTR_IN       0x10
+#define IRCOMM_DSR_DTR_OUT      0x20
+#define IRCOMM_ENQ_ACK_IN       0x40
+#define IRCOMM_ENQ_ACK_OUT      0x80
+
+/* Line status */
+#define IRCOMM_OVERRUN_ERROR    0x02
+#define IRCOMM_PARITY_ERROR     0x04
+#define IRCOMM_FRAMING_ERROR    0x08
+
+/* DTE (Data terminal equipment) line settings */
+#define IRCOMM_DELTA_DTR        0x01
+#define IRCOMM_DELTA_RTS        0x02
+#define IRCOMM_DTR              0x04
+#define IRCOMM_RTS              0x08
+
+/* DCE (Data communications equipment) line settings */
+#define IRCOMM_DELTA_CTS        0x01  /* Clear to send has changed */
+#define IRCOMM_DELTA_DSR        0x02  /* Data set ready has changed */
+#define IRCOMM_DELTA_RI         0x04  /* Ring indicator has changed */
+#define IRCOMM_DELTA_CD         0x08  /* Carrier detect has changed */
+#define IRCOMM_CTS              0x10  /* Clear to send is high */
+#define IRCOMM_DSR              0x20  /* Data set ready is high */
+#define IRCOMM_RI               0x40  /* Ring indicator is high */
+#define IRCOMM_CD               0x80  /* Carrier detect is high */
+#define IRCOMM_DCE_DELTA_ANY    0x0f
+
+/*
+ * Parameter state
+ */
+struct ircomm_params {
+       /* General control params */
+       __u8  service_type;
+       __u8  port_type;
+       char  port_name[32];
+
+       /* Control params for 3- and 9-wire service type */
+       __u32 data_rate;         /* Data rate in bps */
+       __u8  data_format;
+       __u8  flow_control;
+       char  xonxoff[2];
+       char  enqack[2];
+       __u8  line_status;
+       __u8  _break;
+
+       __u8  null_modem;
+
+       /* Control params for 9-wire service type */
+       __u8 dte;
+       __u8 dce;
+       __u8 poll;
+
+       /* Control params for Centronics service type */
+};
+
+struct ircomm_tty_cb; /* Forward decl. */
+
+int ircomm_param_request(struct ircomm_tty_cb *self, __u8 pi, int flush);
+
+extern pi_param_info_t ircomm_param_info;
+
+#endif /* IRCOMM_PARAMS_H */
+
diff --git a/drivers/staging/irda/include/net/irda/ircomm_ttp.h b/drivers/staging/irda/include/net/irda/ircomm_ttp.h
new file mode 100644 (file)
index 0000000..c562728
--- /dev/null
@@ -0,0 +1,37 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_ttp.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Wed Jun  9 10:06:07 1999
+ * Modified at:   Fri Aug 13 07:32:22 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_TTP_H
+#define IRCOMM_TTP_H
+
+#include <net/irda/ircomm_core.h>
+
+int  ircomm_open_tsap(struct ircomm_cb *self);
+
+#endif
+
diff --git a/drivers/staging/irda/include/net/irda/ircomm_tty.h b/drivers/staging/irda/include/net/irda/ircomm_tty.h
new file mode 100644 (file)
index 0000000..8d4f588
--- /dev/null
@@ -0,0 +1,121 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_tty.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Jun  6 23:24:22 1999
+ * Modified at:   Fri Jan 28 13:16:57 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_TTY_H
+#define IRCOMM_TTY_H
+
+#include <linux/serial.h>
+#include <linux/termios.h>
+#include <linux/timer.h>
+#include <linux/tty.h>         /* struct tty_struct */
+
+#include <net/irda/irias_object.h>
+#include <net/irda/ircomm_core.h>
+#include <net/irda/ircomm_param.h>
+
+#define IRCOMM_TTY_PORTS 32
+#define IRCOMM_TTY_MAGIC 0x3432
+#define IRCOMM_TTY_MAJOR 161
+#define IRCOMM_TTY_MINOR 0
+
+/* This is used as an initial value to max_header_size before the proper
+ * value is filled in (5 for ttp, 4 for lmp). This allow us to detect
+ * the state of the underlying connection. - Jean II */
+#define IRCOMM_TTY_HDR_UNINITIALISED   16
+/* Same for payload size. See qos.c for the smallest max data size */
+#define IRCOMM_TTY_DATA_UNINITIALISED  (64 - IRCOMM_TTY_HDR_UNINITIALISED)
+
+/*
+ * IrCOMM TTY driver state
+ */
+struct ircomm_tty_cb {
+       irda_queue_t queue;            /* Must be first */
+       struct tty_port port;
+       magic_t magic;
+
+       int state;                /* Connect state */
+
+       struct ircomm_cb *ircomm; /* IrCOMM layer instance */
+
+       struct sk_buff *tx_skb;   /* Transmit buffer */
+       struct sk_buff *ctrl_skb; /* Control data buffer */
+
+       /* Parameters */
+       struct ircomm_params settings;
+
+       __u8 service_type;        /* The service that we support */
+       int client;               /* True if we are a client */
+       LOCAL_FLOW flow;          /* IrTTP flow status */
+
+       int line;
+
+       __u8 dlsap_sel;
+       __u8 slsap_sel;
+
+       __u32 saddr;
+       __u32 daddr;
+
+       __u32 max_data_size;   /* Max data we can transmit in one packet */
+       __u32 max_header_size; /* The amount of header space we must reserve */
+       __u32 tx_data_size;     /* Max data size of current tx_skb */
+
+       struct iriap_cb *iriap; /* Instance used for querying remote IAS */
+       struct ias_object* obj;
+       void *skey;
+       void *ckey;
+
+       struct timer_list watchdog_timer;
+       struct work_struct  tqueue;
+
+       /* Protect concurent access to :
+        *      o self->ctrl_skb
+        *      o self->tx_skb
+        * Maybe other things may gain to be protected as well...
+        * Jean II */
+       spinlock_t spinlock;
+};
+
+void ircomm_tty_start(struct tty_struct *tty);
+void ircomm_tty_check_modem_status(struct ircomm_tty_cb *self);
+
+int ircomm_tty_tiocmget(struct tty_struct *tty);
+int ircomm_tty_tiocmset(struct tty_struct *tty, unsigned int set,
+                       unsigned int clear);
+int ircomm_tty_ioctl(struct tty_struct *tty, unsigned int cmd,
+                    unsigned long arg);
+void ircomm_tty_set_termios(struct tty_struct *tty,
+                           struct ktermios *old_termios);
+
+#endif
+
+
+
+
+
+
+
diff --git a/drivers/staging/irda/include/net/irda/ircomm_tty_attach.h b/drivers/staging/irda/include/net/irda/ircomm_tty_attach.h
new file mode 100644 (file)
index 0000000..20dcbdf
--- /dev/null
@@ -0,0 +1,92 @@
+/*********************************************************************
+ *                
+ * Filename:      ircomm_tty_attach.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Wed Jun  9 15:55:18 1999
+ * Modified at:   Fri Dec 10 21:04:55 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRCOMM_TTY_ATTACH_H
+#define IRCOMM_TTY_ATTACH_H
+
+#include <net/irda/ircomm_tty.h>
+
+typedef enum {
+        IRCOMM_TTY_IDLE,
+       IRCOMM_TTY_SEARCH,
+        IRCOMM_TTY_QUERY_PARAMETERS,
+       IRCOMM_TTY_QUERY_LSAP_SEL,
+       IRCOMM_TTY_SETUP,
+        IRCOMM_TTY_READY,
+} IRCOMM_TTY_STATE;
+
+/* IrCOMM TTY Events */
+typedef enum {
+       IRCOMM_TTY_ATTACH_CABLE,
+       IRCOMM_TTY_DETACH_CABLE,
+       IRCOMM_TTY_DATA_REQUEST,
+       IRCOMM_TTY_DATA_INDICATION,
+       IRCOMM_TTY_DISCOVERY_REQUEST,
+       IRCOMM_TTY_DISCOVERY_INDICATION,
+       IRCOMM_TTY_CONNECT_CONFIRM,
+       IRCOMM_TTY_CONNECT_INDICATION,
+       IRCOMM_TTY_DISCONNECT_REQUEST,
+       IRCOMM_TTY_DISCONNECT_INDICATION,
+       IRCOMM_TTY_WD_TIMER_EXPIRED,
+       IRCOMM_TTY_GOT_PARAMETERS,
+       IRCOMM_TTY_GOT_LSAPSEL,
+} IRCOMM_TTY_EVENT;
+
+/* Used for passing information through the state-machine */
+struct ircomm_tty_info {
+        __u32     saddr;               /* Source device address */
+        __u32     daddr;               /* Destination device address */
+        __u8      dlsap_sel;
+};
+
+extern const char *const ircomm_state[];
+extern const char *const ircomm_tty_state[];
+
+int ircomm_tty_do_event(struct ircomm_tty_cb *self, IRCOMM_TTY_EVENT event,
+                       struct sk_buff *skb, struct ircomm_tty_info *info);
+
+
+int  ircomm_tty_attach_cable(struct ircomm_tty_cb *self);
+void ircomm_tty_detach_cable(struct ircomm_tty_cb *self);
+void ircomm_tty_connect_confirm(void *instance, void *sap, 
+                               struct qos_info *qos, 
+                               __u32 max_sdu_size, 
+                               __u8 max_header_size, 
+                               struct sk_buff *skb);
+void ircomm_tty_disconnect_indication(void *instance, void *sap, 
+                                     LM_REASON reason,
+                                     struct sk_buff *skb);
+void ircomm_tty_connect_indication(void *instance, void *sap, 
+                                  struct qos_info *qos, 
+                                  __u32 max_sdu_size,
+                                  __u8 max_header_size, 
+                                  struct sk_buff *skb);
+int ircomm_tty_send_initial_parameters(struct ircomm_tty_cb *self);
+void ircomm_tty_link_established(struct ircomm_tty_cb *self);
+
+#endif /* IRCOMM_TTY_ATTACH_H */
diff --git a/drivers/staging/irda/include/net/irda/irda.h b/drivers/staging/irda/include/net/irda/irda.h
new file mode 100644 (file)
index 0000000..92c8fb5
--- /dev/null
@@ -0,0 +1,115 @@
+/*********************************************************************
+ *                
+ * Filename:      irda.h
+ * Version:       1.0
+ * Description:   IrDA common include file for kernel internal use
+ * Status:        Stable
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Dec  9 21:13:12 1997
+ * Modified at:   Fri Jan 28 13:16:32 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *      
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *     
+ ********************************************************************/
+
+#ifndef NET_IRDA_H
+#define NET_IRDA_H
+
+#include <linux/skbuff.h>              /* struct sk_buff */
+#include <linux/kernel.h>
+#include <linux/if.h>                  /* sa_family_t in <linux/irda.h> */
+#include <linux/irda.h>
+
+typedef __u32 magic_t;
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE 
+#define FALSE 0
+#endif
+
+/* Hack to do small backoff when setting media busy in IrLAP */
+#ifndef SMALL
+#define SMALL 5
+#endif
+
+#ifndef IRDA_MIN /* Lets not mix this MIN with other header files */
+#define IRDA_MIN(a, b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef IRDA_ALIGN
+#  define IRDA_ALIGN __attribute__((aligned))
+#endif
+
+#ifdef CONFIG_IRDA_DEBUG
+#define IRDA_ASSERT(expr, func) \
+do { if(!(expr)) { \
+       printk( "Assertion failed! %s:%s:%d %s\n", \
+               __FILE__,__func__,__LINE__,(#expr) ); \
+       func } } while (0)
+#define IRDA_ASSERT_LABEL(label)       label
+#else
+#define IRDA_ASSERT(expr, func) do { (void)(expr); } while (0)
+#define IRDA_ASSERT_LABEL(label)
+#endif /* CONFIG_IRDA_DEBUG */
+
+/*
+ *  Magic numbers used by Linux-IrDA. Random numbers which must be unique to 
+ *  give the best protection
+ */
+
+#define IRTTY_MAGIC        0x2357
+#define LAP_MAGIC          0x1357
+#define LMP_MAGIC          0x4321
+#define LMP_LSAP_MAGIC     0x69333
+#define LMP_LAP_MAGIC      0x3432
+#define IRDA_DEVICE_MAGIC  0x63454
+#define IAS_MAGIC          0x007
+#define TTP_MAGIC          0x241169
+#define TTP_TSAP_MAGIC     0x4345
+#define IROBEX_MAGIC       0x341324
+#define HB_MAGIC           0x64534
+#define IRLAN_MAGIC        0x754
+#define IAS_OBJECT_MAGIC   0x34234
+#define IAS_ATTRIB_MAGIC   0x45232
+#define IRDA_TASK_MAGIC    0x38423
+
+#define IAS_DEVICE_ID 0x0000 /* Defined by IrDA, IrLMP section 4.1 (page 68) */
+#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
+
+struct net_device;
+struct packet_type;
+
+void irda_proc_register(void);
+void irda_proc_unregister(void);
+
+int irda_sysctl_register(void);
+void irda_sysctl_unregister(void);
+
+int irsock_init(void);
+void irsock_cleanup(void);
+
+int irda_nl_register(void);
+void irda_nl_unregister(void);
+
+int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev,
+                    struct packet_type *ptype, struct net_device *orig_dev);
+
+#endif /* NET_IRDA_H */
diff --git a/drivers/staging/irda/include/net/irda/irda_device.h b/drivers/staging/irda/include/net/irda/irda_device.h
new file mode 100644 (file)
index 0000000..664bf81
--- /dev/null
@@ -0,0 +1,285 @@
+/*********************************************************************
+ *                
+ * Filename:      irda_device.h
+ * Version:       0.9
+ * Description:   Contains various declarations used by the drivers
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Apr 14 12:41:42 1998
+ * Modified at:   Mon Mar 20 09:08:57 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
+ *     Copyright (c) 1998 Thomas Davis, <ratbert@radiks.net>,
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+/*
+ * This header contains all the IrDA definitions a driver really
+ * needs, and therefore the driver should not need to include
+ * any other IrDA headers - Jean II
+ */
+
+#ifndef IRDA_DEVICE_H
+#define IRDA_DEVICE_H
+
+#include <linux/tty.h>
+#include <linux/netdevice.h>
+#include <linux/spinlock.h>
+#include <linux/skbuff.h>              /* struct sk_buff */
+#include <linux/irda.h>
+#include <linux/types.h>
+
+#include <net/pkt_sched.h>
+#include <net/irda/irda.h>
+#include <net/irda/qos.h>              /* struct qos_info */
+#include <net/irda/irqueue.h>          /* irda_queue_t */
+
+/* A few forward declarations (to make compiler happy) */
+struct irlap_cb;
+
+/* Some non-standard interface flags (should not conflict with any in if.h) */
+#define IFF_SIR        0x0001 /* Supports SIR speeds */
+#define IFF_MIR        0x0002 /* Supports MIR speeds */
+#define IFF_FIR        0x0004 /* Supports FIR speeds */
+#define IFF_VFIR        0x0008 /* Supports VFIR speeds */
+#define IFF_PIO        0x0010 /* Supports PIO transfer of data */
+#define IFF_DMA                0x0020 /* Supports DMA transfer of data */
+#define IFF_SHM         0x0040 /* Supports shared memory data transfers */
+#define IFF_DONGLE      0x0080 /* Interface has a dongle attached */
+#define IFF_AIR         0x0100 /* Supports Advanced IR (AIR) standards */
+
+#define IO_XMIT 0x01
+#define IO_RECV 0x02
+
+typedef enum {
+       IRDA_IRLAP, /* IrDA mode, and deliver to IrLAP */
+       IRDA_RAW,   /* IrDA mode */
+       SHARP_ASK,
+       TV_REMOTE,  /* Also known as Consumer Electronics IR */
+} INFRARED_MODE;
+
+typedef enum {
+       IRDA_TASK_INIT,        /* All tasks are initialized with this state */
+       IRDA_TASK_DONE,        /* Signals that the task is finished */
+       IRDA_TASK_WAIT,
+       IRDA_TASK_WAIT1,
+       IRDA_TASK_WAIT2,
+       IRDA_TASK_WAIT3,
+       IRDA_TASK_CHILD_INIT,  /* Initializing child task */
+       IRDA_TASK_CHILD_WAIT,  /* Waiting for child task to finish */
+       IRDA_TASK_CHILD_DONE   /* Child task is finished */
+} IRDA_TASK_STATE;
+
+struct irda_task;
+typedef int (*IRDA_TASK_CALLBACK) (struct irda_task *task);
+
+struct irda_task {
+       irda_queue_t q;
+       magic_t magic;
+
+       IRDA_TASK_STATE state;
+       IRDA_TASK_CALLBACK function;
+       IRDA_TASK_CALLBACK finished;
+
+       struct irda_task *parent;
+       struct timer_list timer;
+
+       void *instance; /* Instance being called */
+       void *param;    /* Parameter to be used by instance */
+};
+
+/* Dongle info */
+struct dongle_reg;
+typedef struct {
+       struct dongle_reg *issue;     /* Registration info */
+       struct net_device *dev;           /* Device we are attached to */
+       struct irda_task *speed_task; /* Task handling speed change */
+       struct irda_task *reset_task; /* Task handling reset */
+       __u32 speed;                  /* Current speed */
+
+       /* Callbacks to the IrDA device driver */
+       int (*set_mode)(struct net_device *, int mode);
+       int (*read)(struct net_device *dev, __u8 *buf, int len);
+       int (*write)(struct net_device *dev, __u8 *buf, int len);
+       int (*set_dtr_rts)(struct net_device *dev, int dtr, int rts);
+} dongle_t;
+
+/* Dongle registration info */
+struct dongle_reg {
+       irda_queue_t q;         /* Must be first */
+       IRDA_DONGLE type;
+
+       void (*open)(dongle_t *dongle, struct qos_info *qos);
+       void (*close)(dongle_t *dongle);
+       int  (*reset)(struct irda_task *task);
+       int  (*change_speed)(struct irda_task *task);
+       struct module *owner;
+};
+
+/* 
+ * Per-packet information we need to hide inside sk_buff 
+ * (must not exceed 48 bytes, check with struct sk_buff)
+ * The default_qdisc_pad field is a temporary hack.
+ */
+struct irda_skb_cb {
+       unsigned int default_qdisc_pad;
+       magic_t magic;       /* Be sure that we can trust the information */
+       __u32   next_speed;  /* The Speed to be set *after* this frame */
+       __u16   mtt;         /* Minimum turn around time */
+       __u16   xbofs;       /* Number of xbofs required, used by SIR mode */
+       __u16   next_xbofs;  /* Number of xbofs required *after* this frame */
+       void    *context;    /* May be used by drivers */
+       void    (*destructor)(struct sk_buff *skb); /* Used for flow control */
+       __u16   xbofs_delay; /* Number of xbofs used for generating the mtt */
+       __u8    line;        /* Used by IrCOMM in IrLPT mode */
+};
+
+/* Chip specific info */
+typedef struct {
+       int cfg_base;         /* Config register IO base */
+        int sir_base;         /* SIR IO base */
+       int fir_base;         /* FIR IO base */
+       int mem_base;         /* Shared memory base */
+        int sir_ext;          /* Length of SIR iobase */
+       int fir_ext;          /* Length of FIR iobase */
+        int irq, irq2;        /* Interrupts used */
+        int dma, dma2;        /* DMA channel(s) used */
+        int fifo_size;        /* FIFO size */
+        int irqflags;         /* interrupt flags (ie, IRQF_SHARED) */
+       int direction;        /* Link direction, used by some FIR drivers */
+       int enabled;          /* Powered on? */
+       int suspended;        /* Suspended by APM */
+       __u32 speed;          /* Currently used speed */
+       __u32 new_speed;      /* Speed we must change to when Tx is finished */
+       int dongle_id;        /* Dongle or transceiver currently used */
+} chipio_t;
+
+/* IO buffer specific info (inspired by struct sk_buff) */
+typedef struct {
+       int state;            /* Receiving state (transmit state not used) */
+       int in_frame;         /* True if receiving frame */
+
+       __u8 *head;           /* start of buffer */
+       __u8 *data;           /* start of data in buffer */
+
+       int len;              /* current length of data */
+       int truesize;         /* total allocated size of buffer */
+       __u16 fcs;
+
+       struct sk_buff *skb;    /* ZeroCopy Rx in async_unwrap_char() */
+} iobuff_t;
+
+/* Maximum SIR frame (skb) that we expect to receive *unwrapped*.
+ * Max LAP MTU (I field) is 2048 bytes max (IrLAP 1.1, chapt 6.6.5, p40).
+ * Max LAP header is 2 bytes (for now).
+ * Max CRC is 2 bytes at SIR, 4 bytes at FIR. 
+ * Need 1 byte for skb_reserve() to align IP header for IrLAN.
+ * Add a few extra bytes just to be safe (buffer is power of two anyway)
+ * Jean II */
+#define IRDA_SKB_MAX_MTU       2064
+/* Maximum SIR frame that we expect to send, wrapped (i.e. with XBOFS
+ * and escaped characters on top of above). */
+#define IRDA_SIR_MAX_FRAME     4269
+
+/* The SIR unwrapper async_unwrap_char() will use a Rx-copy-break mechanism
+ * when using the optional ZeroCopy Rx, where only small frames are memcpy
+ * to a smaller skb to save memory. This is the threshold under which copy
+ * will happen (and over which it won't happen).
+ * Some FIR drivers may use this #define as well...
+ * This is the same value as various Ethernet drivers. - Jean II */
+#define IRDA_RX_COPY_THRESHOLD  256
+
+/* Function prototypes */
+int  irda_device_init(void);
+void irda_device_cleanup(void);
+
+/* IrLAP entry points used by the drivers.
+ * We declare them here to avoid the driver pulling a whole bunch stack
+ * headers they don't really need - Jean II */
+struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos,
+                           const char *hw_name);
+void irlap_close(struct irlap_cb *self);
+
+/* Interface to be uses by IrLAP */
+void irda_device_set_media_busy(struct net_device *dev, int status);
+int  irda_device_is_media_busy(struct net_device *dev);
+int  irda_device_is_receiving(struct net_device *dev);
+
+/* Interface for internal use */
+static inline int irda_device_txqueue_empty(const struct net_device *dev)
+{
+       return qdisc_all_tx_empty(dev);
+}
+int  irda_device_set_raw_mode(struct net_device* self, int status);
+struct net_device *alloc_irdadev(int sizeof_priv);
+
+void irda_setup_dma(int channel, dma_addr_t buffer, int count, int mode);
+
+/*
+ * Function irda_get_mtt (skb)
+ *
+ *    Utility function for getting the minimum turnaround time out of 
+ *    the skb, where it has been hidden in the cb field.
+ */
+static inline __u16 irda_get_mtt(const struct sk_buff *skb)
+{
+       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
+       return (cb->magic == LAP_MAGIC) ? cb->mtt : 10000;
+}
+
+/*
+ * Function irda_get_next_speed (skb)
+ *
+ *    Extract the speed that should be set *after* this frame from the skb
+ *
+ * Note : return -1 for user space frames
+ */
+static inline __u32 irda_get_next_speed(const struct sk_buff *skb)
+{
+       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
+       return (cb->magic == LAP_MAGIC) ? cb->next_speed : -1;
+}
+
+/*
+ * Function irda_get_next_xbofs (skb)
+ *
+ *    Extract the xbofs that should be set for this frame from the skb
+ *
+ * Note : default to 10 for user space frames
+ */
+static inline __u16 irda_get_xbofs(const struct sk_buff *skb)
+{
+       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
+       return (cb->magic == LAP_MAGIC) ? cb->xbofs : 10;
+}
+
+/*
+ * Function irda_get_next_xbofs (skb)
+ *
+ *    Extract the xbofs that should be set *after* this frame from the skb
+ *
+ * Note : return -1 for user space frames
+ */
+static inline __u16 irda_get_next_xbofs(const struct sk_buff *skb)
+{
+       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
+       return (cb->magic == LAP_MAGIC) ? cb->next_xbofs : -1;
+}
+#endif /* IRDA_DEVICE_H */
+
+
diff --git a/drivers/staging/irda/include/net/irda/iriap.h b/drivers/staging/irda/include/net/irda/iriap.h
new file mode 100644 (file)
index 0000000..fcc8964
--- /dev/null
@@ -0,0 +1,108 @@
+/*********************************************************************
+ *                
+ * Filename:      iriap.h
+ * Version:       0.5
+ * Description:   Information Access Protocol (IAP)
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Thu Aug 21 00:02:07 1997
+ * Modified at:   Sat Dec 25 16:42:09 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1997-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRIAP_H
+#define IRIAP_H
+
+#include <linux/types.h>
+#include <linux/skbuff.h>
+
+#include <net/irda/iriap_event.h>
+#include <net/irda/irias_object.h>
+#include <net/irda/irqueue.h>          /* irda_queue_t */
+#include <net/irda/timer.h>            /* struct timer_list */
+
+#define IAP_LST 0x80
+#define IAP_ACK 0x40
+
+#define IAS_SERVER 0
+#define IAS_CLIENT 1
+
+/* IrIAP Op-codes */
+#define GET_INFO_BASE      0x01
+#define GET_OBJECTS        0x02
+#define GET_VALUE          0x03
+#define GET_VALUE_BY_CLASS 0x04
+#define GET_OBJECT_INFO    0x05
+#define GET_ATTRIB_NAMES   0x06
+
+#define IAS_SUCCESS        0
+#define IAS_CLASS_UNKNOWN  1
+#define IAS_ATTRIB_UNKNOWN 2
+#define IAS_DISCONNECT     10
+
+typedef void (*CONFIRM_CALLBACK)(int result, __u16 obj_id, 
+                                struct ias_value *value, void *priv);
+
+struct iriap_cb {
+       irda_queue_t q; /* Must be first */     
+       magic_t magic;  /* Magic cookie */
+
+       int          mode;   /* Client or server */
+
+       __u32        saddr;
+       __u32        daddr;
+       __u8         operation;
+
+       struct sk_buff *request_skb;
+       struct lsap_cb *lsap;
+       __u8 slsap_sel;
+
+       /* Client states */
+       IRIAP_STATE client_state;
+       IRIAP_STATE call_state;
+       
+       /* Server states */
+       IRIAP_STATE server_state;
+       IRIAP_STATE r_connect_state;
+       
+       CONFIRM_CALLBACK confirm;
+       void *priv;                /* Used to identify client */
+
+       __u8 max_header_size;
+       __u32 max_data_size;
+       
+       struct timer_list watchdog_timer;
+};
+
+int  iriap_init(void);
+void iriap_cleanup(void);
+
+struct iriap_cb *iriap_open(__u8 slsap_sel, int mode, void *priv, 
+                           CONFIRM_CALLBACK callback);
+void iriap_close(struct iriap_cb *self);
+
+int iriap_getvaluebyclass_request(struct iriap_cb *self, 
+                                 __u32 saddr, __u32 daddr,
+                                 char *name, char *attr);
+void iriap_connect_request(struct iriap_cb *self);
+void iriap_send_ack( struct iriap_cb *self);
+void iriap_call_indication(struct iriap_cb *self, struct sk_buff *skb);
+
+void iriap_register_server(void);
+
+#endif
+
+
diff --git a/drivers/staging/irda/include/net/irda/iriap_event.h b/drivers/staging/irda/include/net/irda/iriap_event.h
new file mode 100644 (file)
index 0000000..89747f0
--- /dev/null
@@ -0,0 +1,85 @@
+/*********************************************************************
+ *                
+ * Filename:      iriap_event.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Sun Oct 31 22:02:54 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRIAP_FSM_H
+#define IRIAP_FSM_H
+
+/* Forward because of circular include dependecies */
+struct iriap_cb;
+
+/* IrIAP states */
+typedef enum {
+       /* Client */
+       S_DISCONNECT,
+       S_CONNECTING,
+       S_CALL,
+
+       /* S-Call */
+       S_MAKE_CALL,
+       S_CALLING,
+       S_OUTSTANDING,
+       S_REPLYING,
+       S_WAIT_FOR_CALL,
+       S_WAIT_ACTIVE,
+
+       /* Server */
+       R_DISCONNECT,
+       R_CALL,
+       
+       /* R-Connect */
+       R_WAITING,
+       R_WAIT_ACTIVE,
+       R_RECEIVING,
+       R_EXECUTE,
+       R_RETURNING,
+} IRIAP_STATE;
+
+typedef enum {
+       IAP_CALL_REQUEST,
+       IAP_CALL_REQUEST_GVBC,
+       IAP_CALL_RESPONSE,
+       IAP_RECV_F_LST,
+       IAP_LM_DISCONNECT_INDICATION,
+       IAP_LM_CONNECT_INDICATION,
+       IAP_LM_CONNECT_CONFIRM,
+} IRIAP_EVENT;
+
+void iriap_next_client_state   (struct iriap_cb *self, IRIAP_STATE state);
+void iriap_next_call_state     (struct iriap_cb *self, IRIAP_STATE state);
+void iriap_next_server_state   (struct iriap_cb *self, IRIAP_STATE state);
+void iriap_next_r_connect_state(struct iriap_cb *self, IRIAP_STATE state);
+
+
+void iriap_do_client_event(struct iriap_cb *self, IRIAP_EVENT event, 
+                          struct sk_buff *skb);
+void iriap_do_call_event  (struct iriap_cb *self, IRIAP_EVENT event, 
+                          struct sk_buff *skb);
+
+void iriap_do_server_event   (struct iriap_cb *self, IRIAP_EVENT event, 
+                             struct sk_buff *skb);
+void iriap_do_r_connect_event(struct iriap_cb *self, IRIAP_EVENT event, 
+                             struct sk_buff *skb);
+
+#endif /* IRIAP_FSM_H */
+
diff --git a/drivers/staging/irda/include/net/irda/irias_object.h b/drivers/staging/irda/include/net/irda/irias_object.h
new file mode 100644 (file)
index 0000000..83f7808
--- /dev/null
@@ -0,0 +1,108 @@
+/*********************************************************************
+ *                
+ * Filename:      irias_object.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Thu Oct  1 22:49:50 1998
+ * Modified at:   Wed Dec 15 11:20:57 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved.
+ *      
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *     
+ ********************************************************************/
+
+#ifndef LM_IAS_OBJECT_H
+#define LM_IAS_OBJECT_H
+
+#include <net/irda/irda.h>
+#include <net/irda/irqueue.h>
+
+/* LM-IAS Attribute types */
+#define IAS_MISSING 0
+#define IAS_INTEGER 1
+#define IAS_OCT_SEQ 2
+#define IAS_STRING  3
+
+/* Object ownership of attributes (user or kernel) */
+#define IAS_KERNEL_ATTR        0
+#define IAS_USER_ATTR  1
+
+/*
+ *  LM-IAS Object
+ */
+struct ias_object {
+       irda_queue_t q;     /* Must be first! */
+       magic_t magic;
+       
+       char  *name;
+       int   id;
+       hashbin_t *attribs;
+};
+
+/*
+ *  Values used by LM-IAS attributes
+ */
+struct ias_value {
+        __u8    type;    /* Value description */
+       __u8    owner;  /* Managed from user/kernel space */
+       int     charset; /* Only used by string type */
+        int     len;
+       
+       /* Value */
+       union {
+               int integer;
+               char *string;
+               __u8 *oct_seq;
+       } t;
+};
+
+/*
+ *  Attributes used by LM-IAS objects
+ */
+struct ias_attrib {
+       irda_queue_t q; /* Must be first! */
+       int magic;
+
+        char *name;             /* Attribute name */
+       struct ias_value *value; /* Attribute value */
+};
+
+struct ias_object *irias_new_object(char *name, int id);
+void irias_insert_object(struct ias_object *obj);
+int  irias_delete_object(struct ias_object *obj);
+int  irias_delete_attrib(struct ias_object *obj, struct ias_attrib *attrib,
+                        int cleanobject);
+void __irias_delete_object(struct ias_object *obj);
+
+void irias_add_integer_attrib(struct ias_object *obj, char *name, int value,
+                             int user);
+void irias_add_string_attrib(struct ias_object *obj, char *name, char *value,
+                            int user);
+void irias_add_octseq_attrib(struct ias_object *obj, char *name, __u8 *octets,
+                            int len, int user);
+int irias_object_change_attribute(char *obj_name, char *attrib_name, 
+                                 struct ias_value *new_value);
+struct ias_object *irias_find_object(char *name);
+struct ias_attrib *irias_find_attrib(struct ias_object *obj, char *name);
+
+struct ias_value *irias_new_string_value(char *string);
+struct ias_value *irias_new_integer_value(int integer);
+struct ias_value *irias_new_octseq_value(__u8 *octseq , int len);
+struct ias_value *irias_new_missing_value(void);
+void irias_delete_value(struct ias_value *value);
+
+extern struct ias_value irias_missing;
+extern hashbin_t *irias_objects;
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlan_client.h b/drivers/staging/irda/include/net/irda/irlan_client.h
new file mode 100644 (file)
index 0000000..fa8455e
--- /dev/null
@@ -0,0 +1,42 @@
+/*********************************************************************
+ *                
+ * Filename:      irlan_client.h
+ * Version:       0.3
+ * Description:   IrDA LAN access layer
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Aug 31 20:14:37 1997
+ * Modified at:   Thu Apr 22 14:13:34 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLAN_CLIENT_H
+#define IRLAN_CLIENT_H
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+
+#include <net/irda/irias_object.h>
+#include <net/irda/irlan_event.h>
+
+void irlan_client_discovery_indication(discinfo_t *, DISCOVERY_MODE, void *);
+void irlan_client_wakeup(struct irlan_cb *self, __u32 saddr, __u32 daddr);
+
+void irlan_client_parse_response(struct irlan_cb *self, struct sk_buff *skb);
+void irlan_client_get_value_confirm(int result, __u16 obj_id, 
+                                   struct ias_value *value, void *priv);
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlan_common.h b/drivers/staging/irda/include/net/irda/irlan_common.h
new file mode 100644 (file)
index 0000000..550c2d6
--- /dev/null
@@ -0,0 +1,230 @@
+/*********************************************************************
+ *                
+ * Filename:      irlan_common.h
+ * Version:       0.8
+ * Description:   IrDA LAN access layer
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Aug 31 20:14:37 1997
+ * Modified at:   Sun Oct 31 19:41:24 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLAN_H
+#define IRLAN_H
+
+#include <asm/param.h>  /* for HZ */
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <linux/if_ether.h>
+
+#include <net/irda/irttp.h>
+
+#define IRLAN_MTU        1518
+#define IRLAN_TIMEOUT    10*HZ /* 10 seconds */
+
+/* Command packet types */
+#define CMD_GET_PROVIDER_INFO   0
+#define CMD_GET_MEDIA_CHAR      1
+#define CMD_OPEN_DATA_CHANNEL   2
+#define CMD_CLOSE_DATA_CHAN     3
+#define CMD_RECONNECT_DATA_CHAN 4
+#define CMD_FILTER_OPERATION    5
+
+/* Some responses */
+#define RSP_SUCCESS                 0
+#define RSP_INSUFFICIENT_RESOURCES  1
+#define RSP_INVALID_COMMAND_FORMAT  2
+#define RSP_COMMAND_NOT_SUPPORTED   3
+#define RSP_PARAM_NOT_SUPPORTED     4
+#define RSP_VALUE_NOT_SUPPORTED     5
+#define RSP_NOT_OPEN                6
+#define RSP_AUTHENTICATION_REQUIRED 7
+#define RSP_INVALID_PASSWORD        8
+#define RSP_PROTOCOL_ERROR          9
+#define RSP_ASYNCHRONOUS_ERROR    255
+
+/* Media types */
+#define MEDIA_802_3 1
+#define MEDIA_802_5 2
+
+/* Filter parameters */
+#define DATA_CHAN   1
+#define FILTER_TYPE 2
+#define FILTER_MODE 3
+
+/* Filter types */
+#define IRLAN_DIRECTED   0x01
+#define IRLAN_FUNCTIONAL 0x02
+#define IRLAN_GROUP      0x04
+#define IRLAN_MAC_FRAME  0x08
+#define IRLAN_MULTICAST  0x10
+#define IRLAN_BROADCAST  0x20
+#define IRLAN_IPX_SOCKET 0x40
+
+/* Filter modes */
+#define ALL     1
+#define FILTER  2
+#define NONE    3
+
+/* Filter operations */
+#define GET     1
+#define CLEAR   2
+#define ADD     3
+#define REMOVE  4
+#define DYNAMIC 5
+
+/* Access types */
+#define ACCESS_DIRECT  1
+#define ACCESS_PEER    2
+#define ACCESS_HOSTED  3
+
+#define IRLAN_BYTE   0
+#define IRLAN_SHORT  1
+#define IRLAN_ARRAY  2
+
+/* IrLAN sits on top if IrTTP */
+#define IRLAN_MAX_HEADER (TTP_HEADER+LMP_HEADER)
+/* 1 byte for the command code and 1 byte for the parameter count */
+#define IRLAN_CMD_HEADER 2
+
+#define IRLAN_STRING_PARAMETER_LEN(name, value) (1 + strlen((name)) + 2 \
+                                               + strlen ((value)))
+#define IRLAN_BYTE_PARAMETER_LEN(name)          (1 + strlen((name)) + 2 + 1)
+#define IRLAN_SHORT_PARAMETER_LEN(name)         (1 + strlen((name)) + 2 + 2)
+
+/*
+ *  IrLAN client
+ */
+struct irlan_client_cb {
+       int state;
+
+       int open_retries;
+
+       struct tsap_cb *tsap_ctrl;
+       __u32 max_sdu_size;
+       __u8  max_header_size;
+       
+       int access_type;         /* Access type of provider */
+       __u8 reconnect_key[255];
+       __u8 key_len;
+       
+       __u16 recv_arb_val;
+       __u16 max_frame;
+       int filter_type;
+
+       int unicast_open;
+       int broadcast_open;
+
+       int tx_busy;
+       struct sk_buff_head txq; /* Transmit control queue */
+
+       struct iriap_cb *iriap;
+
+       struct timer_list kick_timer;
+};
+
+/*
+ * IrLAN provider
+ */
+struct irlan_provider_cb {
+       int state;
+       
+       struct tsap_cb *tsap_ctrl;
+       __u32 max_sdu_size;
+       __u8  max_header_size;
+
+       /*
+        *  Store some values here which are used by the provider to parse
+        *  the filter operations
+        */
+       int data_chan;
+       int filter_type;
+       int filter_mode;
+       int filter_operation;
+       int filter_entry;
+       int access_type;     /* Access type */
+       __u16 send_arb_val;
+
+       __u8 mac_address[ETH_ALEN]; /* Generated MAC address for peer device */
+};
+
+/*
+ *  IrLAN control block
+ */
+struct irlan_cb {
+       int    magic;
+       struct list_head  dev_list;
+       struct net_device *dev;        /* Ethernet device structure*/
+
+       __u32 saddr;               /* Source device address */
+       __u32 daddr;               /* Destination device address */
+       int disconnect_reason;     /* Why we got disconnected */
+       
+       int media;                 /* Media type */
+       __u8 version[2];           /* IrLAN version */
+       
+       struct tsap_cb *tsap_data; /* Data TSAP */
+
+       int  use_udata;            /* Use Unit Data transfers */
+
+       __u8 stsap_sel_data;       /* Source data TSAP selector */
+       __u8 dtsap_sel_data;       /* Destination data TSAP selector */
+       __u8 dtsap_sel_ctrl;       /* Destination ctrl TSAP selector */
+
+       struct irlan_client_cb   client;   /* Client specific fields */
+       struct irlan_provider_cb provider; /* Provider specific fields */
+
+       __u32 max_sdu_size;
+       __u8  max_header_size;
+       
+       wait_queue_head_t open_wait;
+       struct timer_list watchdog_timer;
+};
+
+void irlan_close(struct irlan_cb *self);
+void irlan_close_tsaps(struct irlan_cb *self);
+
+int  irlan_register_netdev(struct irlan_cb *self);
+void irlan_ias_register(struct irlan_cb *self, __u8 tsap_sel);
+void irlan_start_watchdog_timer(struct irlan_cb *self, int timeout);
+
+void irlan_open_data_tsap(struct irlan_cb *self);
+
+int irlan_run_ctrl_tx_queue(struct irlan_cb *self);
+
+struct irlan_cb *irlan_get_any(void);
+void irlan_get_provider_info(struct irlan_cb *self);
+void irlan_get_media_char(struct irlan_cb *self);
+void irlan_open_data_channel(struct irlan_cb *self);
+void irlan_close_data_channel(struct irlan_cb *self);
+void irlan_set_multicast_filter(struct irlan_cb *self, int status);
+void irlan_set_broadcast_filter(struct irlan_cb *self, int status);
+
+int irlan_insert_byte_param(struct sk_buff *skb, char *param, __u8 value);
+int irlan_insert_short_param(struct sk_buff *skb, char *param, __u16 value);
+int irlan_insert_string_param(struct sk_buff *skb, char *param, char *value);
+int irlan_insert_array_param(struct sk_buff *skb, char *name, __u8 *value, 
+                            __u16 value_len);
+
+int irlan_extract_param(__u8 *buf, char *name, char *value, __u16 *len);
+
+#endif
+
+
diff --git a/drivers/staging/irda/include/net/irda/irlan_eth.h b/drivers/staging/irda/include/net/irda/irlan_eth.h
new file mode 100644 (file)
index 0000000..de5c816
--- /dev/null
@@ -0,0 +1,32 @@
+/*********************************************************************
+ *                
+ * Filename:      irlan_eth.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Thu Oct 15 08:36:58 1998
+ * Modified at:   Fri May 14 23:29:00 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved.
+ *      
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *     
+ ********************************************************************/
+
+#ifndef IRLAN_ETH_H
+#define IRLAN_ETH_H
+
+struct net_device *alloc_irlandev(const char *name);
+int  irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb);
+
+void irlan_eth_flow_indication( void *instance, void *sap, LOCAL_FLOW flow);
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlan_event.h b/drivers/staging/irda/include/net/irda/irlan_event.h
new file mode 100644 (file)
index 0000000..018b5a7
--- /dev/null
@@ -0,0 +1,81 @@
+/*********************************************************************
+ *                
+ * Filename:      irlan_event.h
+ * Version:       
+ * Description:   LAN access
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Aug 31 20:14:37 1997
+ * Modified at:   Tue Feb  2 09:45:17 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1997 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLAN_EVENT_H
+#define IRLAN_EVENT_H
+
+#include <linux/kernel.h>
+#include <linux/skbuff.h>
+
+#include <net/irda/irlan_common.h>
+
+typedef enum {
+       IRLAN_IDLE,
+       IRLAN_QUERY,
+       IRLAN_CONN, 
+       IRLAN_INFO,
+       IRLAN_MEDIA,
+       IRLAN_OPEN,
+       IRLAN_WAIT,
+       IRLAN_ARB, 
+       IRLAN_DATA,
+       IRLAN_CLOSE,
+       IRLAN_SYNC
+} IRLAN_STATE;
+
+typedef enum {
+       IRLAN_DISCOVERY_INDICATION,
+       IRLAN_IAS_PROVIDER_AVAIL,
+       IRLAN_IAS_PROVIDER_NOT_AVAIL,
+       IRLAN_LAP_DISCONNECT,
+       IRLAN_LMP_DISCONNECT,
+       IRLAN_CONNECT_COMPLETE,
+       IRLAN_DATA_INDICATION,
+       IRLAN_DATA_CONNECT_INDICATION,
+       IRLAN_RETRY_CONNECT,
+
+       IRLAN_CONNECT_INDICATION,
+       IRLAN_GET_INFO_CMD,
+       IRLAN_GET_MEDIA_CMD,
+       IRLAN_OPEN_DATA_CMD,
+       IRLAN_FILTER_CONFIG_CMD,
+
+       IRLAN_CHECK_CON_ARB,
+       IRLAN_PROVIDER_SIGNAL,
+
+       IRLAN_WATCHDOG_TIMEOUT,
+} IRLAN_EVENT;
+
+extern const char * const irlan_state[];
+
+void irlan_do_client_event(struct irlan_cb *self, IRLAN_EVENT event, 
+                          struct sk_buff *skb);
+
+void irlan_do_provider_event(struct irlan_cb *self, IRLAN_EVENT event, 
+                            struct sk_buff *skb);
+
+void irlan_next_client_state(struct irlan_cb *self, IRLAN_STATE state);
+void irlan_next_provider_state(struct irlan_cb *self, IRLAN_STATE state);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlan_filter.h b/drivers/staging/irda/include/net/irda/irlan_filter.h
new file mode 100644 (file)
index 0000000..a5a2539
--- /dev/null
@@ -0,0 +1,35 @@
+/*********************************************************************
+ *                
+ * Filename:      irlan_filter.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Fri Jan 29 15:24:08 1999
+ * Modified at:   Sun Feb  7 23:35:31 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998 Dag Brattli, All Rights Reserved.
+ *      
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *     
+ ********************************************************************/
+
+#ifndef IRLAN_FILTER_H
+#define IRLAN_FILTER_H
+
+void irlan_check_command_param(struct irlan_cb *self, char *param, 
+                              char *value);
+void irlan_filter_request(struct irlan_cb *self, struct sk_buff *skb);
+#ifdef CONFIG_PROC_FS
+void irlan_print_filter(struct seq_file *seq, int filter_type);
+#endif
+
+#endif /* IRLAN_FILTER_H */
diff --git a/drivers/staging/irda/include/net/irda/irlan_provider.h b/drivers/staging/irda/include/net/irda/irlan_provider.h
new file mode 100644 (file)
index 0000000..92f3b0e
--- /dev/null
@@ -0,0 +1,52 @@
+/*********************************************************************
+ *                
+ * Filename:      irlan_provider.h
+ * Version:       0.1
+ * Description:   IrDA LAN access layer
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Aug 31 20:14:37 1997
+ * Modified at:   Sun May  9 12:26:11 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLAN_SERVER_H
+#define IRLAN_SERVER_H
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+
+#include <net/irda/irlan_common.h>
+
+void irlan_provider_ctrl_disconnect_indication(void *instance, void *sap, 
+                                              LM_REASON reason, 
+                                              struct sk_buff *skb);
+
+
+void irlan_provider_connect_response(struct irlan_cb *, struct tsap_cb *);
+
+int irlan_parse_open_data_cmd(struct irlan_cb *self, struct sk_buff *skb);
+int irlan_provider_parse_command(struct irlan_cb *self, int cmd,
+                                struct sk_buff *skb);
+
+void irlan_provider_send_reply(struct irlan_cb *self, int command, 
+                              int ret_code);
+int irlan_provider_open_ctrl_tsap(struct irlan_cb *self);
+
+#endif
+
+
diff --git a/drivers/staging/irda/include/net/irda/irlap.h b/drivers/staging/irda/include/net/irda/irlap.h
new file mode 100644 (file)
index 0000000..6f23e82
--- /dev/null
@@ -0,0 +1,311 @@
+/*********************************************************************
+ *                
+ * Filename:      irlap.h
+ * Version:       0.8
+ * Description:   An IrDA LAP driver for Linux
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Fri Dec 10 13:21:17 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLAP_H
+#define IRLAP_H
+
+#include <linux/types.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <linux/timer.h>
+
+#include <net/irda/irqueue.h>          /* irda_queue_t */
+#include <net/irda/qos.h>              /* struct qos_info */
+#include <net/irda/discovery.h>                /* discovery_t */
+#include <net/irda/irlap_event.h>      /* IRLAP_STATE, ... */
+#include <net/irda/irmod.h>            /* struct notify_t */
+
+#define CONFIG_IRDA_DYNAMIC_WINDOW 1
+
+#define LAP_RELIABLE   1
+#define LAP_UNRELIABLE 0
+
+#define LAP_ADDR_HEADER 1  /* IrLAP Address Header */
+#define LAP_CTRL_HEADER 1  /* IrLAP Control Header */
+
+/* May be different when we get VFIR */
+#define LAP_MAX_HEADER (LAP_ADDR_HEADER + LAP_CTRL_HEADER)
+
+/* Each IrDA device gets a random 32 bits IRLAP device address */
+#define LAP_ALEN 4
+
+#define BROADCAST  0xffffffff /* Broadcast device address */
+#define CBROADCAST 0xfe       /* Connection broadcast address */
+#define XID_FORMAT 0x01       /* Discovery XID format */
+
+/* Nobody seems to use this constant. */
+#define LAP_WINDOW_SIZE 8
+/* We keep the LAP queue very small to minimise the amount of buffering.
+ * this improve latency and reduce resource consumption.
+ * This work only because we have synchronous refilling of IrLAP through
+ * the flow control mechanism (via scheduler and IrTTP).
+ * 2 buffers is the minimum we can work with, one that we send while polling
+ * IrTTP, and another to know that we should not send the pf bit.
+ * Jean II */
+#define LAP_HIGH_THRESHOLD     2
+/* Some rare non TTP clients don't implement flow control, and
+ * so don't comply with the above limit (and neither with this one).
+ * For IAP and management, it doesn't matter, because they never transmit much.
+ *.For IrLPT, this should be fixed.
+ * - Jean II */
+#define LAP_MAX_QUEUE 10
+/* Please note that all IrDA management frames (LMP/TTP conn req/disc and
+ * IAS queries) fall in the second category and are sent to LAP even if TTP
+ * is stopped. This means that those frames will wait only a maximum of
+ * two (2) data frames before beeing sent on the "wire", which speed up
+ * new socket setup when the link is saturated.
+ * Same story for two sockets competing for the medium : if one saturates
+ * the LAP, when the other want to transmit it only has to wait for
+ * maximum three (3) packets (2 + one scheduling), which improve performance
+ * of delay sensitive applications.
+ * Jean II */
+
+#define NR_EXPECTED     1
+#define NR_UNEXPECTED   0
+#define NR_INVALID     -1
+
+#define NS_EXPECTED     1
+#define NS_UNEXPECTED   0
+#define NS_INVALID     -1
+
+/*
+ *  Meta information passed within the IrLAP state machine
+ */
+struct irlap_info {
+       __u8 caddr;   /* Connection address */
+       __u8 control; /* Frame type */
+        __u8 cmd;
+
+       __u32 saddr;
+       __u32 daddr;
+       
+       int pf;        /* Poll/final bit set */
+
+       __u8  nr;      /* Sequence number of next frame expected */
+       __u8  ns;      /* Sequence number of frame sent */
+
+       int  S;        /* Number of slots */
+       int  slot;     /* Random chosen slot */
+       int  s;        /* Current slot */
+
+       discovery_t *discovery; /* Discovery information */
+};
+
+/* Main structure of IrLAP */
+struct irlap_cb {
+       irda_queue_t q;     /* Must be first */
+       magic_t magic;
+
+       /* Device we are attached to */
+       struct net_device  *netdev;
+       char            hw_name[2*IFNAMSIZ + 1];
+
+       /* Connection state */
+       volatile IRLAP_STATE state;       /* Current state */
+
+       /* Timers used by IrLAP */
+       struct timer_list query_timer;
+       struct timer_list slot_timer;
+       struct timer_list discovery_timer;
+       struct timer_list final_timer;
+       struct timer_list poll_timer;
+       struct timer_list wd_timer;
+       struct timer_list backoff_timer;
+
+       /* Media busy stuff */
+       struct timer_list media_busy_timer;
+       int media_busy;
+
+       /* Timeouts which will be different with different turn time */
+       int slot_timeout;
+       int poll_timeout;
+       int final_timeout;
+       int wd_timeout;
+
+       struct sk_buff_head txq;  /* Frames to be transmitted */
+       struct sk_buff_head txq_ultra;
+
+       __u8    caddr;        /* Connection address */
+       __u32   saddr;        /* Source device address */
+       __u32   daddr;        /* Destination device address */
+
+       int     retry_count;  /* Times tried to establish connection */
+       int     add_wait;     /* True if we are waiting for frame */
+
+       __u8    connect_pending;
+       __u8    disconnect_pending;
+
+       /*  To send a faster RR if tx queue empty */
+#ifdef CONFIG_IRDA_FAST_RR
+       int     fast_RR_timeout;
+       int     fast_RR;      
+#endif /* CONFIG_IRDA_FAST_RR */
+       
+       int N1; /* N1 * F-timer = Negitiated link disconnect warning threshold */
+       int N2; /* N2 * F-timer = Negitiated link disconnect time */
+       int N3; /* Connection retry count */
+
+       int     local_busy;
+       int     remote_busy;
+       int     xmitflag;
+
+       __u8    vs;            /* Next frame to be sent */
+       __u8    vr;            /* Next frame to be received */
+       __u8    va;            /* Last frame acked */
+       int     window;        /* Nr of I-frames allowed to send */
+       int     window_size;   /* Current negotiated window size */
+
+#ifdef CONFIG_IRDA_DYNAMIC_WINDOW
+       __u32   line_capacity; /* Number of bytes allowed to send */
+       __u32   bytes_left;    /* Number of bytes still allowed to transmit */
+#endif /* CONFIG_IRDA_DYNAMIC_WINDOW */
+
+       struct sk_buff_head wx_list;
+
+       __u8    ack_required;
+       
+       /* XID parameters */
+       __u8    S;           /* Number of slots */
+       __u8    slot;        /* Random chosen slot */
+       __u8    s;           /* Current slot */
+       int     frame_sent;  /* Have we sent reply? */
+
+       hashbin_t   *discovery_log;
+       discovery_t *discovery_cmd;
+
+       __u32 speed;            /* Link speed */
+
+       struct qos_info  qos_tx;   /* QoS requested by peer */
+       struct qos_info  qos_rx;   /* QoS requested by self */
+       struct qos_info *qos_dev;  /* QoS supported by device */
+
+       notify_t notify; /* Callbacks to IrLMP */
+
+       int    mtt_required;  /* Minimum turnaround time required */
+       int    xbofs_delay;   /* Nr of XBOF's used to MTT */
+       int    bofs_count;    /* Negotiated extra BOFs */
+       int    next_bofs;     /* Negotiated extra BOFs after next frame */
+
+       int    mode;     /* IrLAP mode (primary, secondary or monitor) */
+};
+
+/* 
+ *  Function prototypes 
+ */
+int irlap_init(void);
+void irlap_cleanup(void);
+
+struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos,
+                           const char *hw_name);
+void irlap_close(struct irlap_cb *self);
+
+void irlap_connect_request(struct irlap_cb *self, __u32 daddr, 
+                          struct qos_info *qos, int sniff);
+void irlap_connect_response(struct irlap_cb *self, struct sk_buff *skb);
+void irlap_connect_indication(struct irlap_cb *self, struct sk_buff *skb);
+void irlap_connect_confirm(struct irlap_cb *, struct sk_buff *skb);
+
+void irlap_data_indication(struct irlap_cb *, struct sk_buff *, int unreliable);
+void irlap_data_request(struct irlap_cb *, struct sk_buff *, int unreliable);
+
+#ifdef CONFIG_IRDA_ULTRA
+void irlap_unitdata_request(struct irlap_cb *, struct sk_buff *);
+void irlap_unitdata_indication(struct irlap_cb *, struct sk_buff *);
+#endif /* CONFIG_IRDA_ULTRA */
+
+void irlap_disconnect_request(struct irlap_cb *);
+void irlap_disconnect_indication(struct irlap_cb *, LAP_REASON reason);
+
+void irlap_status_indication(struct irlap_cb *, int quality_of_link);
+
+void irlap_test_request(__u8 *info, int len);
+
+void irlap_discovery_request(struct irlap_cb *, discovery_t *discovery);
+void irlap_discovery_confirm(struct irlap_cb *, hashbin_t *discovery_log);
+void irlap_discovery_indication(struct irlap_cb *, discovery_t *discovery);
+
+void irlap_reset_indication(struct irlap_cb *self);
+void irlap_reset_confirm(void);
+
+void irlap_update_nr_received(struct irlap_cb *, int nr);
+int irlap_validate_nr_received(struct irlap_cb *, int nr);
+int irlap_validate_ns_received(struct irlap_cb *, int ns);
+
+int  irlap_generate_rand_time_slot(int S, int s);
+void irlap_initiate_connection_state(struct irlap_cb *);
+void irlap_flush_all_queues(struct irlap_cb *);
+void irlap_wait_min_turn_around(struct irlap_cb *, struct qos_info *);
+
+void irlap_apply_default_connection_parameters(struct irlap_cb *self);
+void irlap_apply_connection_parameters(struct irlap_cb *self, int now);
+
+#define IRLAP_GET_HEADER_SIZE(self) (LAP_MAX_HEADER)
+#define IRLAP_GET_TX_QUEUE_LEN(self) skb_queue_len(&self->txq)
+
+/* Return TRUE if the node is in primary mode (i.e. master)
+ * - Jean II */
+static inline int irlap_is_primary(struct irlap_cb *self)
+{
+       int ret;
+       switch(self->state) {
+       case LAP_XMIT_P:
+       case LAP_NRM_P:
+               ret = 1;
+               break;
+       case LAP_XMIT_S:
+       case LAP_NRM_S:
+               ret = 0;
+               break;
+       default:
+               ret = -1;
+       }
+       return ret;
+}
+
+/* Clear a pending IrLAP disconnect. - Jean II */
+static inline void irlap_clear_disconnect(struct irlap_cb *self)
+{
+       self->disconnect_pending = FALSE;
+}
+
+/*
+ * Function irlap_next_state (self, state)
+ *
+ *    Switches state and provides debug information
+ *
+ */
+static inline void irlap_next_state(struct irlap_cb *self, IRLAP_STATE state)
+{
+       /*
+       if (!self || self->magic != LAP_MAGIC)
+               return;
+
+               pr_debug("next LAP state = %s\n", irlap_state[state]);
+       */
+       self->state = state;
+}
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlap_event.h b/drivers/staging/irda/include/net/irda/irlap_event.h
new file mode 100644 (file)
index 0000000..e4325fe
--- /dev/null
@@ -0,0 +1,129 @@
+/*********************************************************************
+ *                
+ *                
+ * Filename:      irlap_event.h
+ * Version:       0.1
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sat Aug 16 00:59:29 1997
+ * Modified at:   Tue Dec 21 11:20:30 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRLAP_EVENT_H
+#define IRLAP_EVENT_H
+
+#include <net/irda/irda.h>
+
+/* A few forward declarations (to make compiler happy) */
+struct irlap_cb;
+struct irlap_info;
+
+/* IrLAP States */
+typedef enum {
+       LAP_NDM,         /* Normal disconnected mode */
+       LAP_QUERY,
+       LAP_REPLY,
+       LAP_CONN,        /* Connect indication */
+       LAP_SETUP,       /* Setting up connection */
+       LAP_OFFLINE,     /* A really boring state */
+       LAP_XMIT_P,
+       LAP_PCLOSE,
+       LAP_NRM_P,       /* Normal response mode as primary */
+       LAP_RESET_WAIT,
+       LAP_RESET,
+       LAP_NRM_S,       /* Normal response mode as secondary */
+       LAP_XMIT_S,
+       LAP_SCLOSE,
+       LAP_RESET_CHECK,
+} IRLAP_STATE;
+
+/* IrLAP Events */
+typedef enum {
+       /* Services events */
+       DISCOVERY_REQUEST,
+       CONNECT_REQUEST,
+       CONNECT_RESPONSE,
+       DISCONNECT_REQUEST,
+       DATA_REQUEST,
+       RESET_REQUEST,
+       RESET_RESPONSE,
+
+       /* Send events */
+       SEND_I_CMD,
+       SEND_UI_FRAME,
+
+       /* Receive events */
+       RECV_DISCOVERY_XID_CMD,
+       RECV_DISCOVERY_XID_RSP,
+       RECV_SNRM_CMD,
+       RECV_TEST_CMD,
+       RECV_TEST_RSP,
+       RECV_UA_RSP,
+       RECV_DM_RSP,
+       RECV_RD_RSP,
+       RECV_I_CMD,
+       RECV_I_RSP,
+       RECV_UI_FRAME,
+       RECV_FRMR_RSP,
+       RECV_RR_CMD,
+       RECV_RR_RSP,
+       RECV_RNR_CMD,
+       RECV_RNR_RSP,
+       RECV_REJ_CMD,
+       RECV_REJ_RSP,
+       RECV_SREJ_CMD,
+       RECV_SREJ_RSP,
+       RECV_DISC_CMD,
+
+       /* Timer events */
+       SLOT_TIMER_EXPIRED,
+       QUERY_TIMER_EXPIRED,
+       FINAL_TIMER_EXPIRED,
+       POLL_TIMER_EXPIRED,
+       DISCOVERY_TIMER_EXPIRED,
+       WD_TIMER_EXPIRED,
+       BACKOFF_TIMER_EXPIRED,
+       MEDIA_BUSY_TIMER_EXPIRED,
+} IRLAP_EVENT;
+
+/*
+ * Disconnect reason code
+ */
+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;
+
+extern const char *const irlap_state[];
+
+void irlap_do_event(struct irlap_cb *self, IRLAP_EVENT event, 
+                   struct sk_buff *skb, struct irlap_info *info);
+void irlap_print_event(IRLAP_EVENT event);
+
+int irlap_qos_negotiate(struct irlap_cb *self, struct sk_buff *skb);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlap_frame.h b/drivers/staging/irda/include/net/irda/irlap_frame.h
new file mode 100644 (file)
index 0000000..cbc12a9
--- /dev/null
@@ -0,0 +1,167 @@
+/*********************************************************************
+ *                
+ * Filename:      irlap_frame.h
+ * Version:       0.9
+ * Description:   IrLAP frame declarations
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Aug 19 10:27:26 1997
+ * Modified at:   Sat Dec 25 21:07:26 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1997-1999 Dag Brattli <dagb@cs.uit.no>,
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRLAP_FRAME_H
+#define IRLAP_FRAME_H
+
+#include <linux/skbuff.h>
+
+#include <net/irda/irda.h>
+
+/* A few forward declarations (to make compiler happy) */
+struct irlap_cb;
+struct discovery_t;
+
+/* Frame types and templates */
+#define INVALID   0xff
+
+/* Unnumbered (U) commands */
+#define SNRM_CMD  0x83 /* Set Normal Response Mode */
+#define DISC_CMD  0x43 /* Disconnect */
+#define XID_CMD   0x2f /* Exchange Station Identification */
+#define TEST_CMD  0xe3 /* Test */
+
+/* Unnumbered responses */
+#define RNRM_RSP  0x83 /* Request Normal Response Mode */
+#define UA_RSP    0x63 /* Unnumbered Acknowledgement */
+#define FRMR_RSP  0x87 /* Frame Reject */
+#define DM_RSP    0x0f /* Disconnect Mode */
+#define RD_RSP    0x43 /* Request Disconnection */
+#define XID_RSP   0xaf /* Exchange Station Identification */
+#define TEST_RSP  0xe3 /* Test frame */
+
+/* Supervisory (S) */
+#define RR        0x01 /* Receive Ready */
+#define REJ       0x09 /* Reject */
+#define RNR       0x05 /* Receive Not Ready */
+#define SREJ      0x0d /* Selective Reject */
+
+/* Information (I) */
+#define I_FRAME   0x00 /* Information Format */
+#define UI_FRAME  0x03 /* Unnumbered Information */
+
+#define CMD_FRAME 0x01
+#define RSP_FRAME 0x00
+
+#define PF_BIT    0x10 /* Poll/final bit */
+
+/* Some IrLAP field lengths */
+/*
+ * Only baud rate triplet is 4 bytes (PV can be 2 bytes).
+ * All others params (7) are 3 bytes, so that's 7*3 + 1*4 bytes.
+ */
+#define IRLAP_NEGOCIATION_PARAMS_LEN 25
+#define IRLAP_DISCOVERY_INFO_LEN     32
+
+struct disc_frame {
+       __u8 caddr;          /* Connection address */
+       __u8 control;
+} __packed;
+
+struct xid_frame {
+       __u8  caddr; /* Connection address */
+       __u8  control;
+       __u8  ident; /* Should always be XID_FORMAT */ 
+       __le32 saddr; /* Source device address */
+       __le32 daddr; /* Destination device address */
+       __u8  flags; /* Discovery flags */
+       __u8  slotnr;
+       __u8  version;
+} __packed;
+
+struct test_frame {
+       __u8 caddr;          /* Connection address */
+       __u8 control;
+       __le32 saddr;         /* Source device address */
+       __le32 daddr;         /* Destination device address */
+} __packed;
+
+struct ua_frame {
+       __u8 caddr;
+       __u8 control;
+       __le32 saddr; /* Source device address */
+       __le32 daddr; /* Dest device address */
+} __packed;
+
+struct dm_frame {
+       __u8 caddr;          /* Connection address */
+       __u8 control;
+} __packed;
+
+struct rd_frame {
+       __u8 caddr;          /* Connection address */
+       __u8 control;
+} __packed;
+
+struct rr_frame {
+       __u8 caddr;          /* Connection address */
+       __u8 control;
+} __packed;
+
+struct i_frame {
+       __u8 caddr;
+       __u8 control;
+} __packed;
+
+struct snrm_frame {
+       __u8  caddr;
+       __u8  control;
+       __le32 saddr;
+       __le32 daddr;
+       __u8  ncaddr;
+} __packed;
+
+void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb);
+void irlap_send_discovery_xid_frame(struct irlap_cb *, int S, __u8 s, 
+                                   __u8 command,
+                                   struct discovery_t *discovery);
+void irlap_send_snrm_frame(struct irlap_cb *, struct qos_info *);
+void irlap_send_test_frame(struct irlap_cb *self, __u8 caddr, __u32 daddr, 
+                          struct sk_buff *cmd);
+void irlap_send_ua_response_frame(struct irlap_cb *, struct qos_info *);
+void irlap_send_dm_frame(struct irlap_cb *self);
+void irlap_send_rd_frame(struct irlap_cb *self);
+void irlap_send_disc_frame(struct irlap_cb *self);
+void irlap_send_rr_frame(struct irlap_cb *self, int command);
+
+void irlap_send_data_primary(struct irlap_cb *, struct sk_buff *);
+void irlap_send_data_primary_poll(struct irlap_cb *, struct sk_buff *);
+void irlap_send_data_secondary(struct irlap_cb *, struct sk_buff *);
+void irlap_send_data_secondary_final(struct irlap_cb *, struct sk_buff *);
+void irlap_resend_rejected_frames(struct irlap_cb *, int command);
+void irlap_resend_rejected_frame(struct irlap_cb *self, int command);
+
+void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb,
+                        __u8 caddr, int command);
+
+int irlap_insert_qos_negotiation_params(struct irlap_cb *self,
+                                       struct sk_buff *skb);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlmp.h b/drivers/staging/irda/include/net/irda/irlmp.h
new file mode 100644 (file)
index 0000000..f132924
--- /dev/null
@@ -0,0 +1,295 @@
+/*********************************************************************
+ *                
+ * Filename:      irlmp.h
+ * Version:       0.9
+ * Description:   IrDA Link Management Protocol (LMP) layer
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Aug 17 20:54:32 1997
+ * Modified at:   Fri Dec 10 13:23:01 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLMP_H
+#define IRLMP_H
+
+#include <asm/param.h>  /* for HZ */
+
+#include <linux/types.h>
+
+#include <net/irda/irda.h>
+#include <net/irda/qos.h>
+#include <net/irda/irlap.h>            /* LAP_MAX_HEADER, ... */
+#include <net/irda/irlmp_event.h>
+#include <net/irda/irqueue.h>
+#include <net/irda/discovery.h>
+
+/* LSAP-SEL's */
+#define LSAP_MASK     0x7f
+#define LSAP_IAS      0x00
+#define LSAP_ANY      0xff
+#define LSAP_MAX      0x6f /* 0x70-0x7f are reserved */
+#define LSAP_CONNLESS 0x70 /* Connectionless LSAP, mostly used for Ultra */
+
+#define DEV_ADDR_ANY  0xffffffff
+
+#define LMP_HEADER          2    /* Dest LSAP + Source LSAP */
+#define LMP_CONTROL_HEADER  4    /* LMP_HEADER + opcode + parameter */
+#define LMP_PID_HEADER      1    /* Used by Ultra */
+#define LMP_MAX_HEADER      (LMP_CONTROL_HEADER+LAP_MAX_HEADER)
+
+#define LM_MAX_CONNECTIONS  10
+
+#define LM_IDLE_TIMEOUT     2*HZ /* 2 seconds for now */
+
+typedef enum {
+       S_PNP = 0,
+       S_PDA,
+       S_COMPUTER,
+       S_PRINTER,
+       S_MODEM,
+       S_FAX,
+       S_LAN,
+       S_TELEPHONY,
+       S_COMM,
+       S_OBEX,
+       S_ANY,
+       S_END,
+} SERVICE;
+
+/* For selective discovery */
+typedef void (*DISCOVERY_CALLBACK1) (discinfo_t *, DISCOVERY_MODE, void *);
+/* For expiry (the same) */
+typedef void (*DISCOVERY_CALLBACK2) (discinfo_t *, DISCOVERY_MODE, void *);
+
+typedef struct {
+       irda_queue_t queue; /* Must be first */
+
+       __u16_host_order hints; /* Hint bits */
+} irlmp_service_t;
+
+typedef struct {
+       irda_queue_t queue; /* Must be first */
+
+       __u16_host_order hint_mask;
+
+       DISCOVERY_CALLBACK1 disco_callback;     /* Selective discovery */
+       DISCOVERY_CALLBACK2 expir_callback;     /* Selective expiration */
+       void *priv;                /* Used to identify client */
+} irlmp_client_t;
+
+/*
+ *  Information about each logical LSAP connection
+ */
+struct lsap_cb {
+       irda_queue_t queue;      /* Must be first */
+       magic_t magic;
+
+       unsigned long connected;        /* set_bit used on this */
+       int  persistent;
+
+       __u8 slsap_sel;   /* Source (this) LSAP address */
+       __u8 dlsap_sel;   /* Destination LSAP address (if connected) */
+#ifdef CONFIG_IRDA_ULTRA
+       __u8 pid;         /* Used by connectionless LSAP */
+#endif /* CONFIG_IRDA_ULTRA */
+       struct sk_buff *conn_skb; /* Store skb here while connecting */
+
+       struct timer_list watchdog_timer;
+
+       LSAP_STATE      lsap_state;  /* Connection state */
+       notify_t        notify;      /* Indication/Confirm entry points */
+       struct qos_info qos;         /* QoS for this connection */
+
+       struct lap_cb *lap; /* Pointer to LAP connection structure */
+};
+
+/*
+ *  Used for caching the last slsap->dlsap->handle mapping
+ *
+ * We don't need to keep/match the remote address in the cache because
+ * we are associated with a specific LAP (which implies it).
+ * Jean II
+ */
+typedef struct {
+       int valid;
+
+       __u8 slsap_sel;
+       __u8 dlsap_sel;
+       struct lsap_cb *lsap;
+} CACHE_ENTRY;
+
+/*
+ *  Information about each registered IrLAP layer
+ */
+struct lap_cb {
+       irda_queue_t queue; /* Must be first */
+       magic_t magic;
+
+       int reason;    /* LAP disconnect reason */
+
+       IRLMP_STATE lap_state;
+
+       struct irlap_cb *irlap;   /* Instance of IrLAP layer */
+       hashbin_t *lsaps;         /* LSAP associated with this link */
+       struct lsap_cb *flow_next;      /* Next lsap to be polled for Tx */
+
+       __u8  caddr;  /* Connection address */
+       __u32 saddr;  /* Source device address */
+       __u32 daddr;  /* Destination device address */
+       
+       struct qos_info *qos;  /* LAP QoS for this session */
+       struct timer_list idle_timer;
+       
+#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
+       /* The lsap cache was moved from struct irlmp_cb to here because
+        * it must be associated with the specific LAP. Also, this
+        * improves performance. - Jean II */
+       CACHE_ENTRY cache;  /* Caching last slsap->dlsap->handle mapping */
+#endif
+};
+
+/*
+ *  Main structure for IrLMP
+ */
+struct irlmp_cb {
+       magic_t magic;
+
+       __u8 conflict_flag;
+       
+       discovery_t discovery_cmd; /* Discovery command to use by IrLAP */
+       discovery_t discovery_rsp; /* Discovery response to use by IrLAP */
+
+       /* Last lsap picked automatically by irlmp_find_free_slsap() */
+       int     last_lsap_sel;
+
+       struct timer_list discovery_timer;
+
+       hashbin_t *links;         /* IrLAP connection table */
+       hashbin_t *unconnected_lsaps;
+       hashbin_t *clients;
+       hashbin_t *services;
+
+       hashbin_t *cachelog;    /* Current discovery log */
+
+       int running;
+
+       __u16_host_order hints; /* Hint bits */
+};
+
+/* Prototype declarations */
+int  irlmp_init(void);
+void irlmp_cleanup(void);
+struct lsap_cb *irlmp_open_lsap(__u8 slsap, notify_t *notify, __u8 pid);
+void irlmp_close_lsap( struct lsap_cb *self);
+
+__u16 irlmp_service_to_hint(int service);
+void *irlmp_register_service(__u16 hints);
+int irlmp_unregister_service(void *handle);
+void *irlmp_register_client(__u16 hint_mask, DISCOVERY_CALLBACK1 disco_clb,
+                           DISCOVERY_CALLBACK2 expir_clb, void *priv);
+int irlmp_unregister_client(void *handle);
+int irlmp_update_client(void *handle, __u16 hint_mask, 
+                       DISCOVERY_CALLBACK1 disco_clb,
+                       DISCOVERY_CALLBACK2 expir_clb, void *priv);
+
+void irlmp_register_link(struct irlap_cb *, __u32 saddr, notify_t *);
+void irlmp_unregister_link(__u32 saddr);
+
+int  irlmp_connect_request(struct lsap_cb *, __u8 dlsap_sel, 
+                          __u32 saddr, __u32 daddr,
+                          struct qos_info *, struct sk_buff *);
+void irlmp_connect_indication(struct lsap_cb *self, struct sk_buff *skb);
+int  irlmp_connect_response(struct lsap_cb *, struct sk_buff *);
+void irlmp_connect_confirm(struct lsap_cb *, struct sk_buff *);
+struct lsap_cb *irlmp_dup(struct lsap_cb *self, void *instance);
+
+void irlmp_disconnect_indication(struct lsap_cb *self, LM_REASON reason, 
+                                struct sk_buff *userdata);
+int  irlmp_disconnect_request(struct lsap_cb *, struct sk_buff *userdata);
+
+void irlmp_discovery_confirm(hashbin_t *discovery_log, DISCOVERY_MODE mode);
+void irlmp_discovery_request(int nslots);
+discinfo_t *irlmp_get_discoveries(int *pn, __u16 mask, int nslots);
+void irlmp_do_expiry(void);
+void irlmp_do_discovery(int nslots);
+discovery_t *irlmp_get_discovery_response(void);
+void irlmp_discovery_expiry(discinfo_t *expiry, int number);
+
+int  irlmp_data_request(struct lsap_cb *, struct sk_buff *);
+void irlmp_data_indication(struct lsap_cb *, struct sk_buff *);
+
+int  irlmp_udata_request(struct lsap_cb *, struct sk_buff *);
+void irlmp_udata_indication(struct lsap_cb *, struct sk_buff *);
+
+#ifdef CONFIG_IRDA_ULTRA
+int  irlmp_connless_data_request(struct lsap_cb *, struct sk_buff *, __u8);
+void irlmp_connless_data_indication(struct lsap_cb *, struct sk_buff *);
+#endif /* CONFIG_IRDA_ULTRA */
+
+void irlmp_status_indication(struct lap_cb *, LINK_STATUS link, LOCK_STATUS lock);
+void irlmp_flow_indication(struct lap_cb *self, LOCAL_FLOW flow);
+
+LM_REASON irlmp_convert_lap_reason(LAP_REASON);
+
+static inline __u32 irlmp_get_saddr(const struct lsap_cb *self)
+{
+       return (self && self->lap) ? self->lap->saddr : 0;
+}
+
+static inline __u32 irlmp_get_daddr(const struct lsap_cb *self)
+{
+       return (self && self->lap) ? self->lap->daddr : 0;
+}
+
+const char *irlmp_reason_str(LM_REASON reason);
+
+extern int sysctl_discovery_timeout;
+extern int sysctl_discovery_slots;
+extern int sysctl_discovery;
+extern int sysctl_lap_keepalive_time;  /* in ms, default is LM_IDLE_TIMEOUT */
+extern struct irlmp_cb *irlmp;
+
+/* Check if LAP queue is full.
+ * Used by IrTTP for low control, see comments in irlap.h - Jean II */
+static inline int irlmp_lap_tx_queue_full(struct lsap_cb *self)
+{
+       if (self == NULL)
+               return 0;
+       if (self->lap == NULL)
+               return 0;
+       if (self->lap->irlap == NULL)
+               return 0;
+
+       return IRLAP_GET_TX_QUEUE_LEN(self->lap->irlap) >= LAP_HIGH_THRESHOLD;
+}
+
+/* After doing a irlmp_dup(), this get one of the two socket back into
+ * a state where it's waiting incoming connections.
+ * Note : this can be used *only* if the socket is not yet connected
+ * (i.e. NO irlmp_connect_response() done on this socket).
+ * - Jean II */
+static inline void irlmp_listen(struct lsap_cb *self)
+{
+       self->dlsap_sel = LSAP_ANY;
+       self->lap = NULL;
+       self->lsap_state = LSAP_DISCONNECTED;
+       /* Started when we received the LM_CONNECT_INDICATION */
+       del_timer(&self->watchdog_timer);
+}
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irlmp_event.h b/drivers/staging/irda/include/net/irda/irlmp_event.h
new file mode 100644 (file)
index 0000000..9e4ec17
--- /dev/null
@@ -0,0 +1,98 @@
+/*********************************************************************
+ *                
+ * Filename:      irlmp_event.h
+ * Version:       0.1
+ * Description:   IrDA-LMP event handling
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Thu Jul  8 12:18:54 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRLMP_EVENT_H
+#define IRLMP_EVENT_H
+
+/* A few forward declarations (to make compiler happy) */
+struct irlmp_cb;
+struct lsap_cb;
+struct lap_cb;
+struct discovery_t;
+
+/* LAP states */
+typedef enum {
+       /* IrLAP connection control states */
+       LAP_STANDBY,             /* No LAP connection */
+       LAP_U_CONNECT,           /* Starting LAP connection */
+       LAP_ACTIVE,              /* LAP connection is active */
+} IRLMP_STATE;
+
+/* LSAP connection control states */
+typedef enum {
+       LSAP_DISCONNECTED,        /* No LSAP connection */
+       LSAP_CONNECT,             /* Connect indication from peer */
+       LSAP_CONNECT_PEND,        /* Connect request from service user */
+       LSAP_DATA_TRANSFER_READY, /* LSAP connection established */          
+       LSAP_SETUP,               /* Trying to set up LSAP connection */
+       LSAP_SETUP_PEND,          /* Request to start LAP connection */
+} LSAP_STATE;
+
+typedef enum {
+       /* LSAP events */
+       LM_CONNECT_REQUEST,
+       LM_CONNECT_CONFIRM,
+       LM_CONNECT_RESPONSE,
+       LM_CONNECT_INDICATION,  
+       
+       LM_DISCONNECT_INDICATION,
+       LM_DISCONNECT_REQUEST,
+
+       LM_DATA_REQUEST,
+       LM_UDATA_REQUEST,
+       LM_DATA_INDICATION,
+       LM_UDATA_INDICATION,
+
+       LM_WATCHDOG_TIMEOUT,
+
+       /* IrLAP events */
+       LM_LAP_CONNECT_REQUEST,
+       LM_LAP_CONNECT_INDICATION, 
+       LM_LAP_CONNECT_CONFIRM,
+       LM_LAP_DISCONNECT_INDICATION, 
+       LM_LAP_DISCONNECT_REQUEST,
+       LM_LAP_DISCOVERY_REQUEST,
+       LM_LAP_DISCOVERY_CONFIRM,
+       LM_LAP_IDLE_TIMEOUT,
+} IRLMP_EVENT;
+
+extern const char *const irlmp_state[];
+extern const char *const irlsap_state[];
+
+void irlmp_watchdog_timer_expired(void *data);
+void irlmp_discovery_timer_expired(void *data);
+void irlmp_idle_timer_expired(void *data);
+
+void irlmp_do_lap_event(struct lap_cb *self, IRLMP_EVENT event, 
+                       struct sk_buff *skb);
+int irlmp_do_lsap_event(struct lsap_cb *self, IRLMP_EVENT event, 
+                       struct sk_buff *skb);
+
+#endif /* IRLMP_EVENT_H */
+
+
+
+
diff --git a/drivers/staging/irda/include/net/irda/irlmp_frame.h b/drivers/staging/irda/include/net/irda/irlmp_frame.h
new file mode 100644 (file)
index 0000000..1906eb7
--- /dev/null
@@ -0,0 +1,62 @@
+/*********************************************************************
+ *                
+ * Filename:      irlmp_frame.h
+ * Version:       0.9
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Aug 19 02:09:59 1997
+ * Modified at:   Fri Dec 10 13:21:53 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRMLP_FRAME_H
+#define IRMLP_FRAME_H
+
+#include <linux/skbuff.h>
+
+#include <net/irda/discovery.h>
+
+/* IrLMP frame opcodes */
+#define CONNECT_CMD    0x01
+#define CONNECT_CNF    0x81
+#define DISCONNECT     0x02
+#define ACCESSMODE_CMD 0x03
+#define ACCESSMODE_CNF 0x83
+
+#define CONTROL_BIT    0x80
+
+void irlmp_send_data_pdu(struct lap_cb *self, __u8 dlsap, __u8 slsap,
+                               int expedited, struct sk_buff *skb);
+void irlmp_send_lcf_pdu(struct lap_cb *self, __u8 dlsap, __u8 slsap, 
+                       __u8 opcode, struct sk_buff *skb);
+void irlmp_link_data_indication(struct lap_cb *, struct sk_buff *, 
+                               int unreliable);
+#ifdef CONFIG_IRDA_ULTRA
+void irlmp_link_unitdata_indication(struct lap_cb *, struct sk_buff *);
+#endif /* CONFIG_IRDA_ULTRA */
+
+void irlmp_link_connect_indication(struct lap_cb *, __u32 saddr, __u32 daddr,
+                                  struct qos_info *qos, struct sk_buff *skb);
+void irlmp_link_connect_request(__u32 daddr);
+void irlmp_link_connect_confirm(struct lap_cb *self, struct qos_info *qos, 
+                               struct sk_buff *skb);
+void irlmp_link_disconnect_indication(struct lap_cb *, struct irlap_cb *, 
+                                     LAP_REASON reason, struct sk_buff *); 
+void irlmp_link_discovery_confirm(struct lap_cb *self, hashbin_t *log);
+void irlmp_link_discovery_indication(struct lap_cb *, discovery_t *discovery);
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irmod.h b/drivers/staging/irda/include/net/irda/irmod.h
new file mode 100644 (file)
index 0000000..86f0dbb
--- /dev/null
@@ -0,0 +1,109 @@
+/*********************************************************************
+ *                
+ * Filename:      irmod.h
+ * Version:       0.3
+ * Description:   IrDA module and utilities functions
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Dec 15 13:58:52 1997
+ * Modified at:   Fri Jan 28 13:15:24 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ *
+ *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *      
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charg.
+ *     
+ ********************************************************************/
+
+#ifndef IRMOD_H
+#define IRMOD_H
+
+/* 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 { FLOW_STOP, FLOW_START } LOCAL_FLOW;
+
+/*  
+ *  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 */
+
+/* A few forward declarations (to make compiler happy) */
+struct qos_info;               /* in <net/irda/qos.h> */
+
+/*
+ *  Notify structure used between transport and link management layers
+ */
+typedef struct {
+       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,
+                               __u8 max_header_size, struct sk_buff *skb);
+       void (*connect_indication)(void *instance, void *sap, 
+                                  struct qos_info *qos, __u32 max_sdu_size, 
+                                  __u8 max_header_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 (*status_indication)(void *instance,
+                                 LINK_STATUS link, LOCK_STATUS lock);
+       void *instance; /* Layer instance pointer */
+       char name[16];  /* Name of layer */
+} notify_t;
+
+#define NOTIFY_MAX_NAME 16
+
+/* Zero the notify structure */
+void irda_notify_init(notify_t *notify);
+
+/* Locking wrapper - Note the inverted logic on irda_lock().
+ * Those function basically return false if the lock is already in the
+ * position you want to set it. - Jean II */
+#define irda_lock(lock)                (! test_and_set_bit(0, (void *) (lock)))
+#define irda_unlock(lock)      (test_and_clear_bit(0, (void *) (lock)))
+
+#endif /* IRMOD_H */
+
+
+
+
+
+
+
+
+
diff --git a/drivers/staging/irda/include/net/irda/irqueue.h b/drivers/staging/irda/include/net/irda/irqueue.h
new file mode 100644 (file)
index 0000000..37f512b
--- /dev/null
@@ -0,0 +1,96 @@
+/*********************************************************************
+ *                
+ * Filename:      irqueue.h
+ * Version:       0.3
+ * Description:   General queue implementation
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Tue Jun  9 13:26:50 1998
+ * Modified at:   Thu Oct  7 13:25:16 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (C) 1998-1999, Aage Kvalnes <aage@cs.uit.no>
+ *     Copyright (c) 1998, Dag Brattli
+ *     All Rights Reserved.
+ *      
+ *     This code is taken from the Vortex Operating System written by Aage
+ *     Kvalnes and has been ported to Linux and Linux/IR by Dag Brattli
+ *
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *  
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *     
+ ********************************************************************/
+
+#include <linux/types.h>
+#include <linux/spinlock.h>
+
+#ifndef IRDA_QUEUE_H
+#define IRDA_QUEUE_H
+
+#define NAME_SIZE      32
+
+/*
+ * Hash types (some flags can be xored)
+ * See comments in irqueue.c for which one to use...
+ */
+#define HB_NOLOCK      0       /* No concurent access prevention */
+#define HB_LOCK                1       /* Prevent concurent write with global lock */
+
+/*
+ * Hash defines
+ */
+#define HASHBIN_SIZE   8
+#define HASHBIN_MASK   0x7
+
+#ifndef IRDA_ALIGN 
+#define IRDA_ALIGN __attribute__((aligned))
+#endif
+
+#define Q_NULL { NULL, NULL, "", 0 }
+
+typedef void (*FREE_FUNC)(void *arg);
+
+struct irda_queue {
+       struct irda_queue *q_next;
+       struct irda_queue *q_prev;
+
+       char   q_name[NAME_SIZE];
+       long   q_hash;                  /* Must be able to cast a (void *) */
+};
+typedef struct irda_queue irda_queue_t;
+
+typedef struct hashbin_t {
+       __u32      magic;
+       int        hb_type;
+       int        hb_size;
+       spinlock_t hb_spinlock;         /* HB_LOCK - Can be used by the user */
+
+       irda_queue_t* hb_queue[HASHBIN_SIZE] IRDA_ALIGN;
+
+       irda_queue_t* hb_current;
+} hashbin_t;
+
+hashbin_t *hashbin_new(int type);
+int      hashbin_delete(hashbin_t* hashbin, FREE_FUNC func);
+int      hashbin_clear(hashbin_t* hashbin, FREE_FUNC free_func);
+void     hashbin_insert(hashbin_t* hashbin, irda_queue_t* entry, long hashv, 
+                       const char* name);
+void*    hashbin_remove(hashbin_t* hashbin, long hashv, const char* name);
+void*    hashbin_remove_first(hashbin_t *hashbin);
+void*   hashbin_remove_this( hashbin_t* hashbin, irda_queue_t* entry);
+void*    hashbin_find(hashbin_t* hashbin, long hashv, const char* name);
+void*    hashbin_lock_find(hashbin_t* hashbin, long hashv, const char* name);
+void*    hashbin_find_next(hashbin_t* hashbin, long hashv, const char* name,
+                          void ** pnext);
+irda_queue_t *hashbin_get_first(hashbin_t *hashbin);
+irda_queue_t *hashbin_get_next(hashbin_t *hashbin);
+
+#define HASHBIN_GET_SIZE(hashbin) hashbin->hb_size
+
+#endif
diff --git a/drivers/staging/irda/include/net/irda/irttp.h b/drivers/staging/irda/include/net/irda/irttp.h
new file mode 100644 (file)
index 0000000..98682d4
--- /dev/null
@@ -0,0 +1,210 @@
+/*********************************************************************
+ *                
+ * Filename:      irttp.h
+ * Version:       1.0
+ * Description:   Tiny Transport Protocol (TTP) definitions
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sun Aug 31 20:14:31 1997
+ * Modified at:   Sun Dec 12 13:09:07 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef IRTTP_H
+#define IRTTP_H
+
+#include <linux/types.h>
+#include <linux/skbuff.h>
+#include <linux/spinlock.h>
+
+#include <net/irda/irda.h>
+#include <net/irda/irlmp.h>            /* struct lsap_cb */
+#include <net/irda/qos.h>              /* struct qos_info */
+#include <net/irda/irqueue.h>
+
+#define TTP_MAX_CONNECTIONS    LM_MAX_CONNECTIONS
+#define TTP_HEADER             1
+#define TTP_MAX_HEADER         (TTP_HEADER + LMP_MAX_HEADER)
+#define TTP_SAR_HEADER         5
+#define TTP_PARAMETERS         0x80
+#define TTP_MORE               0x80
+
+/* Transmission queue sizes */
+/* Worst case scenario, two window of data - Jean II */
+#define TTP_TX_MAX_QUEUE       14
+/* We need to keep at least 5 frames to make sure that we can refill
+ * appropriately the LAP layer. LAP keeps only two buffers, and we need
+ * to have 7 to make a full window - Jean II */
+#define TTP_TX_LOW_THRESHOLD   5
+/* Most clients are synchronous with respect to flow control, so we can
+ * keep a low number of Tx buffers in TTP - Jean II */
+#define TTP_TX_HIGH_THRESHOLD  7
+
+/* Receive queue sizes */
+/* Minimum of credit that the peer should hold.
+ * If the peer has less credits than 9 frames, we will explicitly send
+ * him some credits (through irttp_give_credit() and a specific frame).
+ * Note that when we give credits it's likely that it won't be sent in
+ * this LAP window, but in the next one. So, we make sure that the peer
+ * has something to send while waiting for credits (one LAP window == 7
+ * + 1 frames while he process the credits). - Jean II */
+#define TTP_RX_MIN_CREDIT      8
+/* This is the default maximum number of credits held by the peer, so the
+ * default maximum number of frames he can send us before needing flow
+ * control answer from us (this may be negociated differently at TSAP setup).
+ * We want to minimise the number of times we have to explicitly send some
+ * credit to the peer, hoping we can piggyback it on the return data. In
+ * particular, it doesn't make sense for us to send credit more than once
+ * per LAP window.
+ * Moreover, giving credits has some latency, so we need strictly more than
+ * a LAP window, otherwise we may already have credits in our Tx queue.
+ * But on the other hand, we don't want to keep too many Rx buffer here
+ * before starting to flow control the other end, so make it exactly one
+ * LAP window + 1 + MIN_CREDITS. - Jean II */
+#define TTP_RX_DEFAULT_CREDIT  16
+/* Maximum number of credits we can allow the peer to have, and therefore
+ * maximum Rx queue size.
+ * Note that we try to deliver packets to the higher layer every time we
+ * receive something, so in normal mode the Rx queue will never contains
+ * more than one or two packets. - Jean II */
+#define TTP_RX_MAX_CREDIT      21
+
+/* What clients should use when calling ttp_open_tsap() */
+#define DEFAULT_INITIAL_CREDIT TTP_RX_DEFAULT_CREDIT
+
+/* Some priorities for disconnect requests */
+#define P_NORMAL    0
+#define P_HIGH      1
+
+#define TTP_SAR_DISABLE 0
+#define TTP_SAR_UNBOUND 0xffffffff
+
+/* Parameters */
+#define TTP_MAX_SDU_SIZE 0x01
+
+/*
+ *  This structure contains all data associated with one instance of a TTP 
+ *  connection.
+ */
+struct tsap_cb {
+       irda_queue_t q;            /* Must be first */
+       magic_t magic;        /* Just in case */
+
+       __u8 stsap_sel;       /* Source TSAP */
+       __u8 dtsap_sel;       /* Destination TSAP */
+
+       struct lsap_cb *lsap; /* Corresponding LSAP to this TSAP */
+
+       __u8 connected;       /* TSAP connected */
+        
+       __u8 initial_credit;  /* Initial credit to give peer */
+
+        int avail_credit;    /* Available credit to return to peer */
+       int remote_credit;   /* Credit held by peer TTP entity */
+       int send_credit;     /* Credit held by local TTP entity */
+       
+       struct sk_buff_head tx_queue; /* Frames to be transmitted */
+       struct sk_buff_head rx_queue; /* Received frames */
+       struct sk_buff_head rx_fragments;
+       int tx_queue_lock;
+       int rx_queue_lock;
+       spinlock_t lock;
+
+       notify_t notify;       /* Callbacks to client layer */
+
+       struct net_device_stats stats;
+       struct timer_list todo_timer; 
+
+       __u32 max_seg_size;     /* Max data that fit into an IrLAP frame */
+       __u8  max_header_size;
+
+       int   rx_sdu_busy;     /* RxSdu.busy */
+       __u32 rx_sdu_size;     /* Current size of a partially received frame */
+       __u32 rx_max_sdu_size; /* Max receive user data size */
+
+       int tx_sdu_busy;       /* TxSdu.busy */
+       __u32 tx_max_sdu_size; /* Max transmit user data size */
+
+       int close_pend;        /* Close, but disconnect_pend */
+       unsigned long disconnect_pend; /* Disconnect, but still data to send */
+       struct sk_buff *disconnect_skb;
+};
+
+struct irttp_cb {
+       magic_t    magic;       
+       hashbin_t *tsaps;
+};
+
+int  irttp_init(void);
+void irttp_cleanup(void);
+
+struct tsap_cb *irttp_open_tsap(__u8 stsap_sel, int credit, notify_t *notify);
+int irttp_close_tsap(struct tsap_cb *self);
+
+int irttp_data_request(struct tsap_cb *self, struct sk_buff *skb);
+int irttp_udata_request(struct tsap_cb *self, struct sk_buff *skb);
+
+int irttp_connect_request(struct tsap_cb *self, __u8 dtsap_sel, 
+                         __u32 saddr, __u32 daddr,
+                         struct qos_info *qos, __u32 max_sdu_size, 
+                         struct sk_buff *userdata);
+int irttp_connect_response(struct tsap_cb *self, __u32 max_sdu_size, 
+                           struct sk_buff *userdata);
+int irttp_disconnect_request(struct tsap_cb *self, struct sk_buff *skb,
+                            int priority);
+void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow);
+struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance);
+
+static inline __u32 irttp_get_saddr(struct tsap_cb *self)
+{
+       return irlmp_get_saddr(self->lsap);
+}
+
+static inline __u32 irttp_get_daddr(struct tsap_cb *self)
+{
+       return irlmp_get_daddr(self->lsap);
+}
+
+static inline __u32 irttp_get_max_seg_size(struct tsap_cb *self)
+{
+       return self->max_seg_size;
+}
+
+/* After doing a irttp_dup(), this get one of the two socket back into
+ * a state where it's waiting incoming connections.
+ * Note : this can be used *only* if the socket is not yet connected
+ * (i.e. NO irttp_connect_response() done on this socket).
+ * - Jean II */
+static inline void irttp_listen(struct tsap_cb *self)
+{
+       irlmp_listen(self->lsap);
+       self->dtsap_sel = LSAP_ANY;
+}
+
+/* Return TRUE if the node is in primary mode (i.e. master)
+ * - Jean II */
+static inline int irttp_is_primary(struct tsap_cb *self)
+{
+       if ((self == NULL) ||
+           (self->lsap == NULL) ||
+           (self->lsap->lap == NULL) ||
+           (self->lsap->lap->irlap == NULL))
+               return -2;
+       return irlap_is_primary(self->lsap->lap->irlap);
+}
+
+#endif /* IRTTP_H */
diff --git a/drivers/staging/irda/include/net/irda/parameters.h b/drivers/staging/irda/include/net/irda/parameters.h
new file mode 100644 (file)
index 0000000..2d9cd00
--- /dev/null
@@ -0,0 +1,100 @@
+/*********************************************************************
+ *                
+ * Filename:      parameters.h
+ * Version:       1.0
+ * Description:   A more general way to handle (pi,pl,pv) parameters
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Jun  7 08:47:28 1999
+ * Modified at:   Sun Jan 30 14:05:14 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ *     Michel Dänzer <daenzer@debian.org>, 10/2001
+ *     - simplify irda_pv_t to avoid endianness issues
+ *     
+ ********************************************************************/
+
+#ifndef IRDA_PARAMS_H
+#define IRDA_PARAMS_H
+
+/*
+ *  The currently supported types. Beware not to change the sequence since
+ *  it a good reason why the sized integers has a value equal to their size
+ */
+typedef enum {
+       PV_INTEGER,      /* Integer of any (pl) length */
+       PV_INT_8_BITS,   /* Integer of 8 bits in length */
+       PV_INT_16_BITS,  /* Integer of 16 bits in length */
+       PV_STRING,       /* \0 terminated string */
+       PV_INT_32_BITS,  /* Integer of 32 bits in length */
+       PV_OCT_SEQ,      /* Octet sequence */
+       PV_NO_VALUE      /* Does not contain any value (pl=0) */
+} PV_TYPE;
+
+/* Bit 7 of type field */
+#define PV_BIG_ENDIAN    0x80 
+#define PV_LITTLE_ENDIAN 0x00
+#define PV_MASK          0x7f   /* To mask away endian bit */
+
+#define PV_PUT 0
+#define PV_GET 1
+
+typedef union {
+       char   *c;
+       __u32   i;
+       __u32 *ip;
+} irda_pv_t;
+
+typedef struct {
+       __u8 pi;
+       __u8 pl;
+       irda_pv_t pv;
+} irda_param_t;
+
+typedef int (*PI_HANDLER)(void *self, irda_param_t *param, int get);
+typedef int (*PV_HANDLER)(void *self, __u8 *buf, int len, __u8 pi,
+                         PV_TYPE type, PI_HANDLER func);
+
+typedef struct {
+       const PI_HANDLER func;  /* Handler for this parameter identifier */
+       PV_TYPE    type;  /* Data type for this parameter */
+} pi_minor_info_t;
+
+typedef struct {
+       const pi_minor_info_t *pi_minor_call_table;
+       int len;
+} pi_major_info_t;
+
+typedef struct {
+       const pi_major_info_t *tables;
+       int              len;
+       __u8             pi_mask;
+       int              pi_major_offset;
+} pi_param_info_t;
+
+int irda_param_pack(__u8 *buf, char *fmt, ...);
+
+int irda_param_insert(void *self, __u8 pi, __u8 *buf, int len, 
+                     pi_param_info_t *info);
+int irda_param_extract_all(void *self, __u8 *buf, int len, 
+                          pi_param_info_t *info);
+
+#define irda_param_insert_byte(buf,pi,pv) irda_param_pack(buf,"bbb",pi,1,pv)
+
+#endif /* IRDA_PARAMS_H */
+
diff --git a/drivers/staging/irda/include/net/irda/qos.h b/drivers/staging/irda/include/net/irda/qos.h
new file mode 100644 (file)
index 0000000..05a5a24
--- /dev/null
@@ -0,0 +1,101 @@
+/*********************************************************************
+ *                
+ * Filename:      qos.h
+ * Version:       1.0
+ * Description:   Quality of Service definitions
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Fri Sep 19 23:21:09 1997
+ * Modified at:   Thu Dec  2 13:51:54 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License 
+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *     
+ ********************************************************************/
+
+#ifndef IRDA_QOS_H
+#define IRDA_QOS_H
+
+#include <linux/skbuff.h>
+
+#include <net/irda/parameters.h>
+
+#define PI_BAUD_RATE     0x01
+#define PI_MAX_TURN_TIME 0x82
+#define PI_DATA_SIZE     0x83
+#define PI_WINDOW_SIZE   0x84
+#define PI_ADD_BOFS      0x85
+#define PI_MIN_TURN_TIME 0x86
+#define PI_LINK_DISC     0x08
+
+#define IR_115200_MAX 0x3f
+
+/* Baud rates (first byte) */
+#define IR_2400     0x01
+#define IR_9600     0x02
+#define IR_19200    0x04
+#define IR_38400    0x08
+#define IR_57600    0x10
+#define IR_115200   0x20
+#define IR_576000   0x40
+#define IR_1152000  0x80
+
+/* Baud rates (second byte) */
+#define IR_4000000  0x01
+#define IR_16000000 0x02
+
+/* Quality of Service information */
+typedef struct {
+       __u32 value;
+       __u16 bits; /* LSB is first byte, MSB is second byte */
+} qos_value_t;
+
+struct qos_info {
+       magic_t magic;
+
+       qos_value_t baud_rate;       /* IR_11520O | ... */
+       qos_value_t max_turn_time;
+       qos_value_t data_size;
+       qos_value_t window_size;
+       qos_value_t additional_bofs;
+       qos_value_t min_turn_time;
+       qos_value_t link_disc_time;
+       
+       qos_value_t power;
+};
+
+extern int sysctl_max_baud_rate;
+extern int sysctl_max_inactive_time;
+
+void irda_init_max_qos_capabilies(struct qos_info *qos);
+void irda_qos_compute_intersection(struct qos_info *, struct qos_info *);
+
+__u32 irlap_max_line_capacity(__u32 speed, __u32 max_turn_time);
+
+void irda_qos_bits_to_value(struct qos_info *qos);
+
+/* So simple, how could we not inline those two ?
+ * Note : one byte is 10 bits if you include start and stop bits
+ * Jean II */
+#define irlap_min_turn_time_in_bytes(speed, min_turn_time) (   \
+       speed * min_turn_time / 10000000                        \
+)
+#define irlap_xbofs_in_usec(speed, xbofs) (                    \
+       xbofs * 10000000 / speed                                \
+)
+
+#endif
+
diff --git a/drivers/staging/irda/include/net/irda/timer.h b/drivers/staging/irda/include/net/irda/timer.h
new file mode 100644 (file)
index 0000000..d784f24
--- /dev/null
@@ -0,0 +1,105 @@
+/*********************************************************************
+ *                
+ * Filename:      timer.h
+ * Version:       
+ * Description:   
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Sat Aug 16 00:59:29 1997
+ * Modified at:   Thu Oct  7 12:25:24 1999
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1997, 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef TIMER_H
+#define TIMER_H
+
+#include <linux/timer.h>
+#include <linux/jiffies.h>
+
+#include <asm/param.h>  /* for HZ */
+
+#include <net/irda/irda.h>
+
+/* A few forward declarations (to make compiler happy) */
+struct irlmp_cb;
+struct irlap_cb;
+struct lsap_cb;
+struct lap_cb;
+
+/* 
+ *  Timeout definitions, some defined in IrLAP 6.13.5 - p. 92
+ */
+#define POLL_TIMEOUT        (450*HZ/1000)    /* Must never exceed 500 ms */
+#define FINAL_TIMEOUT       (500*HZ/1000)    /* Must never exceed 500 ms */
+
+/* 
+ *  Normally twice of p-timer. Note 3, IrLAP 6.3.11.2 - p. 60 suggests
+ *  at least twice duration of the P-timer.
+ */
+#define WD_TIMEOUT          (POLL_TIMEOUT*2)
+
+#define MEDIABUSY_TIMEOUT   (500*HZ/1000)    /* 500 msec */
+#define SMALLBUSY_TIMEOUT   (100*HZ/1000)    /* 100 msec - IrLAP 6.13.4 */
+
+/*
+ *  Slot timer must never exceed 85 ms, and must always be at least 25 ms, 
+ *  suggested to  75-85 msec by IrDA lite. This doesn't work with a lot of
+ *  devices, and other stackes uses a lot more, so it's best we do it as well
+ *  (Note : this is the default value and sysctl overrides it - Jean II)
+ */
+#define SLOT_TIMEOUT            (90*HZ/1000)
+
+/* 
+ *  The latest discovery frame (XID) is longer due to the extra discovery
+ *  information (hints, device name...). This is its extra length.
+ *  We use that when setting the query timeout. Jean II
+ */
+#define XIDEXTRA_TIMEOUT        (34*HZ/1000)  /* 34 msec */
+
+#define WATCHDOG_TIMEOUT        (20*HZ)       /* 20 sec */
+
+typedef void (*TIMER_CALLBACK)(void *);
+
+static inline void irda_start_timer(struct timer_list *ptimer, int timeout, 
+                                   void* data, TIMER_CALLBACK callback)
+{
+       ptimer->function = (void (*)(unsigned long)) callback;
+       ptimer->data = (unsigned long) data;
+       
+       /* Set new value for timer (update or add timer).
+        * We use mod_timer() because it's more efficient and also
+        * safer with respect to race conditions - Jean II */
+       mod_timer(ptimer, jiffies + timeout);
+}
+
+
+void irlap_start_slot_timer(struct irlap_cb *self, int timeout);
+void irlap_start_query_timer(struct irlap_cb *self, int S, int s);
+void irlap_start_final_timer(struct irlap_cb *self, int timeout);
+void irlap_start_wd_timer(struct irlap_cb *self, int timeout);
+void irlap_start_backoff_timer(struct irlap_cb *self, int timeout);
+
+void irlap_start_mbusy_timer(struct irlap_cb *self, int timeout);
+void irlap_stop_mbusy_timer(struct irlap_cb *);
+
+void irlmp_start_watchdog_timer(struct lsap_cb *, int timeout);
+void irlmp_start_discovery_timer(struct irlmp_cb *, int timeout);
+void irlmp_start_idle_timer(struct lap_cb *, int timeout);
+void irlmp_stop_idle_timer(struct lap_cb *self);
+
+#endif
+
diff --git a/drivers/staging/irda/include/net/irda/wrapper.h b/drivers/staging/irda/include/net/irda/wrapper.h
new file mode 100644 (file)
index 0000000..eef53eb
--- /dev/null
@@ -0,0 +1,58 @@
+/*********************************************************************
+ *                
+ * Filename:      wrapper.h
+ * Version:       1.2
+ * Description:   IrDA SIR async wrapper layer
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Tue Jan 11 12:37:29 2000
+ * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * 
+ *     Copyright (c) 1998-2000 Dag Brattli <dagb@cs.uit.no>, 
+ *     All Rights Reserved.
+ *     
+ *     This program is free software; you can redistribute it and/or 
+ *     modify it under the terms of the GNU General Public License as 
+ *     published by the Free Software Foundation; either version 2 of 
+ *     the License, or (at your option) any later version.
+ *
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     provide warranty for any of this software. This material is 
+ *     provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef WRAPPER_H
+#define WRAPPER_H
+
+#include <linux/types.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+
+#include <net/irda/irda_device.h>      /* iobuff_t */
+
+#define BOF  0xc0 /* Beginning of frame */
+#define XBOF 0xff
+#define EOF  0xc1 /* End of frame */
+#define CE   0x7d /* Control escape */
+
+#define STA BOF  /* Start flag */
+#define STO EOF  /* End flag */
+
+#define IRDA_TRANS 0x20    /* Asynchronous transparency modifier */       
+
+/* States for receiving a frame in async mode */
+enum {
+       OUTSIDE_FRAME, 
+       BEGIN_FRAME, 
+       LINK_ESCAPE, 
+       INSIDE_FRAME
+};
+
+/* Proto definitions */
+int async_wrap_skb(struct sk_buff *skb, __u8 *tx_buff, int buffsize);
+void async_unwrap_char(struct net_device *dev, struct net_device_stats *stats,
+                      iobuff_t *buf, __u8 byte);
+
+#endif
index 187f6c563a4b4a82ab31bbea09cc18cbefea34bb..bd1a635b88cfb40efa43cfe993835e15cf94f54e 100644 (file)
@@ -2,6 +2,8 @@
 # Makefile for the Linux IrDA protocol layer.
 #
 
+subdir-ccflags-y += -I$(srctree)/drivers/staging/irda/include
+
 obj-$(CONFIG_IRDA) += irda.o
 obj-$(CONFIG_IRLAN) += irlan/
 obj-$(CONFIG_IRNET) += irnet/
diff --git a/include/net/irda/af_irda.h b/include/net/irda/af_irda.h
deleted file mode 100644 (file)
index 0df5749..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      af_irda.h
- * Version:       1.0
- * Description:   IrDA sockets declarations
- * Status:        Stable
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Dec  9 21:13:12 1997
- * Modified at:   Fri Jan 28 13:16:32 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#ifndef AF_IRDA_H
-#define AF_IRDA_H
-
-#include <linux/irda.h>
-#include <net/irda/irda.h>
-#include <net/irda/iriap.h>            /* struct iriap_cb */
-#include <net/irda/irias_object.h>     /* struct ias_value */
-#include <net/irda/irlmp.h>            /* struct lsap_cb */
-#include <net/irda/irttp.h>            /* struct tsap_cb */
-#include <net/irda/discovery.h>                /* struct discovery_t */
-#include <net/sock.h>
-
-/* IrDA Socket */
-struct irda_sock {
-       /* struct sock has to be the first member of irda_sock */
-       struct sock sk;
-       __u32 saddr;          /* my local address */
-       __u32 daddr;          /* peer address */
-
-       struct lsap_cb *lsap; /* LSAP used by Ultra */
-       __u8  pid;            /* Protocol IP (PID) used by Ultra */
-
-       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;
-       __u32 max_data_size;
-       __u8  max_header_size;
-       struct qos_info qos_tx;
-
-       __u16_host_order mask;           /* Hint bits mask */
-       __u16_host_order hints;          /* Hint bits */
-
-       void *ckey;           /* IrLMP client handle */
-       void *skey;           /* IrLMP service handle */
-
-       struct ias_object *ias_obj;   /* Our service name + lsap in IAS */
-       struct iriap_cb *iriap;       /* Used to query remote IAS */
-       struct ias_value *ias_result; /* Result of remote IAS query */
-
-       hashbin_t *cachelog;            /* Result of discovery query */
-       __u32 cachedaddr;       /* Result of selective discovery query */
-
-       int nslots;           /* Number of slots to use for discovery */
-
-       int errno;            /* status of the IAS query */
-
-       wait_queue_head_t query_wait;   /* Wait for the answer to a query */
-       struct timer_list watchdog;     /* Timeout for discovery */
-
-       LOCAL_FLOW tx_flow;
-       LOCAL_FLOW rx_flow;
-};
-
-static inline struct irda_sock *irda_sk(struct sock *sk)
-{
-       return (struct irda_sock *)sk;
-}
-
-#endif /* AF_IRDA_H */
diff --git a/include/net/irda/crc.h b/include/net/irda/crc.h
deleted file mode 100644 (file)
index f202296..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      crc.h
- * Version:       
- * Description:   CRC routines
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Aug  4 20:40:53 1997
- * Modified at:   Sun May  2 20:25:23 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- ********************************************************************/
-
-#ifndef IRDA_CRC_H
-#define IRDA_CRC_H
-
-#include <linux/types.h>
-#include <linux/crc-ccitt.h>
-
-#define INIT_FCS  0xffff   /* Initial FCS value */
-#define GOOD_FCS  0xf0b8   /* Good final FCS value */
-
-/* Recompute the FCS with one more character appended. */
-#define irda_fcs(fcs, c) crc_ccitt_byte(fcs, c)
-
-/* Recompute the FCS with len bytes appended. */
-#define irda_calc_crc16(fcs, buf, len) crc_ccitt(fcs, buf, len)
-
-#endif
diff --git a/include/net/irda/discovery.h b/include/net/irda/discovery.h
deleted file mode 100644 (file)
index 63ae325..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      discovery.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Apr  6 16:53:53 1999
- * Modified at:   Tue Oct  5 10:05:10 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef DISCOVERY_H
-#define DISCOVERY_H
-
-#include <asm/param.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irqueue.h>          /* irda_queue_t */
-#include <net/irda/irlap_event.h>      /* LAP_REASON */
-
-#define DISCOVERY_EXPIRE_TIMEOUT (2*sysctl_discovery_timeout*HZ)
-#define DISCOVERY_DEFAULT_SLOTS  0
-
-/*
- *  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].
- *
- * This structure is used in the code for things that are endian neutral
- * but that fit in a word so that we can manipulate them efficiently.
- * By endian neutral, I mean things that are really an array of bytes,
- * and always used as such, for example the hint bits. Jean II
- */
-typedef union {
-       __u16 word;
-       __u8  byte[2];
-} __u16_host_order;
-
-/* Types of discovery */
-typedef enum {
-       DISCOVERY_LOG,          /* What's in our discovery log */
-       DISCOVERY_ACTIVE,       /* Doing our own discovery on the medium */
-       DISCOVERY_PASSIVE,      /* Peer doing discovery on the medium */
-       EXPIRY_TIMEOUT,         /* Entry expired due to timeout */
-} DISCOVERY_MODE;
-
-#define NICKNAME_MAX_LEN 21
-
-/* Basic discovery information about a peer */
-typedef struct irda_device_info                discinfo_t;     /* linux/irda.h */
-
-/*
- * The DISCOVERY structure is used for both discovery requests and responses
- */
-typedef struct discovery_t {
-       irda_queue_t    q;              /* Must be first! */
-
-       discinfo_t      data;           /* Basic discovery information */
-       int             name_len;       /* Length of nickname */
-
-       LAP_REASON      condition;      /* More info about the discovery */
-       int             gen_addr_bit;   /* Need to generate a new device
-                                        * address? */
-       int             nslots;         /* Number of slots to use when
-                                        * discovering */
-       unsigned long   timestamp;      /* Last time discovered */
-       unsigned long   firststamp;     /* First time discovered */
-} discovery_t;
-
-void irlmp_add_discovery(hashbin_t *cachelog, discovery_t *discovery);
-void irlmp_add_discovery_log(hashbin_t *cachelog, hashbin_t *log);
-void irlmp_expire_discoveries(hashbin_t *log, __u32 saddr, int force);
-struct irda_device_info *irlmp_copy_discoveries(hashbin_t *log, int *pn,
-                                               __u16 mask, int old_entries);
-
-#endif
diff --git a/include/net/irda/ircomm_core.h b/include/net/irda/ircomm_core.h
deleted file mode 100644 (file)
index 2a580ce..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_core.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Wed Jun  9 08:58:43 1999
- * Modified at:   Mon Dec 13 11:52:29 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_CORE_H
-#define IRCOMM_CORE_H
-
-#include <net/irda/irda.h>
-#include <net/irda/irqueue.h>
-#include <net/irda/ircomm_event.h>
-
-#define IRCOMM_MAGIC 0x98347298
-#define IRCOMM_HEADER_SIZE 1
-
-struct ircomm_cb;   /* Forward decl. */
-
-/*
- * A small call-table, so we don't have to check the service-type whenever
- * we want to do something
- */
-typedef struct {
-       int (*data_request)(struct ircomm_cb *, struct sk_buff *, int clen);
-       int (*connect_request)(struct ircomm_cb *, struct sk_buff *, 
-                              struct ircomm_info *);
-       int (*connect_response)(struct ircomm_cb *, struct sk_buff *);
-       int (*disconnect_request)(struct ircomm_cb *, struct sk_buff *, 
-                                 struct ircomm_info *);        
-} call_t;
-
-struct ircomm_cb {
-       irda_queue_t queue;
-       magic_t magic;
-
-       notify_t notify;
-       call_t   issue;
-
-       int state;
-       int line;            /* Which TTY line we are using */
-
-       struct tsap_cb *tsap;
-       struct lsap_cb *lsap;
-       
-       __u8 dlsap_sel;      /* Destination LSAP/TSAP selector */
-       __u8 slsap_sel;      /* Source LSAP/TSAP selector */
-
-       __u32 saddr;         /* Source device address (link we are using) */
-       __u32 daddr;         /* Destination device address */
-
-       int max_header_size; /* Header space we must reserve for each frame */
-       int max_data_size;   /* The amount of data we can fill in each frame */
-
-       LOCAL_FLOW flow_status; /* Used by ircomm_lmp */
-       int pkt_count;          /* Number of frames we have sent to IrLAP */
-
-       __u8 service_type;
-};
-
-extern hashbin_t *ircomm;
-
-struct ircomm_cb *ircomm_open(notify_t *notify, __u8 service_type, int line);
-int ircomm_close(struct ircomm_cb *self);
-
-int ircomm_data_request(struct ircomm_cb *self, struct sk_buff *skb);
-void ircomm_data_indication(struct ircomm_cb *self, struct sk_buff *skb);
-void ircomm_process_data(struct ircomm_cb *self, struct sk_buff *skb);
-int ircomm_control_request(struct ircomm_cb *self, struct sk_buff *skb);
-int ircomm_connect_request(struct ircomm_cb *self, __u8 dlsap_sel, 
-                          __u32 saddr, __u32 daddr, struct sk_buff *skb,
-                          __u8 service_type);
-void ircomm_connect_indication(struct ircomm_cb *self, struct sk_buff *skb,
-                              struct ircomm_info *info);
-void ircomm_connect_confirm(struct ircomm_cb *self, struct sk_buff *skb,
-                           struct ircomm_info *info);
-int ircomm_connect_response(struct ircomm_cb *self, struct sk_buff *userdata);
-int ircomm_disconnect_request(struct ircomm_cb *self, struct sk_buff *userdata);
-void ircomm_disconnect_indication(struct ircomm_cb *self, struct sk_buff *skb,
-                                 struct ircomm_info *info);
-void ircomm_flow_request(struct ircomm_cb *self, LOCAL_FLOW flow);
-
-#define ircomm_is_connected(self) (self->state == IRCOMM_CONN)
-
-#endif
diff --git a/include/net/irda/ircomm_event.h b/include/net/irda/ircomm_event.h
deleted file mode 100644 (file)
index 5bbc329..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_event.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Jun  6 23:51:13 1999
- * Modified at:   Thu Jun 10 08:36:25 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_EVENT_H
-#define IRCOMM_EVENT_H
-
-#include <net/irda/irmod.h>
-
-typedef enum {
-        IRCOMM_IDLE,
-        IRCOMM_WAITI,
-        IRCOMM_WAITR,
-        IRCOMM_CONN,
-} IRCOMM_STATE;
-
-/* IrCOMM Events */
-typedef enum {
-        IRCOMM_CONNECT_REQUEST,
-        IRCOMM_CONNECT_RESPONSE,
-        IRCOMM_TTP_CONNECT_INDICATION,
-       IRCOMM_LMP_CONNECT_INDICATION,
-        IRCOMM_TTP_CONNECT_CONFIRM,
-       IRCOMM_LMP_CONNECT_CONFIRM,
-
-        IRCOMM_LMP_DISCONNECT_INDICATION,
-       IRCOMM_TTP_DISCONNECT_INDICATION,
-        IRCOMM_DISCONNECT_REQUEST,
-
-        IRCOMM_TTP_DATA_INDICATION,
-       IRCOMM_LMP_DATA_INDICATION,
-        IRCOMM_DATA_REQUEST,
-        IRCOMM_CONTROL_REQUEST,
-        IRCOMM_CONTROL_INDICATION,
-} IRCOMM_EVENT;
-
-/*
- * Used for passing information through the state-machine
- */
-struct ircomm_info {
-        __u32     saddr;               /* Source device address */
-        __u32     daddr;               /* Destination device address */
-        __u8      dlsap_sel;
-        LM_REASON reason;              /* Reason for disconnect */
-       __u32     max_data_size;
-       __u32     max_header_size;
-
-       struct qos_info *qos;
-};
-
-extern const char *const ircomm_state[];
-
-struct ircomm_cb;   /* Forward decl. */
-
-int ircomm_do_event(struct ircomm_cb *self, IRCOMM_EVENT event,
-                   struct sk_buff *skb, struct ircomm_info *info);
-void ircomm_next_state(struct ircomm_cb *self, IRCOMM_STATE state);
-
-#endif
diff --git a/include/net/irda/ircomm_lmp.h b/include/net/irda/ircomm_lmp.h
deleted file mode 100644 (file)
index 5042a50..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_lmp.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Wed Jun  9 10:06:07 1999
- * Modified at:   Fri Aug 13 07:32:32 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_LMP_H
-#define IRCOMM_LMP_H
-
-#include <net/irda/ircomm_core.h>
-
-int ircomm_open_lsap(struct ircomm_cb *self);
-
-#endif
diff --git a/include/net/irda/ircomm_param.h b/include/net/irda/ircomm_param.h
deleted file mode 100644 (file)
index 1f67432..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_param.h
- * Version:       1.0
- * Description:   Parameter handling for the IrCOMM protocol
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Jun  7 08:47:28 1999
- * Modified at:   Wed Aug 25 13:46:33 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_PARAMS_H
-#define IRCOMM_PARAMS_H
-
-#include <net/irda/parameters.h>
-
-/* Parameters common to all service types */
-#define IRCOMM_SERVICE_TYPE     0x00
-#define IRCOMM_PORT_TYPE        0x01 /* Only used in LM-IAS */
-#define IRCOMM_PORT_NAME        0x02 /* Only used in LM-IAS */
-
-/* Parameters for both 3 wire and 9 wire */
-#define IRCOMM_DATA_RATE        0x10
-#define IRCOMM_DATA_FORMAT      0x11
-#define IRCOMM_FLOW_CONTROL     0x12
-#define IRCOMM_XON_XOFF         0x13
-#define IRCOMM_ENQ_ACK          0x14
-#define IRCOMM_LINE_STATUS      0x15
-#define IRCOMM_BREAK            0x16
-
-/* Parameters for 9 wire */
-#define IRCOMM_DTE              0x20
-#define IRCOMM_DCE              0x21
-#define IRCOMM_POLL             0x22
-
-/* Service type (details) */
-#define IRCOMM_3_WIRE_RAW       0x01
-#define IRCOMM_3_WIRE           0x02
-#define IRCOMM_9_WIRE           0x04
-#define IRCOMM_CENTRONICS       0x08
-
-/* Port type (details) */
-#define IRCOMM_SERIAL           0x00
-#define IRCOMM_PARALLEL         0x01
-
-/* Data format (details) */
-#define IRCOMM_WSIZE_5          0x00
-#define IRCOMM_WSIZE_6          0x01
-#define IRCOMM_WSIZE_7          0x02
-#define IRCOMM_WSIZE_8          0x03
-
-#define IRCOMM_1_STOP_BIT       0x00
-#define IRCOMM_2_STOP_BIT       0x04 /* 1.5 if char len 5 */
-
-#define IRCOMM_PARITY_DISABLE   0x00
-#define IRCOMM_PARITY_ENABLE    0x08
-
-#define IRCOMM_PARITY_ODD       0x00
-#define IRCOMM_PARITY_EVEN      0x10
-#define IRCOMM_PARITY_MARK      0x20
-#define IRCOMM_PARITY_SPACE     0x30
-
-/* Flow control */
-#define IRCOMM_XON_XOFF_IN      0x01
-#define IRCOMM_XON_XOFF_OUT     0x02
-#define IRCOMM_RTS_CTS_IN       0x04
-#define IRCOMM_RTS_CTS_OUT      0x08
-#define IRCOMM_DSR_DTR_IN       0x10
-#define IRCOMM_DSR_DTR_OUT      0x20
-#define IRCOMM_ENQ_ACK_IN       0x40
-#define IRCOMM_ENQ_ACK_OUT      0x80
-
-/* Line status */
-#define IRCOMM_OVERRUN_ERROR    0x02
-#define IRCOMM_PARITY_ERROR     0x04
-#define IRCOMM_FRAMING_ERROR    0x08
-
-/* DTE (Data terminal equipment) line settings */
-#define IRCOMM_DELTA_DTR        0x01
-#define IRCOMM_DELTA_RTS        0x02
-#define IRCOMM_DTR              0x04
-#define IRCOMM_RTS              0x08
-
-/* DCE (Data communications equipment) line settings */
-#define IRCOMM_DELTA_CTS        0x01  /* Clear to send has changed */
-#define IRCOMM_DELTA_DSR        0x02  /* Data set ready has changed */
-#define IRCOMM_DELTA_RI         0x04  /* Ring indicator has changed */
-#define IRCOMM_DELTA_CD         0x08  /* Carrier detect has changed */
-#define IRCOMM_CTS              0x10  /* Clear to send is high */
-#define IRCOMM_DSR              0x20  /* Data set ready is high */
-#define IRCOMM_RI               0x40  /* Ring indicator is high */
-#define IRCOMM_CD               0x80  /* Carrier detect is high */
-#define IRCOMM_DCE_DELTA_ANY    0x0f
-
-/*
- * Parameter state
- */
-struct ircomm_params {
-       /* General control params */
-       __u8  service_type;
-       __u8  port_type;
-       char  port_name[32];
-
-       /* Control params for 3- and 9-wire service type */
-       __u32 data_rate;         /* Data rate in bps */
-       __u8  data_format;
-       __u8  flow_control;
-       char  xonxoff[2];
-       char  enqack[2];
-       __u8  line_status;
-       __u8  _break;
-
-       __u8  null_modem;
-
-       /* Control params for 9-wire service type */
-       __u8 dte;
-       __u8 dce;
-       __u8 poll;
-
-       /* Control params for Centronics service type */
-};
-
-struct ircomm_tty_cb; /* Forward decl. */
-
-int ircomm_param_request(struct ircomm_tty_cb *self, __u8 pi, int flush);
-
-extern pi_param_info_t ircomm_param_info;
-
-#endif /* IRCOMM_PARAMS_H */
-
diff --git a/include/net/irda/ircomm_ttp.h b/include/net/irda/ircomm_ttp.h
deleted file mode 100644 (file)
index c562728..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_ttp.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Wed Jun  9 10:06:07 1999
- * Modified at:   Fri Aug 13 07:32:22 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_TTP_H
-#define IRCOMM_TTP_H
-
-#include <net/irda/ircomm_core.h>
-
-int  ircomm_open_tsap(struct ircomm_cb *self);
-
-#endif
-
diff --git a/include/net/irda/ircomm_tty.h b/include/net/irda/ircomm_tty.h
deleted file mode 100644 (file)
index 8d4f588..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_tty.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Jun  6 23:24:22 1999
- * Modified at:   Fri Jan 28 13:16:57 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_TTY_H
-#define IRCOMM_TTY_H
-
-#include <linux/serial.h>
-#include <linux/termios.h>
-#include <linux/timer.h>
-#include <linux/tty.h>         /* struct tty_struct */
-
-#include <net/irda/irias_object.h>
-#include <net/irda/ircomm_core.h>
-#include <net/irda/ircomm_param.h>
-
-#define IRCOMM_TTY_PORTS 32
-#define IRCOMM_TTY_MAGIC 0x3432
-#define IRCOMM_TTY_MAJOR 161
-#define IRCOMM_TTY_MINOR 0
-
-/* This is used as an initial value to max_header_size before the proper
- * value is filled in (5 for ttp, 4 for lmp). This allow us to detect
- * the state of the underlying connection. - Jean II */
-#define IRCOMM_TTY_HDR_UNINITIALISED   16
-/* Same for payload size. See qos.c for the smallest max data size */
-#define IRCOMM_TTY_DATA_UNINITIALISED  (64 - IRCOMM_TTY_HDR_UNINITIALISED)
-
-/*
- * IrCOMM TTY driver state
- */
-struct ircomm_tty_cb {
-       irda_queue_t queue;            /* Must be first */
-       struct tty_port port;
-       magic_t magic;
-
-       int state;                /* Connect state */
-
-       struct ircomm_cb *ircomm; /* IrCOMM layer instance */
-
-       struct sk_buff *tx_skb;   /* Transmit buffer */
-       struct sk_buff *ctrl_skb; /* Control data buffer */
-
-       /* Parameters */
-       struct ircomm_params settings;
-
-       __u8 service_type;        /* The service that we support */
-       int client;               /* True if we are a client */
-       LOCAL_FLOW flow;          /* IrTTP flow status */
-
-       int line;
-
-       __u8 dlsap_sel;
-       __u8 slsap_sel;
-
-       __u32 saddr;
-       __u32 daddr;
-
-       __u32 max_data_size;   /* Max data we can transmit in one packet */
-       __u32 max_header_size; /* The amount of header space we must reserve */
-       __u32 tx_data_size;     /* Max data size of current tx_skb */
-
-       struct iriap_cb *iriap; /* Instance used for querying remote IAS */
-       struct ias_object* obj;
-       void *skey;
-       void *ckey;
-
-       struct timer_list watchdog_timer;
-       struct work_struct  tqueue;
-
-       /* Protect concurent access to :
-        *      o self->ctrl_skb
-        *      o self->tx_skb
-        * Maybe other things may gain to be protected as well...
-        * Jean II */
-       spinlock_t spinlock;
-};
-
-void ircomm_tty_start(struct tty_struct *tty);
-void ircomm_tty_check_modem_status(struct ircomm_tty_cb *self);
-
-int ircomm_tty_tiocmget(struct tty_struct *tty);
-int ircomm_tty_tiocmset(struct tty_struct *tty, unsigned int set,
-                       unsigned int clear);
-int ircomm_tty_ioctl(struct tty_struct *tty, unsigned int cmd,
-                    unsigned long arg);
-void ircomm_tty_set_termios(struct tty_struct *tty,
-                           struct ktermios *old_termios);
-
-#endif
-
-
-
-
-
-
-
diff --git a/include/net/irda/ircomm_tty_attach.h b/include/net/irda/ircomm_tty_attach.h
deleted file mode 100644 (file)
index 20dcbdf..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ircomm_tty_attach.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Wed Jun  9 15:55:18 1999
- * Modified at:   Fri Dec 10 21:04:55 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRCOMM_TTY_ATTACH_H
-#define IRCOMM_TTY_ATTACH_H
-
-#include <net/irda/ircomm_tty.h>
-
-typedef enum {
-        IRCOMM_TTY_IDLE,
-       IRCOMM_TTY_SEARCH,
-        IRCOMM_TTY_QUERY_PARAMETERS,
-       IRCOMM_TTY_QUERY_LSAP_SEL,
-       IRCOMM_TTY_SETUP,
-        IRCOMM_TTY_READY,
-} IRCOMM_TTY_STATE;
-
-/* IrCOMM TTY Events */
-typedef enum {
-       IRCOMM_TTY_ATTACH_CABLE,
-       IRCOMM_TTY_DETACH_CABLE,
-       IRCOMM_TTY_DATA_REQUEST,
-       IRCOMM_TTY_DATA_INDICATION,
-       IRCOMM_TTY_DISCOVERY_REQUEST,
-       IRCOMM_TTY_DISCOVERY_INDICATION,
-       IRCOMM_TTY_CONNECT_CONFIRM,
-       IRCOMM_TTY_CONNECT_INDICATION,
-       IRCOMM_TTY_DISCONNECT_REQUEST,
-       IRCOMM_TTY_DISCONNECT_INDICATION,
-       IRCOMM_TTY_WD_TIMER_EXPIRED,
-       IRCOMM_TTY_GOT_PARAMETERS,
-       IRCOMM_TTY_GOT_LSAPSEL,
-} IRCOMM_TTY_EVENT;
-
-/* Used for passing information through the state-machine */
-struct ircomm_tty_info {
-        __u32     saddr;               /* Source device address */
-        __u32     daddr;               /* Destination device address */
-        __u8      dlsap_sel;
-};
-
-extern const char *const ircomm_state[];
-extern const char *const ircomm_tty_state[];
-
-int ircomm_tty_do_event(struct ircomm_tty_cb *self, IRCOMM_TTY_EVENT event,
-                       struct sk_buff *skb, struct ircomm_tty_info *info);
-
-
-int  ircomm_tty_attach_cable(struct ircomm_tty_cb *self);
-void ircomm_tty_detach_cable(struct ircomm_tty_cb *self);
-void ircomm_tty_connect_confirm(void *instance, void *sap, 
-                               struct qos_info *qos, 
-                               __u32 max_sdu_size, 
-                               __u8 max_header_size, 
-                               struct sk_buff *skb);
-void ircomm_tty_disconnect_indication(void *instance, void *sap, 
-                                     LM_REASON reason,
-                                     struct sk_buff *skb);
-void ircomm_tty_connect_indication(void *instance, void *sap, 
-                                  struct qos_info *qos, 
-                                  __u32 max_sdu_size,
-                                  __u8 max_header_size, 
-                                  struct sk_buff *skb);
-int ircomm_tty_send_initial_parameters(struct ircomm_tty_cb *self);
-void ircomm_tty_link_established(struct ircomm_tty_cb *self);
-
-#endif /* IRCOMM_TTY_ATTACH_H */
diff --git a/include/net/irda/irda.h b/include/net/irda/irda.h
deleted file mode 100644 (file)
index 92c8fb5..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irda.h
- * Version:       1.0
- * Description:   IrDA common include file for kernel internal use
- * Status:        Stable
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Dec  9 21:13:12 1997
- * Modified at:   Fri Jan 28 13:16:32 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#ifndef NET_IRDA_H
-#define NET_IRDA_H
-
-#include <linux/skbuff.h>              /* struct sk_buff */
-#include <linux/kernel.h>
-#include <linux/if.h>                  /* sa_family_t in <linux/irda.h> */
-#include <linux/irda.h>
-
-typedef __u32 magic_t;
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE 
-#define FALSE 0
-#endif
-
-/* Hack to do small backoff when setting media busy in IrLAP */
-#ifndef SMALL
-#define SMALL 5
-#endif
-
-#ifndef IRDA_MIN /* Lets not mix this MIN with other header files */
-#define IRDA_MIN(a, b) (((a) < (b)) ? (a) : (b))
-#endif
-
-#ifndef IRDA_ALIGN
-#  define IRDA_ALIGN __attribute__((aligned))
-#endif
-
-#ifdef CONFIG_IRDA_DEBUG
-#define IRDA_ASSERT(expr, func) \
-do { if(!(expr)) { \
-       printk( "Assertion failed! %s:%s:%d %s\n", \
-               __FILE__,__func__,__LINE__,(#expr) ); \
-       func } } while (0)
-#define IRDA_ASSERT_LABEL(label)       label
-#else
-#define IRDA_ASSERT(expr, func) do { (void)(expr); } while (0)
-#define IRDA_ASSERT_LABEL(label)
-#endif /* CONFIG_IRDA_DEBUG */
-
-/*
- *  Magic numbers used by Linux-IrDA. Random numbers which must be unique to 
- *  give the best protection
- */
-
-#define IRTTY_MAGIC        0x2357
-#define LAP_MAGIC          0x1357
-#define LMP_MAGIC          0x4321
-#define LMP_LSAP_MAGIC     0x69333
-#define LMP_LAP_MAGIC      0x3432
-#define IRDA_DEVICE_MAGIC  0x63454
-#define IAS_MAGIC          0x007
-#define TTP_MAGIC          0x241169
-#define TTP_TSAP_MAGIC     0x4345
-#define IROBEX_MAGIC       0x341324
-#define HB_MAGIC           0x64534
-#define IRLAN_MAGIC        0x754
-#define IAS_OBJECT_MAGIC   0x34234
-#define IAS_ATTRIB_MAGIC   0x45232
-#define IRDA_TASK_MAGIC    0x38423
-
-#define IAS_DEVICE_ID 0x0000 /* Defined by IrDA, IrLMP section 4.1 (page 68) */
-#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
-
-struct net_device;
-struct packet_type;
-
-void irda_proc_register(void);
-void irda_proc_unregister(void);
-
-int irda_sysctl_register(void);
-void irda_sysctl_unregister(void);
-
-int irsock_init(void);
-void irsock_cleanup(void);
-
-int irda_nl_register(void);
-void irda_nl_unregister(void);
-
-int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev,
-                    struct packet_type *ptype, struct net_device *orig_dev);
-
-#endif /* NET_IRDA_H */
diff --git a/include/net/irda/irda_device.h b/include/net/irda/irda_device.h
deleted file mode 100644 (file)
index 664bf81..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irda_device.h
- * Version:       0.9
- * Description:   Contains various declarations used by the drivers
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Apr 14 12:41:42 1998
- * Modified at:   Mon Mar 20 09:08:57 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
- *     Copyright (c) 1998 Thomas Davis, <ratbert@radiks.net>,
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-/*
- * This header contains all the IrDA definitions a driver really
- * needs, and therefore the driver should not need to include
- * any other IrDA headers - Jean II
- */
-
-#ifndef IRDA_DEVICE_H
-#define IRDA_DEVICE_H
-
-#include <linux/tty.h>
-#include <linux/netdevice.h>
-#include <linux/spinlock.h>
-#include <linux/skbuff.h>              /* struct sk_buff */
-#include <linux/irda.h>
-#include <linux/types.h>
-
-#include <net/pkt_sched.h>
-#include <net/irda/irda.h>
-#include <net/irda/qos.h>              /* struct qos_info */
-#include <net/irda/irqueue.h>          /* irda_queue_t */
-
-/* A few forward declarations (to make compiler happy) */
-struct irlap_cb;
-
-/* Some non-standard interface flags (should not conflict with any in if.h) */
-#define IFF_SIR        0x0001 /* Supports SIR speeds */
-#define IFF_MIR        0x0002 /* Supports MIR speeds */
-#define IFF_FIR        0x0004 /* Supports FIR speeds */
-#define IFF_VFIR        0x0008 /* Supports VFIR speeds */
-#define IFF_PIO        0x0010 /* Supports PIO transfer of data */
-#define IFF_DMA                0x0020 /* Supports DMA transfer of data */
-#define IFF_SHM         0x0040 /* Supports shared memory data transfers */
-#define IFF_DONGLE      0x0080 /* Interface has a dongle attached */
-#define IFF_AIR         0x0100 /* Supports Advanced IR (AIR) standards */
-
-#define IO_XMIT 0x01
-#define IO_RECV 0x02
-
-typedef enum {
-       IRDA_IRLAP, /* IrDA mode, and deliver to IrLAP */
-       IRDA_RAW,   /* IrDA mode */
-       SHARP_ASK,
-       TV_REMOTE,  /* Also known as Consumer Electronics IR */
-} INFRARED_MODE;
-
-typedef enum {
-       IRDA_TASK_INIT,        /* All tasks are initialized with this state */
-       IRDA_TASK_DONE,        /* Signals that the task is finished */
-       IRDA_TASK_WAIT,
-       IRDA_TASK_WAIT1,
-       IRDA_TASK_WAIT2,
-       IRDA_TASK_WAIT3,
-       IRDA_TASK_CHILD_INIT,  /* Initializing child task */
-       IRDA_TASK_CHILD_WAIT,  /* Waiting for child task to finish */
-       IRDA_TASK_CHILD_DONE   /* Child task is finished */
-} IRDA_TASK_STATE;
-
-struct irda_task;
-typedef int (*IRDA_TASK_CALLBACK) (struct irda_task *task);
-
-struct irda_task {
-       irda_queue_t q;
-       magic_t magic;
-
-       IRDA_TASK_STATE state;
-       IRDA_TASK_CALLBACK function;
-       IRDA_TASK_CALLBACK finished;
-
-       struct irda_task *parent;
-       struct timer_list timer;
-
-       void *instance; /* Instance being called */
-       void *param;    /* Parameter to be used by instance */
-};
-
-/* Dongle info */
-struct dongle_reg;
-typedef struct {
-       struct dongle_reg *issue;     /* Registration info */
-       struct net_device *dev;           /* Device we are attached to */
-       struct irda_task *speed_task; /* Task handling speed change */
-       struct irda_task *reset_task; /* Task handling reset */
-       __u32 speed;                  /* Current speed */
-
-       /* Callbacks to the IrDA device driver */
-       int (*set_mode)(struct net_device *, int mode);
-       int (*read)(struct net_device *dev, __u8 *buf, int len);
-       int (*write)(struct net_device *dev, __u8 *buf, int len);
-       int (*set_dtr_rts)(struct net_device *dev, int dtr, int rts);
-} dongle_t;
-
-/* Dongle registration info */
-struct dongle_reg {
-       irda_queue_t q;         /* Must be first */
-       IRDA_DONGLE type;
-
-       void (*open)(dongle_t *dongle, struct qos_info *qos);
-       void (*close)(dongle_t *dongle);
-       int  (*reset)(struct irda_task *task);
-       int  (*change_speed)(struct irda_task *task);
-       struct module *owner;
-};
-
-/* 
- * Per-packet information we need to hide inside sk_buff 
- * (must not exceed 48 bytes, check with struct sk_buff)
- * The default_qdisc_pad field is a temporary hack.
- */
-struct irda_skb_cb {
-       unsigned int default_qdisc_pad;
-       magic_t magic;       /* Be sure that we can trust the information */
-       __u32   next_speed;  /* The Speed to be set *after* this frame */
-       __u16   mtt;         /* Minimum turn around time */
-       __u16   xbofs;       /* Number of xbofs required, used by SIR mode */
-       __u16   next_xbofs;  /* Number of xbofs required *after* this frame */
-       void    *context;    /* May be used by drivers */
-       void    (*destructor)(struct sk_buff *skb); /* Used for flow control */
-       __u16   xbofs_delay; /* Number of xbofs used for generating the mtt */
-       __u8    line;        /* Used by IrCOMM in IrLPT mode */
-};
-
-/* Chip specific info */
-typedef struct {
-       int cfg_base;         /* Config register IO base */
-        int sir_base;         /* SIR IO base */
-       int fir_base;         /* FIR IO base */
-       int mem_base;         /* Shared memory base */
-        int sir_ext;          /* Length of SIR iobase */
-       int fir_ext;          /* Length of FIR iobase */
-        int irq, irq2;        /* Interrupts used */
-        int dma, dma2;        /* DMA channel(s) used */
-        int fifo_size;        /* FIFO size */
-        int irqflags;         /* interrupt flags (ie, IRQF_SHARED) */
-       int direction;        /* Link direction, used by some FIR drivers */
-       int enabled;          /* Powered on? */
-       int suspended;        /* Suspended by APM */
-       __u32 speed;          /* Currently used speed */
-       __u32 new_speed;      /* Speed we must change to when Tx is finished */
-       int dongle_id;        /* Dongle or transceiver currently used */
-} chipio_t;
-
-/* IO buffer specific info (inspired by struct sk_buff) */
-typedef struct {
-       int state;            /* Receiving state (transmit state not used) */
-       int in_frame;         /* True if receiving frame */
-
-       __u8 *head;           /* start of buffer */
-       __u8 *data;           /* start of data in buffer */
-
-       int len;              /* current length of data */
-       int truesize;         /* total allocated size of buffer */
-       __u16 fcs;
-
-       struct sk_buff *skb;    /* ZeroCopy Rx in async_unwrap_char() */
-} iobuff_t;
-
-/* Maximum SIR frame (skb) that we expect to receive *unwrapped*.
- * Max LAP MTU (I field) is 2048 bytes max (IrLAP 1.1, chapt 6.6.5, p40).
- * Max LAP header is 2 bytes (for now).
- * Max CRC is 2 bytes at SIR, 4 bytes at FIR. 
- * Need 1 byte for skb_reserve() to align IP header for IrLAN.
- * Add a few extra bytes just to be safe (buffer is power of two anyway)
- * Jean II */
-#define IRDA_SKB_MAX_MTU       2064
-/* Maximum SIR frame that we expect to send, wrapped (i.e. with XBOFS
- * and escaped characters on top of above). */
-#define IRDA_SIR_MAX_FRAME     4269
-
-/* The SIR unwrapper async_unwrap_char() will use a Rx-copy-break mechanism
- * when using the optional ZeroCopy Rx, where only small frames are memcpy
- * to a smaller skb to save memory. This is the threshold under which copy
- * will happen (and over which it won't happen).
- * Some FIR drivers may use this #define as well...
- * This is the same value as various Ethernet drivers. - Jean II */
-#define IRDA_RX_COPY_THRESHOLD  256
-
-/* Function prototypes */
-int  irda_device_init(void);
-void irda_device_cleanup(void);
-
-/* IrLAP entry points used by the drivers.
- * We declare them here to avoid the driver pulling a whole bunch stack
- * headers they don't really need - Jean II */
-struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos,
-                           const char *hw_name);
-void irlap_close(struct irlap_cb *self);
-
-/* Interface to be uses by IrLAP */
-void irda_device_set_media_busy(struct net_device *dev, int status);
-int  irda_device_is_media_busy(struct net_device *dev);
-int  irda_device_is_receiving(struct net_device *dev);
-
-/* Interface for internal use */
-static inline int irda_device_txqueue_empty(const struct net_device *dev)
-{
-       return qdisc_all_tx_empty(dev);
-}
-int  irda_device_set_raw_mode(struct net_device* self, int status);
-struct net_device *alloc_irdadev(int sizeof_priv);
-
-void irda_setup_dma(int channel, dma_addr_t buffer, int count, int mode);
-
-/*
- * Function irda_get_mtt (skb)
- *
- *    Utility function for getting the minimum turnaround time out of 
- *    the skb, where it has been hidden in the cb field.
- */
-static inline __u16 irda_get_mtt(const struct sk_buff *skb)
-{
-       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
-       return (cb->magic == LAP_MAGIC) ? cb->mtt : 10000;
-}
-
-/*
- * Function irda_get_next_speed (skb)
- *
- *    Extract the speed that should be set *after* this frame from the skb
- *
- * Note : return -1 for user space frames
- */
-static inline __u32 irda_get_next_speed(const struct sk_buff *skb)
-{
-       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
-       return (cb->magic == LAP_MAGIC) ? cb->next_speed : -1;
-}
-
-/*
- * Function irda_get_next_xbofs (skb)
- *
- *    Extract the xbofs that should be set for this frame from the skb
- *
- * Note : default to 10 for user space frames
- */
-static inline __u16 irda_get_xbofs(const struct sk_buff *skb)
-{
-       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
-       return (cb->magic == LAP_MAGIC) ? cb->xbofs : 10;
-}
-
-/*
- * Function irda_get_next_xbofs (skb)
- *
- *    Extract the xbofs that should be set *after* this frame from the skb
- *
- * Note : return -1 for user space frames
- */
-static inline __u16 irda_get_next_xbofs(const struct sk_buff *skb)
-{
-       const struct irda_skb_cb *cb = (const struct irda_skb_cb *) skb->cb;
-       return (cb->magic == LAP_MAGIC) ? cb->next_xbofs : -1;
-}
-#endif /* IRDA_DEVICE_H */
-
-
diff --git a/include/net/irda/iriap.h b/include/net/irda/iriap.h
deleted file mode 100644 (file)
index fcc8964..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      iriap.h
- * Version:       0.5
- * Description:   Information Access Protocol (IAP)
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Thu Aug 21 00:02:07 1997
- * Modified at:   Sat Dec 25 16:42:09 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1997-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRIAP_H
-#define IRIAP_H
-
-#include <linux/types.h>
-#include <linux/skbuff.h>
-
-#include <net/irda/iriap_event.h>
-#include <net/irda/irias_object.h>
-#include <net/irda/irqueue.h>          /* irda_queue_t */
-#include <net/irda/timer.h>            /* struct timer_list */
-
-#define IAP_LST 0x80
-#define IAP_ACK 0x40
-
-#define IAS_SERVER 0
-#define IAS_CLIENT 1
-
-/* IrIAP Op-codes */
-#define GET_INFO_BASE      0x01
-#define GET_OBJECTS        0x02
-#define GET_VALUE          0x03
-#define GET_VALUE_BY_CLASS 0x04
-#define GET_OBJECT_INFO    0x05
-#define GET_ATTRIB_NAMES   0x06
-
-#define IAS_SUCCESS        0
-#define IAS_CLASS_UNKNOWN  1
-#define IAS_ATTRIB_UNKNOWN 2
-#define IAS_DISCONNECT     10
-
-typedef void (*CONFIRM_CALLBACK)(int result, __u16 obj_id, 
-                                struct ias_value *value, void *priv);
-
-struct iriap_cb {
-       irda_queue_t q; /* Must be first */     
-       magic_t magic;  /* Magic cookie */
-
-       int          mode;   /* Client or server */
-
-       __u32        saddr;
-       __u32        daddr;
-       __u8         operation;
-
-       struct sk_buff *request_skb;
-       struct lsap_cb *lsap;
-       __u8 slsap_sel;
-
-       /* Client states */
-       IRIAP_STATE client_state;
-       IRIAP_STATE call_state;
-       
-       /* Server states */
-       IRIAP_STATE server_state;
-       IRIAP_STATE r_connect_state;
-       
-       CONFIRM_CALLBACK confirm;
-       void *priv;                /* Used to identify client */
-
-       __u8 max_header_size;
-       __u32 max_data_size;
-       
-       struct timer_list watchdog_timer;
-};
-
-int  iriap_init(void);
-void iriap_cleanup(void);
-
-struct iriap_cb *iriap_open(__u8 slsap_sel, int mode, void *priv, 
-                           CONFIRM_CALLBACK callback);
-void iriap_close(struct iriap_cb *self);
-
-int iriap_getvaluebyclass_request(struct iriap_cb *self, 
-                                 __u32 saddr, __u32 daddr,
-                                 char *name, char *attr);
-void iriap_connect_request(struct iriap_cb *self);
-void iriap_send_ack( struct iriap_cb *self);
-void iriap_call_indication(struct iriap_cb *self, struct sk_buff *skb);
-
-void iriap_register_server(void);
-
-#endif
-
-
diff --git a/include/net/irda/iriap_event.h b/include/net/irda/iriap_event.h
deleted file mode 100644 (file)
index 89747f0..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      iriap_event.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Aug  4 20:40:53 1997
- * Modified at:   Sun Oct 31 22:02:54 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRIAP_FSM_H
-#define IRIAP_FSM_H
-
-/* Forward because of circular include dependecies */
-struct iriap_cb;
-
-/* IrIAP states */
-typedef enum {
-       /* Client */
-       S_DISCONNECT,
-       S_CONNECTING,
-       S_CALL,
-
-       /* S-Call */
-       S_MAKE_CALL,
-       S_CALLING,
-       S_OUTSTANDING,
-       S_REPLYING,
-       S_WAIT_FOR_CALL,
-       S_WAIT_ACTIVE,
-
-       /* Server */
-       R_DISCONNECT,
-       R_CALL,
-       
-       /* R-Connect */
-       R_WAITING,
-       R_WAIT_ACTIVE,
-       R_RECEIVING,
-       R_EXECUTE,
-       R_RETURNING,
-} IRIAP_STATE;
-
-typedef enum {
-       IAP_CALL_REQUEST,
-       IAP_CALL_REQUEST_GVBC,
-       IAP_CALL_RESPONSE,
-       IAP_RECV_F_LST,
-       IAP_LM_DISCONNECT_INDICATION,
-       IAP_LM_CONNECT_INDICATION,
-       IAP_LM_CONNECT_CONFIRM,
-} IRIAP_EVENT;
-
-void iriap_next_client_state   (struct iriap_cb *self, IRIAP_STATE state);
-void iriap_next_call_state     (struct iriap_cb *self, IRIAP_STATE state);
-void iriap_next_server_state   (struct iriap_cb *self, IRIAP_STATE state);
-void iriap_next_r_connect_state(struct iriap_cb *self, IRIAP_STATE state);
-
-
-void iriap_do_client_event(struct iriap_cb *self, IRIAP_EVENT event, 
-                          struct sk_buff *skb);
-void iriap_do_call_event  (struct iriap_cb *self, IRIAP_EVENT event, 
-                          struct sk_buff *skb);
-
-void iriap_do_server_event   (struct iriap_cb *self, IRIAP_EVENT event, 
-                             struct sk_buff *skb);
-void iriap_do_r_connect_event(struct iriap_cb *self, IRIAP_EVENT event, 
-                             struct sk_buff *skb);
-
-#endif /* IRIAP_FSM_H */
-
diff --git a/include/net/irda/irias_object.h b/include/net/irda/irias_object.h
deleted file mode 100644 (file)
index 83f7808..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irias_object.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Thu Oct  1 22:49:50 1998
- * Modified at:   Wed Dec 15 11:20:57 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#ifndef LM_IAS_OBJECT_H
-#define LM_IAS_OBJECT_H
-
-#include <net/irda/irda.h>
-#include <net/irda/irqueue.h>
-
-/* LM-IAS Attribute types */
-#define IAS_MISSING 0
-#define IAS_INTEGER 1
-#define IAS_OCT_SEQ 2
-#define IAS_STRING  3
-
-/* Object ownership of attributes (user or kernel) */
-#define IAS_KERNEL_ATTR        0
-#define IAS_USER_ATTR  1
-
-/*
- *  LM-IAS Object
- */
-struct ias_object {
-       irda_queue_t q;     /* Must be first! */
-       magic_t magic;
-       
-       char  *name;
-       int   id;
-       hashbin_t *attribs;
-};
-
-/*
- *  Values used by LM-IAS attributes
- */
-struct ias_value {
-        __u8    type;    /* Value description */
-       __u8    owner;  /* Managed from user/kernel space */
-       int     charset; /* Only used by string type */
-        int     len;
-       
-       /* Value */
-       union {
-               int integer;
-               char *string;
-               __u8 *oct_seq;
-       } t;
-};
-
-/*
- *  Attributes used by LM-IAS objects
- */
-struct ias_attrib {
-       irda_queue_t q; /* Must be first! */
-       int magic;
-
-        char *name;             /* Attribute name */
-       struct ias_value *value; /* Attribute value */
-};
-
-struct ias_object *irias_new_object(char *name, int id);
-void irias_insert_object(struct ias_object *obj);
-int  irias_delete_object(struct ias_object *obj);
-int  irias_delete_attrib(struct ias_object *obj, struct ias_attrib *attrib,
-                        int cleanobject);
-void __irias_delete_object(struct ias_object *obj);
-
-void irias_add_integer_attrib(struct ias_object *obj, char *name, int value,
-                             int user);
-void irias_add_string_attrib(struct ias_object *obj, char *name, char *value,
-                            int user);
-void irias_add_octseq_attrib(struct ias_object *obj, char *name, __u8 *octets,
-                            int len, int user);
-int irias_object_change_attribute(char *obj_name, char *attrib_name, 
-                                 struct ias_value *new_value);
-struct ias_object *irias_find_object(char *name);
-struct ias_attrib *irias_find_attrib(struct ias_object *obj, char *name);
-
-struct ias_value *irias_new_string_value(char *string);
-struct ias_value *irias_new_integer_value(int integer);
-struct ias_value *irias_new_octseq_value(__u8 *octseq , int len);
-struct ias_value *irias_new_missing_value(void);
-void irias_delete_value(struct ias_value *value);
-
-extern struct ias_value irias_missing;
-extern hashbin_t *irias_objects;
-
-#endif
diff --git a/include/net/irda/irlan_client.h b/include/net/irda/irlan_client.h
deleted file mode 100644 (file)
index fa8455e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlan_client.h
- * Version:       0.3
- * Description:   IrDA LAN access layer
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Aug 31 20:14:37 1997
- * Modified at:   Thu Apr 22 14:13:34 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLAN_CLIENT_H
-#define IRLAN_CLIENT_H
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-
-#include <net/irda/irias_object.h>
-#include <net/irda/irlan_event.h>
-
-void irlan_client_discovery_indication(discinfo_t *, DISCOVERY_MODE, void *);
-void irlan_client_wakeup(struct irlan_cb *self, __u32 saddr, __u32 daddr);
-
-void irlan_client_parse_response(struct irlan_cb *self, struct sk_buff *skb);
-void irlan_client_get_value_confirm(int result, __u16 obj_id, 
-                                   struct ias_value *value, void *priv);
-#endif
diff --git a/include/net/irda/irlan_common.h b/include/net/irda/irlan_common.h
deleted file mode 100644 (file)
index 550c2d6..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlan_common.h
- * Version:       0.8
- * Description:   IrDA LAN access layer
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Aug 31 20:14:37 1997
- * Modified at:   Sun Oct 31 19:41:24 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLAN_H
-#define IRLAN_H
-
-#include <asm/param.h>  /* for HZ */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-#include <linux/if_ether.h>
-
-#include <net/irda/irttp.h>
-
-#define IRLAN_MTU        1518
-#define IRLAN_TIMEOUT    10*HZ /* 10 seconds */
-
-/* Command packet types */
-#define CMD_GET_PROVIDER_INFO   0
-#define CMD_GET_MEDIA_CHAR      1
-#define CMD_OPEN_DATA_CHANNEL   2
-#define CMD_CLOSE_DATA_CHAN     3
-#define CMD_RECONNECT_DATA_CHAN 4
-#define CMD_FILTER_OPERATION    5
-
-/* Some responses */
-#define RSP_SUCCESS                 0
-#define RSP_INSUFFICIENT_RESOURCES  1
-#define RSP_INVALID_COMMAND_FORMAT  2
-#define RSP_COMMAND_NOT_SUPPORTED   3
-#define RSP_PARAM_NOT_SUPPORTED     4
-#define RSP_VALUE_NOT_SUPPORTED     5
-#define RSP_NOT_OPEN                6
-#define RSP_AUTHENTICATION_REQUIRED 7
-#define RSP_INVALID_PASSWORD        8
-#define RSP_PROTOCOL_ERROR          9
-#define RSP_ASYNCHRONOUS_ERROR    255
-
-/* Media types */
-#define MEDIA_802_3 1
-#define MEDIA_802_5 2
-
-/* Filter parameters */
-#define DATA_CHAN   1
-#define FILTER_TYPE 2
-#define FILTER_MODE 3
-
-/* Filter types */
-#define IRLAN_DIRECTED   0x01
-#define IRLAN_FUNCTIONAL 0x02
-#define IRLAN_GROUP      0x04
-#define IRLAN_MAC_FRAME  0x08
-#define IRLAN_MULTICAST  0x10
-#define IRLAN_BROADCAST  0x20
-#define IRLAN_IPX_SOCKET 0x40
-
-/* Filter modes */
-#define ALL     1
-#define FILTER  2
-#define NONE    3
-
-/* Filter operations */
-#define GET     1
-#define CLEAR   2
-#define ADD     3
-#define REMOVE  4
-#define DYNAMIC 5
-
-/* Access types */
-#define ACCESS_DIRECT  1
-#define ACCESS_PEER    2
-#define ACCESS_HOSTED  3
-
-#define IRLAN_BYTE   0
-#define IRLAN_SHORT  1
-#define IRLAN_ARRAY  2
-
-/* IrLAN sits on top if IrTTP */
-#define IRLAN_MAX_HEADER (TTP_HEADER+LMP_HEADER)
-/* 1 byte for the command code and 1 byte for the parameter count */
-#define IRLAN_CMD_HEADER 2
-
-#define IRLAN_STRING_PARAMETER_LEN(name, value) (1 + strlen((name)) + 2 \
-                                               + strlen ((value)))
-#define IRLAN_BYTE_PARAMETER_LEN(name)          (1 + strlen((name)) + 2 + 1)
-#define IRLAN_SHORT_PARAMETER_LEN(name)         (1 + strlen((name)) + 2 + 2)
-
-/*
- *  IrLAN client
- */
-struct irlan_client_cb {
-       int state;
-
-       int open_retries;
-
-       struct tsap_cb *tsap_ctrl;
-       __u32 max_sdu_size;
-       __u8  max_header_size;
-       
-       int access_type;         /* Access type of provider */
-       __u8 reconnect_key[255];
-       __u8 key_len;
-       
-       __u16 recv_arb_val;
-       __u16 max_frame;
-       int filter_type;
-
-       int unicast_open;
-       int broadcast_open;
-
-       int tx_busy;
-       struct sk_buff_head txq; /* Transmit control queue */
-
-       struct iriap_cb *iriap;
-
-       struct timer_list kick_timer;
-};
-
-/*
- * IrLAN provider
- */
-struct irlan_provider_cb {
-       int state;
-       
-       struct tsap_cb *tsap_ctrl;
-       __u32 max_sdu_size;
-       __u8  max_header_size;
-
-       /*
-        *  Store some values here which are used by the provider to parse
-        *  the filter operations
-        */
-       int data_chan;
-       int filter_type;
-       int filter_mode;
-       int filter_operation;
-       int filter_entry;
-       int access_type;     /* Access type */
-       __u16 send_arb_val;
-
-       __u8 mac_address[ETH_ALEN]; /* Generated MAC address for peer device */
-};
-
-/*
- *  IrLAN control block
- */
-struct irlan_cb {
-       int    magic;
-       struct list_head  dev_list;
-       struct net_device *dev;        /* Ethernet device structure*/
-
-       __u32 saddr;               /* Source device address */
-       __u32 daddr;               /* Destination device address */
-       int disconnect_reason;     /* Why we got disconnected */
-       
-       int media;                 /* Media type */
-       __u8 version[2];           /* IrLAN version */
-       
-       struct tsap_cb *tsap_data; /* Data TSAP */
-
-       int  use_udata;            /* Use Unit Data transfers */
-
-       __u8 stsap_sel_data;       /* Source data TSAP selector */
-       __u8 dtsap_sel_data;       /* Destination data TSAP selector */
-       __u8 dtsap_sel_ctrl;       /* Destination ctrl TSAP selector */
-
-       struct irlan_client_cb   client;   /* Client specific fields */
-       struct irlan_provider_cb provider; /* Provider specific fields */
-
-       __u32 max_sdu_size;
-       __u8  max_header_size;
-       
-       wait_queue_head_t open_wait;
-       struct timer_list watchdog_timer;
-};
-
-void irlan_close(struct irlan_cb *self);
-void irlan_close_tsaps(struct irlan_cb *self);
-
-int  irlan_register_netdev(struct irlan_cb *self);
-void irlan_ias_register(struct irlan_cb *self, __u8 tsap_sel);
-void irlan_start_watchdog_timer(struct irlan_cb *self, int timeout);
-
-void irlan_open_data_tsap(struct irlan_cb *self);
-
-int irlan_run_ctrl_tx_queue(struct irlan_cb *self);
-
-struct irlan_cb *irlan_get_any(void);
-void irlan_get_provider_info(struct irlan_cb *self);
-void irlan_get_media_char(struct irlan_cb *self);
-void irlan_open_data_channel(struct irlan_cb *self);
-void irlan_close_data_channel(struct irlan_cb *self);
-void irlan_set_multicast_filter(struct irlan_cb *self, int status);
-void irlan_set_broadcast_filter(struct irlan_cb *self, int status);
-
-int irlan_insert_byte_param(struct sk_buff *skb, char *param, __u8 value);
-int irlan_insert_short_param(struct sk_buff *skb, char *param, __u16 value);
-int irlan_insert_string_param(struct sk_buff *skb, char *param, char *value);
-int irlan_insert_array_param(struct sk_buff *skb, char *name, __u8 *value, 
-                            __u16 value_len);
-
-int irlan_extract_param(__u8 *buf, char *name, char *value, __u16 *len);
-
-#endif
-
-
diff --git a/include/net/irda/irlan_eth.h b/include/net/irda/irlan_eth.h
deleted file mode 100644 (file)
index de5c816..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlan_eth.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Thu Oct 15 08:36:58 1998
- * Modified at:   Fri May 14 23:29:00 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#ifndef IRLAN_ETH_H
-#define IRLAN_ETH_H
-
-struct net_device *alloc_irlandev(const char *name);
-int  irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb);
-
-void irlan_eth_flow_indication( void *instance, void *sap, LOCAL_FLOW flow);
-#endif
diff --git a/include/net/irda/irlan_event.h b/include/net/irda/irlan_event.h
deleted file mode 100644 (file)
index 018b5a7..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlan_event.h
- * Version:       
- * Description:   LAN access
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Aug 31 20:14:37 1997
- * Modified at:   Tue Feb  2 09:45:17 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1997 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLAN_EVENT_H
-#define IRLAN_EVENT_H
-
-#include <linux/kernel.h>
-#include <linux/skbuff.h>
-
-#include <net/irda/irlan_common.h>
-
-typedef enum {
-       IRLAN_IDLE,
-       IRLAN_QUERY,
-       IRLAN_CONN, 
-       IRLAN_INFO,
-       IRLAN_MEDIA,
-       IRLAN_OPEN,
-       IRLAN_WAIT,
-       IRLAN_ARB, 
-       IRLAN_DATA,
-       IRLAN_CLOSE,
-       IRLAN_SYNC
-} IRLAN_STATE;
-
-typedef enum {
-       IRLAN_DISCOVERY_INDICATION,
-       IRLAN_IAS_PROVIDER_AVAIL,
-       IRLAN_IAS_PROVIDER_NOT_AVAIL,
-       IRLAN_LAP_DISCONNECT,
-       IRLAN_LMP_DISCONNECT,
-       IRLAN_CONNECT_COMPLETE,
-       IRLAN_DATA_INDICATION,
-       IRLAN_DATA_CONNECT_INDICATION,
-       IRLAN_RETRY_CONNECT,
-
-       IRLAN_CONNECT_INDICATION,
-       IRLAN_GET_INFO_CMD,
-       IRLAN_GET_MEDIA_CMD,
-       IRLAN_OPEN_DATA_CMD,
-       IRLAN_FILTER_CONFIG_CMD,
-
-       IRLAN_CHECK_CON_ARB,
-       IRLAN_PROVIDER_SIGNAL,
-
-       IRLAN_WATCHDOG_TIMEOUT,
-} IRLAN_EVENT;
-
-extern const char * const irlan_state[];
-
-void irlan_do_client_event(struct irlan_cb *self, IRLAN_EVENT event, 
-                          struct sk_buff *skb);
-
-void irlan_do_provider_event(struct irlan_cb *self, IRLAN_EVENT event, 
-                            struct sk_buff *skb);
-
-void irlan_next_client_state(struct irlan_cb *self, IRLAN_STATE state);
-void irlan_next_provider_state(struct irlan_cb *self, IRLAN_STATE state);
-
-#endif
diff --git a/include/net/irda/irlan_filter.h b/include/net/irda/irlan_filter.h
deleted file mode 100644 (file)
index a5a2539..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlan_filter.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Fri Jan 29 15:24:08 1999
- * Modified at:   Sun Feb  7 23:35:31 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998 Dag Brattli, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#ifndef IRLAN_FILTER_H
-#define IRLAN_FILTER_H
-
-void irlan_check_command_param(struct irlan_cb *self, char *param, 
-                              char *value);
-void irlan_filter_request(struct irlan_cb *self, struct sk_buff *skb);
-#ifdef CONFIG_PROC_FS
-void irlan_print_filter(struct seq_file *seq, int filter_type);
-#endif
-
-#endif /* IRLAN_FILTER_H */
diff --git a/include/net/irda/irlan_provider.h b/include/net/irda/irlan_provider.h
deleted file mode 100644 (file)
index 92f3b0e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlan_provider.h
- * Version:       0.1
- * Description:   IrDA LAN access layer
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Aug 31 20:14:37 1997
- * Modified at:   Sun May  9 12:26:11 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLAN_SERVER_H
-#define IRLAN_SERVER_H
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-
-#include <net/irda/irlan_common.h>
-
-void irlan_provider_ctrl_disconnect_indication(void *instance, void *sap, 
-                                              LM_REASON reason, 
-                                              struct sk_buff *skb);
-
-
-void irlan_provider_connect_response(struct irlan_cb *, struct tsap_cb *);
-
-int irlan_parse_open_data_cmd(struct irlan_cb *self, struct sk_buff *skb);
-int irlan_provider_parse_command(struct irlan_cb *self, int cmd,
-                                struct sk_buff *skb);
-
-void irlan_provider_send_reply(struct irlan_cb *self, int command, 
-                              int ret_code);
-int irlan_provider_open_ctrl_tsap(struct irlan_cb *self);
-
-#endif
-
-
diff --git a/include/net/irda/irlap.h b/include/net/irda/irlap.h
deleted file mode 100644 (file)
index 6f23e82..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlap.h
- * Version:       0.8
- * Description:   An IrDA LAP driver for Linux
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Aug  4 20:40:53 1997
- * Modified at:   Fri Dec 10 13:21:17 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLAP_H
-#define IRLAP_H
-
-#include <linux/types.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-#include <linux/timer.h>
-
-#include <net/irda/irqueue.h>          /* irda_queue_t */
-#include <net/irda/qos.h>              /* struct qos_info */
-#include <net/irda/discovery.h>                /* discovery_t */
-#include <net/irda/irlap_event.h>      /* IRLAP_STATE, ... */
-#include <net/irda/irmod.h>            /* struct notify_t */
-
-#define CONFIG_IRDA_DYNAMIC_WINDOW 1
-
-#define LAP_RELIABLE   1
-#define LAP_UNRELIABLE 0
-
-#define LAP_ADDR_HEADER 1  /* IrLAP Address Header */
-#define LAP_CTRL_HEADER 1  /* IrLAP Control Header */
-
-/* May be different when we get VFIR */
-#define LAP_MAX_HEADER (LAP_ADDR_HEADER + LAP_CTRL_HEADER)
-
-/* Each IrDA device gets a random 32 bits IRLAP device address */
-#define LAP_ALEN 4
-
-#define BROADCAST  0xffffffff /* Broadcast device address */
-#define CBROADCAST 0xfe       /* Connection broadcast address */
-#define XID_FORMAT 0x01       /* Discovery XID format */
-
-/* Nobody seems to use this constant. */
-#define LAP_WINDOW_SIZE 8
-/* We keep the LAP queue very small to minimise the amount of buffering.
- * this improve latency and reduce resource consumption.
- * This work only because we have synchronous refilling of IrLAP through
- * the flow control mechanism (via scheduler and IrTTP).
- * 2 buffers is the minimum we can work with, one that we send while polling
- * IrTTP, and another to know that we should not send the pf bit.
- * Jean II */
-#define LAP_HIGH_THRESHOLD     2
-/* Some rare non TTP clients don't implement flow control, and
- * so don't comply with the above limit (and neither with this one).
- * For IAP and management, it doesn't matter, because they never transmit much.
- *.For IrLPT, this should be fixed.
- * - Jean II */
-#define LAP_MAX_QUEUE 10
-/* Please note that all IrDA management frames (LMP/TTP conn req/disc and
- * IAS queries) fall in the second category and are sent to LAP even if TTP
- * is stopped. This means that those frames will wait only a maximum of
- * two (2) data frames before beeing sent on the "wire", which speed up
- * new socket setup when the link is saturated.
- * Same story for two sockets competing for the medium : if one saturates
- * the LAP, when the other want to transmit it only has to wait for
- * maximum three (3) packets (2 + one scheduling), which improve performance
- * of delay sensitive applications.
- * Jean II */
-
-#define NR_EXPECTED     1
-#define NR_UNEXPECTED   0
-#define NR_INVALID     -1
-
-#define NS_EXPECTED     1
-#define NS_UNEXPECTED   0
-#define NS_INVALID     -1
-
-/*
- *  Meta information passed within the IrLAP state machine
- */
-struct irlap_info {
-       __u8 caddr;   /* Connection address */
-       __u8 control; /* Frame type */
-        __u8 cmd;
-
-       __u32 saddr;
-       __u32 daddr;
-       
-       int pf;        /* Poll/final bit set */
-
-       __u8  nr;      /* Sequence number of next frame expected */
-       __u8  ns;      /* Sequence number of frame sent */
-
-       int  S;        /* Number of slots */
-       int  slot;     /* Random chosen slot */
-       int  s;        /* Current slot */
-
-       discovery_t *discovery; /* Discovery information */
-};
-
-/* Main structure of IrLAP */
-struct irlap_cb {
-       irda_queue_t q;     /* Must be first */
-       magic_t magic;
-
-       /* Device we are attached to */
-       struct net_device  *netdev;
-       char            hw_name[2*IFNAMSIZ + 1];
-
-       /* Connection state */
-       volatile IRLAP_STATE state;       /* Current state */
-
-       /* Timers used by IrLAP */
-       struct timer_list query_timer;
-       struct timer_list slot_timer;
-       struct timer_list discovery_timer;
-       struct timer_list final_timer;
-       struct timer_list poll_timer;
-       struct timer_list wd_timer;
-       struct timer_list backoff_timer;
-
-       /* Media busy stuff */
-       struct timer_list media_busy_timer;
-       int media_busy;
-
-       /* Timeouts which will be different with different turn time */
-       int slot_timeout;
-       int poll_timeout;
-       int final_timeout;
-       int wd_timeout;
-
-       struct sk_buff_head txq;  /* Frames to be transmitted */
-       struct sk_buff_head txq_ultra;
-
-       __u8    caddr;        /* Connection address */
-       __u32   saddr;        /* Source device address */
-       __u32   daddr;        /* Destination device address */
-
-       int     retry_count;  /* Times tried to establish connection */
-       int     add_wait;     /* True if we are waiting for frame */
-
-       __u8    connect_pending;
-       __u8    disconnect_pending;
-
-       /*  To send a faster RR if tx queue empty */
-#ifdef CONFIG_IRDA_FAST_RR
-       int     fast_RR_timeout;
-       int     fast_RR;      
-#endif /* CONFIG_IRDA_FAST_RR */
-       
-       int N1; /* N1 * F-timer = Negitiated link disconnect warning threshold */
-       int N2; /* N2 * F-timer = Negitiated link disconnect time */
-       int N3; /* Connection retry count */
-
-       int     local_busy;
-       int     remote_busy;
-       int     xmitflag;
-
-       __u8    vs;            /* Next frame to be sent */
-       __u8    vr;            /* Next frame to be received */
-       __u8    va;            /* Last frame acked */
-       int     window;        /* Nr of I-frames allowed to send */
-       int     window_size;   /* Current negotiated window size */
-
-#ifdef CONFIG_IRDA_DYNAMIC_WINDOW
-       __u32   line_capacity; /* Number of bytes allowed to send */
-       __u32   bytes_left;    /* Number of bytes still allowed to transmit */
-#endif /* CONFIG_IRDA_DYNAMIC_WINDOW */
-
-       struct sk_buff_head wx_list;
-
-       __u8    ack_required;
-       
-       /* XID parameters */
-       __u8    S;           /* Number of slots */
-       __u8    slot;        /* Random chosen slot */
-       __u8    s;           /* Current slot */
-       int     frame_sent;  /* Have we sent reply? */
-
-       hashbin_t   *discovery_log;
-       discovery_t *discovery_cmd;
-
-       __u32 speed;            /* Link speed */
-
-       struct qos_info  qos_tx;   /* QoS requested by peer */
-       struct qos_info  qos_rx;   /* QoS requested by self */
-       struct qos_info *qos_dev;  /* QoS supported by device */
-
-       notify_t notify; /* Callbacks to IrLMP */
-
-       int    mtt_required;  /* Minimum turnaround time required */
-       int    xbofs_delay;   /* Nr of XBOF's used to MTT */
-       int    bofs_count;    /* Negotiated extra BOFs */
-       int    next_bofs;     /* Negotiated extra BOFs after next frame */
-
-       int    mode;     /* IrLAP mode (primary, secondary or monitor) */
-};
-
-/* 
- *  Function prototypes 
- */
-int irlap_init(void);
-void irlap_cleanup(void);
-
-struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos,
-                           const char *hw_name);
-void irlap_close(struct irlap_cb *self);
-
-void irlap_connect_request(struct irlap_cb *self, __u32 daddr, 
-                          struct qos_info *qos, int sniff);
-void irlap_connect_response(struct irlap_cb *self, struct sk_buff *skb);
-void irlap_connect_indication(struct irlap_cb *self, struct sk_buff *skb);
-void irlap_connect_confirm(struct irlap_cb *, struct sk_buff *skb);
-
-void irlap_data_indication(struct irlap_cb *, struct sk_buff *, int unreliable);
-void irlap_data_request(struct irlap_cb *, struct sk_buff *, int unreliable);
-
-#ifdef CONFIG_IRDA_ULTRA
-void irlap_unitdata_request(struct irlap_cb *, struct sk_buff *);
-void irlap_unitdata_indication(struct irlap_cb *, struct sk_buff *);
-#endif /* CONFIG_IRDA_ULTRA */
-
-void irlap_disconnect_request(struct irlap_cb *);
-void irlap_disconnect_indication(struct irlap_cb *, LAP_REASON reason);
-
-void irlap_status_indication(struct irlap_cb *, int quality_of_link);
-
-void irlap_test_request(__u8 *info, int len);
-
-void irlap_discovery_request(struct irlap_cb *, discovery_t *discovery);
-void irlap_discovery_confirm(struct irlap_cb *, hashbin_t *discovery_log);
-void irlap_discovery_indication(struct irlap_cb *, discovery_t *discovery);
-
-void irlap_reset_indication(struct irlap_cb *self);
-void irlap_reset_confirm(void);
-
-void irlap_update_nr_received(struct irlap_cb *, int nr);
-int irlap_validate_nr_received(struct irlap_cb *, int nr);
-int irlap_validate_ns_received(struct irlap_cb *, int ns);
-
-int  irlap_generate_rand_time_slot(int S, int s);
-void irlap_initiate_connection_state(struct irlap_cb *);
-void irlap_flush_all_queues(struct irlap_cb *);
-void irlap_wait_min_turn_around(struct irlap_cb *, struct qos_info *);
-
-void irlap_apply_default_connection_parameters(struct irlap_cb *self);
-void irlap_apply_connection_parameters(struct irlap_cb *self, int now);
-
-#define IRLAP_GET_HEADER_SIZE(self) (LAP_MAX_HEADER)
-#define IRLAP_GET_TX_QUEUE_LEN(self) skb_queue_len(&self->txq)
-
-/* Return TRUE if the node is in primary mode (i.e. master)
- * - Jean II */
-static inline int irlap_is_primary(struct irlap_cb *self)
-{
-       int ret;
-       switch(self->state) {
-       case LAP_XMIT_P:
-       case LAP_NRM_P:
-               ret = 1;
-               break;
-       case LAP_XMIT_S:
-       case LAP_NRM_S:
-               ret = 0;
-               break;
-       default:
-               ret = -1;
-       }
-       return ret;
-}
-
-/* Clear a pending IrLAP disconnect. - Jean II */
-static inline void irlap_clear_disconnect(struct irlap_cb *self)
-{
-       self->disconnect_pending = FALSE;
-}
-
-/*
- * Function irlap_next_state (self, state)
- *
- *    Switches state and provides debug information
- *
- */
-static inline void irlap_next_state(struct irlap_cb *self, IRLAP_STATE state)
-{
-       /*
-       if (!self || self->magic != LAP_MAGIC)
-               return;
-
-               pr_debug("next LAP state = %s\n", irlap_state[state]);
-       */
-       self->state = state;
-}
-
-#endif
diff --git a/include/net/irda/irlap_event.h b/include/net/irda/irlap_event.h
deleted file mode 100644 (file)
index e4325fe..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*********************************************************************
- *                
- *                
- * Filename:      irlap_event.h
- * Version:       0.1
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sat Aug 16 00:59:29 1997
- * Modified at:   Tue Dec 21 11:20:30 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRLAP_EVENT_H
-#define IRLAP_EVENT_H
-
-#include <net/irda/irda.h>
-
-/* A few forward declarations (to make compiler happy) */
-struct irlap_cb;
-struct irlap_info;
-
-/* IrLAP States */
-typedef enum {
-       LAP_NDM,         /* Normal disconnected mode */
-       LAP_QUERY,
-       LAP_REPLY,
-       LAP_CONN,        /* Connect indication */
-       LAP_SETUP,       /* Setting up connection */
-       LAP_OFFLINE,     /* A really boring state */
-       LAP_XMIT_P,
-       LAP_PCLOSE,
-       LAP_NRM_P,       /* Normal response mode as primary */
-       LAP_RESET_WAIT,
-       LAP_RESET,
-       LAP_NRM_S,       /* Normal response mode as secondary */
-       LAP_XMIT_S,
-       LAP_SCLOSE,
-       LAP_RESET_CHECK,
-} IRLAP_STATE;
-
-/* IrLAP Events */
-typedef enum {
-       /* Services events */
-       DISCOVERY_REQUEST,
-       CONNECT_REQUEST,
-       CONNECT_RESPONSE,
-       DISCONNECT_REQUEST,
-       DATA_REQUEST,
-       RESET_REQUEST,
-       RESET_RESPONSE,
-
-       /* Send events */
-       SEND_I_CMD,
-       SEND_UI_FRAME,
-
-       /* Receive events */
-       RECV_DISCOVERY_XID_CMD,
-       RECV_DISCOVERY_XID_RSP,
-       RECV_SNRM_CMD,
-       RECV_TEST_CMD,
-       RECV_TEST_RSP,
-       RECV_UA_RSP,
-       RECV_DM_RSP,
-       RECV_RD_RSP,
-       RECV_I_CMD,
-       RECV_I_RSP,
-       RECV_UI_FRAME,
-       RECV_FRMR_RSP,
-       RECV_RR_CMD,
-       RECV_RR_RSP,
-       RECV_RNR_CMD,
-       RECV_RNR_RSP,
-       RECV_REJ_CMD,
-       RECV_REJ_RSP,
-       RECV_SREJ_CMD,
-       RECV_SREJ_RSP,
-       RECV_DISC_CMD,
-
-       /* Timer events */
-       SLOT_TIMER_EXPIRED,
-       QUERY_TIMER_EXPIRED,
-       FINAL_TIMER_EXPIRED,
-       POLL_TIMER_EXPIRED,
-       DISCOVERY_TIMER_EXPIRED,
-       WD_TIMER_EXPIRED,
-       BACKOFF_TIMER_EXPIRED,
-       MEDIA_BUSY_TIMER_EXPIRED,
-} IRLAP_EVENT;
-
-/*
- * Disconnect reason code
- */
-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;
-
-extern const char *const irlap_state[];
-
-void irlap_do_event(struct irlap_cb *self, IRLAP_EVENT event, 
-                   struct sk_buff *skb, struct irlap_info *info);
-void irlap_print_event(IRLAP_EVENT event);
-
-int irlap_qos_negotiate(struct irlap_cb *self, struct sk_buff *skb);
-
-#endif
diff --git a/include/net/irda/irlap_frame.h b/include/net/irda/irlap_frame.h
deleted file mode 100644 (file)
index cbc12a9..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlap_frame.h
- * Version:       0.9
- * Description:   IrLAP frame declarations
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Aug 19 10:27:26 1997
- * Modified at:   Sat Dec 25 21:07:26 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1997-1999 Dag Brattli <dagb@cs.uit.no>,
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRLAP_FRAME_H
-#define IRLAP_FRAME_H
-
-#include <linux/skbuff.h>
-
-#include <net/irda/irda.h>
-
-/* A few forward declarations (to make compiler happy) */
-struct irlap_cb;
-struct discovery_t;
-
-/* Frame types and templates */
-#define INVALID   0xff
-
-/* Unnumbered (U) commands */
-#define SNRM_CMD  0x83 /* Set Normal Response Mode */
-#define DISC_CMD  0x43 /* Disconnect */
-#define XID_CMD   0x2f /* Exchange Station Identification */
-#define TEST_CMD  0xe3 /* Test */
-
-/* Unnumbered responses */
-#define RNRM_RSP  0x83 /* Request Normal Response Mode */
-#define UA_RSP    0x63 /* Unnumbered Acknowledgement */
-#define FRMR_RSP  0x87 /* Frame Reject */
-#define DM_RSP    0x0f /* Disconnect Mode */
-#define RD_RSP    0x43 /* Request Disconnection */
-#define XID_RSP   0xaf /* Exchange Station Identification */
-#define TEST_RSP  0xe3 /* Test frame */
-
-/* Supervisory (S) */
-#define RR        0x01 /* Receive Ready */
-#define REJ       0x09 /* Reject */
-#define RNR       0x05 /* Receive Not Ready */
-#define SREJ      0x0d /* Selective Reject */
-
-/* Information (I) */
-#define I_FRAME   0x00 /* Information Format */
-#define UI_FRAME  0x03 /* Unnumbered Information */
-
-#define CMD_FRAME 0x01
-#define RSP_FRAME 0x00
-
-#define PF_BIT    0x10 /* Poll/final bit */
-
-/* Some IrLAP field lengths */
-/*
- * Only baud rate triplet is 4 bytes (PV can be 2 bytes).
- * All others params (7) are 3 bytes, so that's 7*3 + 1*4 bytes.
- */
-#define IRLAP_NEGOCIATION_PARAMS_LEN 25
-#define IRLAP_DISCOVERY_INFO_LEN     32
-
-struct disc_frame {
-       __u8 caddr;          /* Connection address */
-       __u8 control;
-} __packed;
-
-struct xid_frame {
-       __u8  caddr; /* Connection address */
-       __u8  control;
-       __u8  ident; /* Should always be XID_FORMAT */ 
-       __le32 saddr; /* Source device address */
-       __le32 daddr; /* Destination device address */
-       __u8  flags; /* Discovery flags */
-       __u8  slotnr;
-       __u8  version;
-} __packed;
-
-struct test_frame {
-       __u8 caddr;          /* Connection address */
-       __u8 control;
-       __le32 saddr;         /* Source device address */
-       __le32 daddr;         /* Destination device address */
-} __packed;
-
-struct ua_frame {
-       __u8 caddr;
-       __u8 control;
-       __le32 saddr; /* Source device address */
-       __le32 daddr; /* Dest device address */
-} __packed;
-
-struct dm_frame {
-       __u8 caddr;          /* Connection address */
-       __u8 control;
-} __packed;
-
-struct rd_frame {
-       __u8 caddr;          /* Connection address */
-       __u8 control;
-} __packed;
-
-struct rr_frame {
-       __u8 caddr;          /* Connection address */
-       __u8 control;
-} __packed;
-
-struct i_frame {
-       __u8 caddr;
-       __u8 control;
-} __packed;
-
-struct snrm_frame {
-       __u8  caddr;
-       __u8  control;
-       __le32 saddr;
-       __le32 daddr;
-       __u8  ncaddr;
-} __packed;
-
-void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb);
-void irlap_send_discovery_xid_frame(struct irlap_cb *, int S, __u8 s, 
-                                   __u8 command,
-                                   struct discovery_t *discovery);
-void irlap_send_snrm_frame(struct irlap_cb *, struct qos_info *);
-void irlap_send_test_frame(struct irlap_cb *self, __u8 caddr, __u32 daddr, 
-                          struct sk_buff *cmd);
-void irlap_send_ua_response_frame(struct irlap_cb *, struct qos_info *);
-void irlap_send_dm_frame(struct irlap_cb *self);
-void irlap_send_rd_frame(struct irlap_cb *self);
-void irlap_send_disc_frame(struct irlap_cb *self);
-void irlap_send_rr_frame(struct irlap_cb *self, int command);
-
-void irlap_send_data_primary(struct irlap_cb *, struct sk_buff *);
-void irlap_send_data_primary_poll(struct irlap_cb *, struct sk_buff *);
-void irlap_send_data_secondary(struct irlap_cb *, struct sk_buff *);
-void irlap_send_data_secondary_final(struct irlap_cb *, struct sk_buff *);
-void irlap_resend_rejected_frames(struct irlap_cb *, int command);
-void irlap_resend_rejected_frame(struct irlap_cb *self, int command);
-
-void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb,
-                        __u8 caddr, int command);
-
-int irlap_insert_qos_negotiation_params(struct irlap_cb *self,
-                                       struct sk_buff *skb);
-
-#endif
diff --git a/include/net/irda/irlmp.h b/include/net/irda/irlmp.h
deleted file mode 100644 (file)
index f132924..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlmp.h
- * Version:       0.9
- * Description:   IrDA Link Management Protocol (LMP) layer
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Aug 17 20:54:32 1997
- * Modified at:   Fri Dec 10 13:23:01 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLMP_H
-#define IRLMP_H
-
-#include <asm/param.h>  /* for HZ */
-
-#include <linux/types.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/qos.h>
-#include <net/irda/irlap.h>            /* LAP_MAX_HEADER, ... */
-#include <net/irda/irlmp_event.h>
-#include <net/irda/irqueue.h>
-#include <net/irda/discovery.h>
-
-/* LSAP-SEL's */
-#define LSAP_MASK     0x7f
-#define LSAP_IAS      0x00
-#define LSAP_ANY      0xff
-#define LSAP_MAX      0x6f /* 0x70-0x7f are reserved */
-#define LSAP_CONNLESS 0x70 /* Connectionless LSAP, mostly used for Ultra */
-
-#define DEV_ADDR_ANY  0xffffffff
-
-#define LMP_HEADER          2    /* Dest LSAP + Source LSAP */
-#define LMP_CONTROL_HEADER  4    /* LMP_HEADER + opcode + parameter */
-#define LMP_PID_HEADER      1    /* Used by Ultra */
-#define LMP_MAX_HEADER      (LMP_CONTROL_HEADER+LAP_MAX_HEADER)
-
-#define LM_MAX_CONNECTIONS  10
-
-#define LM_IDLE_TIMEOUT     2*HZ /* 2 seconds for now */
-
-typedef enum {
-       S_PNP = 0,
-       S_PDA,
-       S_COMPUTER,
-       S_PRINTER,
-       S_MODEM,
-       S_FAX,
-       S_LAN,
-       S_TELEPHONY,
-       S_COMM,
-       S_OBEX,
-       S_ANY,
-       S_END,
-} SERVICE;
-
-/* For selective discovery */
-typedef void (*DISCOVERY_CALLBACK1) (discinfo_t *, DISCOVERY_MODE, void *);
-/* For expiry (the same) */
-typedef void (*DISCOVERY_CALLBACK2) (discinfo_t *, DISCOVERY_MODE, void *);
-
-typedef struct {
-       irda_queue_t queue; /* Must be first */
-
-       __u16_host_order hints; /* Hint bits */
-} irlmp_service_t;
-
-typedef struct {
-       irda_queue_t queue; /* Must be first */
-
-       __u16_host_order hint_mask;
-
-       DISCOVERY_CALLBACK1 disco_callback;     /* Selective discovery */
-       DISCOVERY_CALLBACK2 expir_callback;     /* Selective expiration */
-       void *priv;                /* Used to identify client */
-} irlmp_client_t;
-
-/*
- *  Information about each logical LSAP connection
- */
-struct lsap_cb {
-       irda_queue_t queue;      /* Must be first */
-       magic_t magic;
-
-       unsigned long connected;        /* set_bit used on this */
-       int  persistent;
-
-       __u8 slsap_sel;   /* Source (this) LSAP address */
-       __u8 dlsap_sel;   /* Destination LSAP address (if connected) */
-#ifdef CONFIG_IRDA_ULTRA
-       __u8 pid;         /* Used by connectionless LSAP */
-#endif /* CONFIG_IRDA_ULTRA */
-       struct sk_buff *conn_skb; /* Store skb here while connecting */
-
-       struct timer_list watchdog_timer;
-
-       LSAP_STATE      lsap_state;  /* Connection state */
-       notify_t        notify;      /* Indication/Confirm entry points */
-       struct qos_info qos;         /* QoS for this connection */
-
-       struct lap_cb *lap; /* Pointer to LAP connection structure */
-};
-
-/*
- *  Used for caching the last slsap->dlsap->handle mapping
- *
- * We don't need to keep/match the remote address in the cache because
- * we are associated with a specific LAP (which implies it).
- * Jean II
- */
-typedef struct {
-       int valid;
-
-       __u8 slsap_sel;
-       __u8 dlsap_sel;
-       struct lsap_cb *lsap;
-} CACHE_ENTRY;
-
-/*
- *  Information about each registered IrLAP layer
- */
-struct lap_cb {
-       irda_queue_t queue; /* Must be first */
-       magic_t magic;
-
-       int reason;    /* LAP disconnect reason */
-
-       IRLMP_STATE lap_state;
-
-       struct irlap_cb *irlap;   /* Instance of IrLAP layer */
-       hashbin_t *lsaps;         /* LSAP associated with this link */
-       struct lsap_cb *flow_next;      /* Next lsap to be polled for Tx */
-
-       __u8  caddr;  /* Connection address */
-       __u32 saddr;  /* Source device address */
-       __u32 daddr;  /* Destination device address */
-       
-       struct qos_info *qos;  /* LAP QoS for this session */
-       struct timer_list idle_timer;
-       
-#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
-       /* The lsap cache was moved from struct irlmp_cb to here because
-        * it must be associated with the specific LAP. Also, this
-        * improves performance. - Jean II */
-       CACHE_ENTRY cache;  /* Caching last slsap->dlsap->handle mapping */
-#endif
-};
-
-/*
- *  Main structure for IrLMP
- */
-struct irlmp_cb {
-       magic_t magic;
-
-       __u8 conflict_flag;
-       
-       discovery_t discovery_cmd; /* Discovery command to use by IrLAP */
-       discovery_t discovery_rsp; /* Discovery response to use by IrLAP */
-
-       /* Last lsap picked automatically by irlmp_find_free_slsap() */
-       int     last_lsap_sel;
-
-       struct timer_list discovery_timer;
-
-       hashbin_t *links;         /* IrLAP connection table */
-       hashbin_t *unconnected_lsaps;
-       hashbin_t *clients;
-       hashbin_t *services;
-
-       hashbin_t *cachelog;    /* Current discovery log */
-
-       int running;
-
-       __u16_host_order hints; /* Hint bits */
-};
-
-/* Prototype declarations */
-int  irlmp_init(void);
-void irlmp_cleanup(void);
-struct lsap_cb *irlmp_open_lsap(__u8 slsap, notify_t *notify, __u8 pid);
-void irlmp_close_lsap( struct lsap_cb *self);
-
-__u16 irlmp_service_to_hint(int service);
-void *irlmp_register_service(__u16 hints);
-int irlmp_unregister_service(void *handle);
-void *irlmp_register_client(__u16 hint_mask, DISCOVERY_CALLBACK1 disco_clb,
-                           DISCOVERY_CALLBACK2 expir_clb, void *priv);
-int irlmp_unregister_client(void *handle);
-int irlmp_update_client(void *handle, __u16 hint_mask, 
-                       DISCOVERY_CALLBACK1 disco_clb,
-                       DISCOVERY_CALLBACK2 expir_clb, void *priv);
-
-void irlmp_register_link(struct irlap_cb *, __u32 saddr, notify_t *);
-void irlmp_unregister_link(__u32 saddr);
-
-int  irlmp_connect_request(struct lsap_cb *, __u8 dlsap_sel, 
-                          __u32 saddr, __u32 daddr,
-                          struct qos_info *, struct sk_buff *);
-void irlmp_connect_indication(struct lsap_cb *self, struct sk_buff *skb);
-int  irlmp_connect_response(struct lsap_cb *, struct sk_buff *);
-void irlmp_connect_confirm(struct lsap_cb *, struct sk_buff *);
-struct lsap_cb *irlmp_dup(struct lsap_cb *self, void *instance);
-
-void irlmp_disconnect_indication(struct lsap_cb *self, LM_REASON reason, 
-                                struct sk_buff *userdata);
-int  irlmp_disconnect_request(struct lsap_cb *, struct sk_buff *userdata);
-
-void irlmp_discovery_confirm(hashbin_t *discovery_log, DISCOVERY_MODE mode);
-void irlmp_discovery_request(int nslots);
-discinfo_t *irlmp_get_discoveries(int *pn, __u16 mask, int nslots);
-void irlmp_do_expiry(void);
-void irlmp_do_discovery(int nslots);
-discovery_t *irlmp_get_discovery_response(void);
-void irlmp_discovery_expiry(discinfo_t *expiry, int number);
-
-int  irlmp_data_request(struct lsap_cb *, struct sk_buff *);
-void irlmp_data_indication(struct lsap_cb *, struct sk_buff *);
-
-int  irlmp_udata_request(struct lsap_cb *, struct sk_buff *);
-void irlmp_udata_indication(struct lsap_cb *, struct sk_buff *);
-
-#ifdef CONFIG_IRDA_ULTRA
-int  irlmp_connless_data_request(struct lsap_cb *, struct sk_buff *, __u8);
-void irlmp_connless_data_indication(struct lsap_cb *, struct sk_buff *);
-#endif /* CONFIG_IRDA_ULTRA */
-
-void irlmp_status_indication(struct lap_cb *, LINK_STATUS link, LOCK_STATUS lock);
-void irlmp_flow_indication(struct lap_cb *self, LOCAL_FLOW flow);
-
-LM_REASON irlmp_convert_lap_reason(LAP_REASON);
-
-static inline __u32 irlmp_get_saddr(const struct lsap_cb *self)
-{
-       return (self && self->lap) ? self->lap->saddr : 0;
-}
-
-static inline __u32 irlmp_get_daddr(const struct lsap_cb *self)
-{
-       return (self && self->lap) ? self->lap->daddr : 0;
-}
-
-const char *irlmp_reason_str(LM_REASON reason);
-
-extern int sysctl_discovery_timeout;
-extern int sysctl_discovery_slots;
-extern int sysctl_discovery;
-extern int sysctl_lap_keepalive_time;  /* in ms, default is LM_IDLE_TIMEOUT */
-extern struct irlmp_cb *irlmp;
-
-/* Check if LAP queue is full.
- * Used by IrTTP for low control, see comments in irlap.h - Jean II */
-static inline int irlmp_lap_tx_queue_full(struct lsap_cb *self)
-{
-       if (self == NULL)
-               return 0;
-       if (self->lap == NULL)
-               return 0;
-       if (self->lap->irlap == NULL)
-               return 0;
-
-       return IRLAP_GET_TX_QUEUE_LEN(self->lap->irlap) >= LAP_HIGH_THRESHOLD;
-}
-
-/* After doing a irlmp_dup(), this get one of the two socket back into
- * a state where it's waiting incoming connections.
- * Note : this can be used *only* if the socket is not yet connected
- * (i.e. NO irlmp_connect_response() done on this socket).
- * - Jean II */
-static inline void irlmp_listen(struct lsap_cb *self)
-{
-       self->dlsap_sel = LSAP_ANY;
-       self->lap = NULL;
-       self->lsap_state = LSAP_DISCONNECTED;
-       /* Started when we received the LM_CONNECT_INDICATION */
-       del_timer(&self->watchdog_timer);
-}
-
-#endif
diff --git a/include/net/irda/irlmp_event.h b/include/net/irda/irlmp_event.h
deleted file mode 100644 (file)
index 9e4ec17..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlmp_event.h
- * Version:       0.1
- * Description:   IrDA-LMP event handling
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Aug  4 20:40:53 1997
- * Modified at:   Thu Jul  8 12:18:54 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRLMP_EVENT_H
-#define IRLMP_EVENT_H
-
-/* A few forward declarations (to make compiler happy) */
-struct irlmp_cb;
-struct lsap_cb;
-struct lap_cb;
-struct discovery_t;
-
-/* LAP states */
-typedef enum {
-       /* IrLAP connection control states */
-       LAP_STANDBY,             /* No LAP connection */
-       LAP_U_CONNECT,           /* Starting LAP connection */
-       LAP_ACTIVE,              /* LAP connection is active */
-} IRLMP_STATE;
-
-/* LSAP connection control states */
-typedef enum {
-       LSAP_DISCONNECTED,        /* No LSAP connection */
-       LSAP_CONNECT,             /* Connect indication from peer */
-       LSAP_CONNECT_PEND,        /* Connect request from service user */
-       LSAP_DATA_TRANSFER_READY, /* LSAP connection established */          
-       LSAP_SETUP,               /* Trying to set up LSAP connection */
-       LSAP_SETUP_PEND,          /* Request to start LAP connection */
-} LSAP_STATE;
-
-typedef enum {
-       /* LSAP events */
-       LM_CONNECT_REQUEST,
-       LM_CONNECT_CONFIRM,
-       LM_CONNECT_RESPONSE,
-       LM_CONNECT_INDICATION,  
-       
-       LM_DISCONNECT_INDICATION,
-       LM_DISCONNECT_REQUEST,
-
-       LM_DATA_REQUEST,
-       LM_UDATA_REQUEST,
-       LM_DATA_INDICATION,
-       LM_UDATA_INDICATION,
-
-       LM_WATCHDOG_TIMEOUT,
-
-       /* IrLAP events */
-       LM_LAP_CONNECT_REQUEST,
-       LM_LAP_CONNECT_INDICATION, 
-       LM_LAP_CONNECT_CONFIRM,
-       LM_LAP_DISCONNECT_INDICATION, 
-       LM_LAP_DISCONNECT_REQUEST,
-       LM_LAP_DISCOVERY_REQUEST,
-       LM_LAP_DISCOVERY_CONFIRM,
-       LM_LAP_IDLE_TIMEOUT,
-} IRLMP_EVENT;
-
-extern const char *const irlmp_state[];
-extern const char *const irlsap_state[];
-
-void irlmp_watchdog_timer_expired(void *data);
-void irlmp_discovery_timer_expired(void *data);
-void irlmp_idle_timer_expired(void *data);
-
-void irlmp_do_lap_event(struct lap_cb *self, IRLMP_EVENT event, 
-                       struct sk_buff *skb);
-int irlmp_do_lsap_event(struct lsap_cb *self, IRLMP_EVENT event, 
-                       struct sk_buff *skb);
-
-#endif /* IRLMP_EVENT_H */
-
-
-
-
diff --git a/include/net/irda/irlmp_frame.h b/include/net/irda/irlmp_frame.h
deleted file mode 100644 (file)
index 1906eb7..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irlmp_frame.h
- * Version:       0.9
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Aug 19 02:09:59 1997
- * Modified at:   Fri Dec 10 13:21:53 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRMLP_FRAME_H
-#define IRMLP_FRAME_H
-
-#include <linux/skbuff.h>
-
-#include <net/irda/discovery.h>
-
-/* IrLMP frame opcodes */
-#define CONNECT_CMD    0x01
-#define CONNECT_CNF    0x81
-#define DISCONNECT     0x02
-#define ACCESSMODE_CMD 0x03
-#define ACCESSMODE_CNF 0x83
-
-#define CONTROL_BIT    0x80
-
-void irlmp_send_data_pdu(struct lap_cb *self, __u8 dlsap, __u8 slsap,
-                               int expedited, struct sk_buff *skb);
-void irlmp_send_lcf_pdu(struct lap_cb *self, __u8 dlsap, __u8 slsap, 
-                       __u8 opcode, struct sk_buff *skb);
-void irlmp_link_data_indication(struct lap_cb *, struct sk_buff *, 
-                               int unreliable);
-#ifdef CONFIG_IRDA_ULTRA
-void irlmp_link_unitdata_indication(struct lap_cb *, struct sk_buff *);
-#endif /* CONFIG_IRDA_ULTRA */
-
-void irlmp_link_connect_indication(struct lap_cb *, __u32 saddr, __u32 daddr,
-                                  struct qos_info *qos, struct sk_buff *skb);
-void irlmp_link_connect_request(__u32 daddr);
-void irlmp_link_connect_confirm(struct lap_cb *self, struct qos_info *qos, 
-                               struct sk_buff *skb);
-void irlmp_link_disconnect_indication(struct lap_cb *, struct irlap_cb *, 
-                                     LAP_REASON reason, struct sk_buff *); 
-void irlmp_link_discovery_confirm(struct lap_cb *self, hashbin_t *log);
-void irlmp_link_discovery_indication(struct lap_cb *, discovery_t *discovery);
-
-#endif
diff --git a/include/net/irda/irmod.h b/include/net/irda/irmod.h
deleted file mode 100644 (file)
index 86f0dbb..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irmod.h
- * Version:       0.3
- * Description:   IrDA module and utilities functions
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Dec 15 13:58:52 1997
- * Modified at:   Fri Jan 28 13:15:24 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- *
- *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charg.
- *     
- ********************************************************************/
-
-#ifndef IRMOD_H
-#define IRMOD_H
-
-/* 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 { FLOW_STOP, FLOW_START } LOCAL_FLOW;
-
-/*  
- *  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 */
-
-/* A few forward declarations (to make compiler happy) */
-struct qos_info;               /* in <net/irda/qos.h> */
-
-/*
- *  Notify structure used between transport and link management layers
- */
-typedef struct {
-       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,
-                               __u8 max_header_size, struct sk_buff *skb);
-       void (*connect_indication)(void *instance, void *sap, 
-                                  struct qos_info *qos, __u32 max_sdu_size, 
-                                  __u8 max_header_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 (*status_indication)(void *instance,
-                                 LINK_STATUS link, LOCK_STATUS lock);
-       void *instance; /* Layer instance pointer */
-       char name[16];  /* Name of layer */
-} notify_t;
-
-#define NOTIFY_MAX_NAME 16
-
-/* Zero the notify structure */
-void irda_notify_init(notify_t *notify);
-
-/* Locking wrapper - Note the inverted logic on irda_lock().
- * Those function basically return false if the lock is already in the
- * position you want to set it. - Jean II */
-#define irda_lock(lock)                (! test_and_set_bit(0, (void *) (lock)))
-#define irda_unlock(lock)      (test_and_clear_bit(0, (void *) (lock)))
-
-#endif /* IRMOD_H */
-
-
-
-
-
-
-
-
-
diff --git a/include/net/irda/irqueue.h b/include/net/irda/irqueue.h
deleted file mode 100644 (file)
index 37f512b..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irqueue.h
- * Version:       0.3
- * Description:   General queue implementation
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Tue Jun  9 13:26:50 1998
- * Modified at:   Thu Oct  7 13:25:16 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (C) 1998-1999, Aage Kvalnes <aage@cs.uit.no>
- *     Copyright (c) 1998, Dag Brattli
- *     All Rights Reserved.
- *      
- *     This code is taken from the Vortex Operating System written by Aage
- *     Kvalnes and has been ported to Linux and Linux/IR by Dag Brattli
- *
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#include <linux/types.h>
-#include <linux/spinlock.h>
-
-#ifndef IRDA_QUEUE_H
-#define IRDA_QUEUE_H
-
-#define NAME_SIZE      32
-
-/*
- * Hash types (some flags can be xored)
- * See comments in irqueue.c for which one to use...
- */
-#define HB_NOLOCK      0       /* No concurent access prevention */
-#define HB_LOCK                1       /* Prevent concurent write with global lock */
-
-/*
- * Hash defines
- */
-#define HASHBIN_SIZE   8
-#define HASHBIN_MASK   0x7
-
-#ifndef IRDA_ALIGN 
-#define IRDA_ALIGN __attribute__((aligned))
-#endif
-
-#define Q_NULL { NULL, NULL, "", 0 }
-
-typedef void (*FREE_FUNC)(void *arg);
-
-struct irda_queue {
-       struct irda_queue *q_next;
-       struct irda_queue *q_prev;
-
-       char   q_name[NAME_SIZE];
-       long   q_hash;                  /* Must be able to cast a (void *) */
-};
-typedef struct irda_queue irda_queue_t;
-
-typedef struct hashbin_t {
-       __u32      magic;
-       int        hb_type;
-       int        hb_size;
-       spinlock_t hb_spinlock;         /* HB_LOCK - Can be used by the user */
-
-       irda_queue_t* hb_queue[HASHBIN_SIZE] IRDA_ALIGN;
-
-       irda_queue_t* hb_current;
-} hashbin_t;
-
-hashbin_t *hashbin_new(int type);
-int      hashbin_delete(hashbin_t* hashbin, FREE_FUNC func);
-int      hashbin_clear(hashbin_t* hashbin, FREE_FUNC free_func);
-void     hashbin_insert(hashbin_t* hashbin, irda_queue_t* entry, long hashv, 
-                       const char* name);
-void*    hashbin_remove(hashbin_t* hashbin, long hashv, const char* name);
-void*    hashbin_remove_first(hashbin_t *hashbin);
-void*   hashbin_remove_this( hashbin_t* hashbin, irda_queue_t* entry);
-void*    hashbin_find(hashbin_t* hashbin, long hashv, const char* name);
-void*    hashbin_lock_find(hashbin_t* hashbin, long hashv, const char* name);
-void*    hashbin_find_next(hashbin_t* hashbin, long hashv, const char* name,
-                          void ** pnext);
-irda_queue_t *hashbin_get_first(hashbin_t *hashbin);
-irda_queue_t *hashbin_get_next(hashbin_t *hashbin);
-
-#define HASHBIN_GET_SIZE(hashbin) hashbin->hb_size
-
-#endif
diff --git a/include/net/irda/irttp.h b/include/net/irda/irttp.h
deleted file mode 100644 (file)
index 98682d4..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      irttp.h
- * Version:       1.0
- * Description:   Tiny Transport Protocol (TTP) definitions
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sun Aug 31 20:14:31 1997
- * Modified at:   Sun Dec 12 13:09:07 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef IRTTP_H
-#define IRTTP_H
-
-#include <linux/types.h>
-#include <linux/skbuff.h>
-#include <linux/spinlock.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irlmp.h>            /* struct lsap_cb */
-#include <net/irda/qos.h>              /* struct qos_info */
-#include <net/irda/irqueue.h>
-
-#define TTP_MAX_CONNECTIONS    LM_MAX_CONNECTIONS
-#define TTP_HEADER             1
-#define TTP_MAX_HEADER         (TTP_HEADER + LMP_MAX_HEADER)
-#define TTP_SAR_HEADER         5
-#define TTP_PARAMETERS         0x80
-#define TTP_MORE               0x80
-
-/* Transmission queue sizes */
-/* Worst case scenario, two window of data - Jean II */
-#define TTP_TX_MAX_QUEUE       14
-/* We need to keep at least 5 frames to make sure that we can refill
- * appropriately the LAP layer. LAP keeps only two buffers, and we need
- * to have 7 to make a full window - Jean II */
-#define TTP_TX_LOW_THRESHOLD   5
-/* Most clients are synchronous with respect to flow control, so we can
- * keep a low number of Tx buffers in TTP - Jean II */
-#define TTP_TX_HIGH_THRESHOLD  7
-
-/* Receive queue sizes */
-/* Minimum of credit that the peer should hold.
- * If the peer has less credits than 9 frames, we will explicitly send
- * him some credits (through irttp_give_credit() and a specific frame).
- * Note that when we give credits it's likely that it won't be sent in
- * this LAP window, but in the next one. So, we make sure that the peer
- * has something to send while waiting for credits (one LAP window == 7
- * + 1 frames while he process the credits). - Jean II */
-#define TTP_RX_MIN_CREDIT      8
-/* This is the default maximum number of credits held by the peer, so the
- * default maximum number of frames he can send us before needing flow
- * control answer from us (this may be negociated differently at TSAP setup).
- * We want to minimise the number of times we have to explicitly send some
- * credit to the peer, hoping we can piggyback it on the return data. In
- * particular, it doesn't make sense for us to send credit more than once
- * per LAP window.
- * Moreover, giving credits has some latency, so we need strictly more than
- * a LAP window, otherwise we may already have credits in our Tx queue.
- * But on the other hand, we don't want to keep too many Rx buffer here
- * before starting to flow control the other end, so make it exactly one
- * LAP window + 1 + MIN_CREDITS. - Jean II */
-#define TTP_RX_DEFAULT_CREDIT  16
-/* Maximum number of credits we can allow the peer to have, and therefore
- * maximum Rx queue size.
- * Note that we try to deliver packets to the higher layer every time we
- * receive something, so in normal mode the Rx queue will never contains
- * more than one or two packets. - Jean II */
-#define TTP_RX_MAX_CREDIT      21
-
-/* What clients should use when calling ttp_open_tsap() */
-#define DEFAULT_INITIAL_CREDIT TTP_RX_DEFAULT_CREDIT
-
-/* Some priorities for disconnect requests */
-#define P_NORMAL    0
-#define P_HIGH      1
-
-#define TTP_SAR_DISABLE 0
-#define TTP_SAR_UNBOUND 0xffffffff
-
-/* Parameters */
-#define TTP_MAX_SDU_SIZE 0x01
-
-/*
- *  This structure contains all data associated with one instance of a TTP 
- *  connection.
- */
-struct tsap_cb {
-       irda_queue_t q;            /* Must be first */
-       magic_t magic;        /* Just in case */
-
-       __u8 stsap_sel;       /* Source TSAP */
-       __u8 dtsap_sel;       /* Destination TSAP */
-
-       struct lsap_cb *lsap; /* Corresponding LSAP to this TSAP */
-
-       __u8 connected;       /* TSAP connected */
-        
-       __u8 initial_credit;  /* Initial credit to give peer */
-
-        int avail_credit;    /* Available credit to return to peer */
-       int remote_credit;   /* Credit held by peer TTP entity */
-       int send_credit;     /* Credit held by local TTP entity */
-       
-       struct sk_buff_head tx_queue; /* Frames to be transmitted */
-       struct sk_buff_head rx_queue; /* Received frames */
-       struct sk_buff_head rx_fragments;
-       int tx_queue_lock;
-       int rx_queue_lock;
-       spinlock_t lock;
-
-       notify_t notify;       /* Callbacks to client layer */
-
-       struct net_device_stats stats;
-       struct timer_list todo_timer; 
-
-       __u32 max_seg_size;     /* Max data that fit into an IrLAP frame */
-       __u8  max_header_size;
-
-       int   rx_sdu_busy;     /* RxSdu.busy */
-       __u32 rx_sdu_size;     /* Current size of a partially received frame */
-       __u32 rx_max_sdu_size; /* Max receive user data size */
-
-       int tx_sdu_busy;       /* TxSdu.busy */
-       __u32 tx_max_sdu_size; /* Max transmit user data size */
-
-       int close_pend;        /* Close, but disconnect_pend */
-       unsigned long disconnect_pend; /* Disconnect, but still data to send */
-       struct sk_buff *disconnect_skb;
-};
-
-struct irttp_cb {
-       magic_t    magic;       
-       hashbin_t *tsaps;
-};
-
-int  irttp_init(void);
-void irttp_cleanup(void);
-
-struct tsap_cb *irttp_open_tsap(__u8 stsap_sel, int credit, notify_t *notify);
-int irttp_close_tsap(struct tsap_cb *self);
-
-int irttp_data_request(struct tsap_cb *self, struct sk_buff *skb);
-int irttp_udata_request(struct tsap_cb *self, struct sk_buff *skb);
-
-int irttp_connect_request(struct tsap_cb *self, __u8 dtsap_sel, 
-                         __u32 saddr, __u32 daddr,
-                         struct qos_info *qos, __u32 max_sdu_size, 
-                         struct sk_buff *userdata);
-int irttp_connect_response(struct tsap_cb *self, __u32 max_sdu_size, 
-                           struct sk_buff *userdata);
-int irttp_disconnect_request(struct tsap_cb *self, struct sk_buff *skb,
-                            int priority);
-void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow);
-struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance);
-
-static inline __u32 irttp_get_saddr(struct tsap_cb *self)
-{
-       return irlmp_get_saddr(self->lsap);
-}
-
-static inline __u32 irttp_get_daddr(struct tsap_cb *self)
-{
-       return irlmp_get_daddr(self->lsap);
-}
-
-static inline __u32 irttp_get_max_seg_size(struct tsap_cb *self)
-{
-       return self->max_seg_size;
-}
-
-/* After doing a irttp_dup(), this get one of the two socket back into
- * a state where it's waiting incoming connections.
- * Note : this can be used *only* if the socket is not yet connected
- * (i.e. NO irttp_connect_response() done on this socket).
- * - Jean II */
-static inline void irttp_listen(struct tsap_cb *self)
-{
-       irlmp_listen(self->lsap);
-       self->dtsap_sel = LSAP_ANY;
-}
-
-/* Return TRUE if the node is in primary mode (i.e. master)
- * - Jean II */
-static inline int irttp_is_primary(struct tsap_cb *self)
-{
-       if ((self == NULL) ||
-           (self->lsap == NULL) ||
-           (self->lsap->lap == NULL) ||
-           (self->lsap->lap->irlap == NULL))
-               return -2;
-       return irlap_is_primary(self->lsap->lap->irlap);
-}
-
-#endif /* IRTTP_H */
diff --git a/include/net/irda/parameters.h b/include/net/irda/parameters.h
deleted file mode 100644 (file)
index 2d9cd00..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      parameters.h
- * Version:       1.0
- * Description:   A more general way to handle (pi,pl,pv) parameters
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Jun  7 08:47:28 1999
- * Modified at:   Sun Jan 30 14:05:14 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *
- *     Michel Dänzer <daenzer@debian.org>, 10/2001
- *     - simplify irda_pv_t to avoid endianness issues
- *     
- ********************************************************************/
-
-#ifndef IRDA_PARAMS_H
-#define IRDA_PARAMS_H
-
-/*
- *  The currently supported types. Beware not to change the sequence since
- *  it a good reason why the sized integers has a value equal to their size
- */
-typedef enum {
-       PV_INTEGER,      /* Integer of any (pl) length */
-       PV_INT_8_BITS,   /* Integer of 8 bits in length */
-       PV_INT_16_BITS,  /* Integer of 16 bits in length */
-       PV_STRING,       /* \0 terminated string */
-       PV_INT_32_BITS,  /* Integer of 32 bits in length */
-       PV_OCT_SEQ,      /* Octet sequence */
-       PV_NO_VALUE      /* Does not contain any value (pl=0) */
-} PV_TYPE;
-
-/* Bit 7 of type field */
-#define PV_BIG_ENDIAN    0x80 
-#define PV_LITTLE_ENDIAN 0x00
-#define PV_MASK          0x7f   /* To mask away endian bit */
-
-#define PV_PUT 0
-#define PV_GET 1
-
-typedef union {
-       char   *c;
-       __u32   i;
-       __u32 *ip;
-} irda_pv_t;
-
-typedef struct {
-       __u8 pi;
-       __u8 pl;
-       irda_pv_t pv;
-} irda_param_t;
-
-typedef int (*PI_HANDLER)(void *self, irda_param_t *param, int get);
-typedef int (*PV_HANDLER)(void *self, __u8 *buf, int len, __u8 pi,
-                         PV_TYPE type, PI_HANDLER func);
-
-typedef struct {
-       const PI_HANDLER func;  /* Handler for this parameter identifier */
-       PV_TYPE    type;  /* Data type for this parameter */
-} pi_minor_info_t;
-
-typedef struct {
-       const pi_minor_info_t *pi_minor_call_table;
-       int len;
-} pi_major_info_t;
-
-typedef struct {
-       const pi_major_info_t *tables;
-       int              len;
-       __u8             pi_mask;
-       int              pi_major_offset;
-} pi_param_info_t;
-
-int irda_param_pack(__u8 *buf, char *fmt, ...);
-
-int irda_param_insert(void *self, __u8 pi, __u8 *buf, int len, 
-                     pi_param_info_t *info);
-int irda_param_extract_all(void *self, __u8 *buf, int len, 
-                          pi_param_info_t *info);
-
-#define irda_param_insert_byte(buf,pi,pv) irda_param_pack(buf,"bbb",pi,1,pv)
-
-#endif /* IRDA_PARAMS_H */
-
diff --git a/include/net/irda/qos.h b/include/net/irda/qos.h
deleted file mode 100644 (file)
index 05a5a24..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      qos.h
- * Version:       1.0
- * Description:   Quality of Service definitions
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Fri Sep 19 23:21:09 1997
- * Modified at:   Thu Dec  2 13:51:54 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, see <http://www.gnu.org/licenses/>.
- *     
- ********************************************************************/
-
-#ifndef IRDA_QOS_H
-#define IRDA_QOS_H
-
-#include <linux/skbuff.h>
-
-#include <net/irda/parameters.h>
-
-#define PI_BAUD_RATE     0x01
-#define PI_MAX_TURN_TIME 0x82
-#define PI_DATA_SIZE     0x83
-#define PI_WINDOW_SIZE   0x84
-#define PI_ADD_BOFS      0x85
-#define PI_MIN_TURN_TIME 0x86
-#define PI_LINK_DISC     0x08
-
-#define IR_115200_MAX 0x3f
-
-/* Baud rates (first byte) */
-#define IR_2400     0x01
-#define IR_9600     0x02
-#define IR_19200    0x04
-#define IR_38400    0x08
-#define IR_57600    0x10
-#define IR_115200   0x20
-#define IR_576000   0x40
-#define IR_1152000  0x80
-
-/* Baud rates (second byte) */
-#define IR_4000000  0x01
-#define IR_16000000 0x02
-
-/* Quality of Service information */
-typedef struct {
-       __u32 value;
-       __u16 bits; /* LSB is first byte, MSB is second byte */
-} qos_value_t;
-
-struct qos_info {
-       magic_t magic;
-
-       qos_value_t baud_rate;       /* IR_11520O | ... */
-       qos_value_t max_turn_time;
-       qos_value_t data_size;
-       qos_value_t window_size;
-       qos_value_t additional_bofs;
-       qos_value_t min_turn_time;
-       qos_value_t link_disc_time;
-       
-       qos_value_t power;
-};
-
-extern int sysctl_max_baud_rate;
-extern int sysctl_max_inactive_time;
-
-void irda_init_max_qos_capabilies(struct qos_info *qos);
-void irda_qos_compute_intersection(struct qos_info *, struct qos_info *);
-
-__u32 irlap_max_line_capacity(__u32 speed, __u32 max_turn_time);
-
-void irda_qos_bits_to_value(struct qos_info *qos);
-
-/* So simple, how could we not inline those two ?
- * Note : one byte is 10 bits if you include start and stop bits
- * Jean II */
-#define irlap_min_turn_time_in_bytes(speed, min_turn_time) (   \
-       speed * min_turn_time / 10000000                        \
-)
-#define irlap_xbofs_in_usec(speed, xbofs) (                    \
-       xbofs * 10000000 / speed                                \
-)
-
-#endif
-
diff --git a/include/net/irda/timer.h b/include/net/irda/timer.h
deleted file mode 100644 (file)
index d784f24..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      timer.h
- * Version:       
- * Description:   
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sat Aug 16 00:59:29 1997
- * Modified at:   Thu Oct  7 12:25:24 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1997, 1998-1999 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef TIMER_H
-#define TIMER_H
-
-#include <linux/timer.h>
-#include <linux/jiffies.h>
-
-#include <asm/param.h>  /* for HZ */
-
-#include <net/irda/irda.h>
-
-/* A few forward declarations (to make compiler happy) */
-struct irlmp_cb;
-struct irlap_cb;
-struct lsap_cb;
-struct lap_cb;
-
-/* 
- *  Timeout definitions, some defined in IrLAP 6.13.5 - p. 92
- */
-#define POLL_TIMEOUT        (450*HZ/1000)    /* Must never exceed 500 ms */
-#define FINAL_TIMEOUT       (500*HZ/1000)    /* Must never exceed 500 ms */
-
-/* 
- *  Normally twice of p-timer. Note 3, IrLAP 6.3.11.2 - p. 60 suggests
- *  at least twice duration of the P-timer.
- */
-#define WD_TIMEOUT          (POLL_TIMEOUT*2)
-
-#define MEDIABUSY_TIMEOUT   (500*HZ/1000)    /* 500 msec */
-#define SMALLBUSY_TIMEOUT   (100*HZ/1000)    /* 100 msec - IrLAP 6.13.4 */
-
-/*
- *  Slot timer must never exceed 85 ms, and must always be at least 25 ms, 
- *  suggested to  75-85 msec by IrDA lite. This doesn't work with a lot of
- *  devices, and other stackes uses a lot more, so it's best we do it as well
- *  (Note : this is the default value and sysctl overrides it - Jean II)
- */
-#define SLOT_TIMEOUT            (90*HZ/1000)
-
-/* 
- *  The latest discovery frame (XID) is longer due to the extra discovery
- *  information (hints, device name...). This is its extra length.
- *  We use that when setting the query timeout. Jean II
- */
-#define XIDEXTRA_TIMEOUT        (34*HZ/1000)  /* 34 msec */
-
-#define WATCHDOG_TIMEOUT        (20*HZ)       /* 20 sec */
-
-typedef void (*TIMER_CALLBACK)(void *);
-
-static inline void irda_start_timer(struct timer_list *ptimer, int timeout, 
-                                   void* data, TIMER_CALLBACK callback)
-{
-       ptimer->function = (void (*)(unsigned long)) callback;
-       ptimer->data = (unsigned long) data;
-       
-       /* Set new value for timer (update or add timer).
-        * We use mod_timer() because it's more efficient and also
-        * safer with respect to race conditions - Jean II */
-       mod_timer(ptimer, jiffies + timeout);
-}
-
-
-void irlap_start_slot_timer(struct irlap_cb *self, int timeout);
-void irlap_start_query_timer(struct irlap_cb *self, int S, int s);
-void irlap_start_final_timer(struct irlap_cb *self, int timeout);
-void irlap_start_wd_timer(struct irlap_cb *self, int timeout);
-void irlap_start_backoff_timer(struct irlap_cb *self, int timeout);
-
-void irlap_start_mbusy_timer(struct irlap_cb *self, int timeout);
-void irlap_stop_mbusy_timer(struct irlap_cb *);
-
-void irlmp_start_watchdog_timer(struct lsap_cb *, int timeout);
-void irlmp_start_discovery_timer(struct irlmp_cb *, int timeout);
-void irlmp_start_idle_timer(struct lap_cb *, int timeout);
-void irlmp_stop_idle_timer(struct lap_cb *self);
-
-#endif
-
diff --git a/include/net/irda/wrapper.h b/include/net/irda/wrapper.h
deleted file mode 100644 (file)
index eef53eb..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      wrapper.h
- * Version:       1.2
- * Description:   IrDA SIR async wrapper layer
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Mon Aug  4 20:40:53 1997
- * Modified at:   Tue Jan 11 12:37:29 2000
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-2000 Dag Brattli <dagb@cs.uit.no>, 
- *     All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *
- ********************************************************************/
-
-#ifndef WRAPPER_H
-#define WRAPPER_H
-
-#include <linux/types.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-
-#include <net/irda/irda_device.h>      /* iobuff_t */
-
-#define BOF  0xc0 /* Beginning of frame */
-#define XBOF 0xff
-#define EOF  0xc1 /* End of frame */
-#define CE   0x7d /* Control escape */
-
-#define STA BOF  /* Start flag */
-#define STO EOF  /* End flag */
-
-#define IRDA_TRANS 0x20    /* Asynchronous transparency modifier */       
-
-/* States for receiving a frame in async mode */
-enum {
-       OUTSIDE_FRAME, 
-       BEGIN_FRAME, 
-       LINK_ESCAPE, 
-       INSIDE_FRAME
-};
-
-/* Proto definitions */
-int async_wrap_skb(struct sk_buff *skb, __u8 *tx_buff, int buffsize);
-void async_unwrap_char(struct net_device *dev, struct net_device_stats *stats,
-                      iobuff_t *buf, __u8 byte);
-
-#endif