From: Jean T. <jt...@bo...> - 2002-06-18 21:58:45
|
Hi Jeff, Re-diff'd and re-tested my patches with 2.5.22, but otherwise exact same content. First patch here, second in a second. Hope they will make it proper in 2.5.23. Regards, Jean ir252_headers_init-2.diff : ------------------------- o [FEATURE] Use new kernel init/exit style, should fix static builds o [FEATURE] Reduce header dependancies Before After net/irda/.depend 14917 13617 B drivers/net/irda/.depend 16134 14293 B irda full recompile 3'13 3'10 diff -u -p --new-file linux/include/net/irda.d9/af_irda.h linux/include/n= et/irda/af_irda.h --- linux/include/net/irda.d9/af_irda.h Wed Dec 31 16:00:00 1969 +++ linux/include/net/irda/af_irda.h Tue Jun 18 13:51:36 2002 @@ -0,0 +1,82 @@ +/********************************************************************* + * =20 + * Filename: af_irda.h + * Version: 1.0 + * Description: IrDA sockets declarations + * Status: Stable + * Author: Dag Brattli <da...@cs...> + * Created at: Tue Dec 9 21:13:12 1997 + * Modified at: Fri Jan 28 13:16:32 2000 + * Modified by: Dag Brattli <da...@cs...> + *=20 + * Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved. + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> + * =20 + * This program is free software; you can redistribute it and/or=20 + * modify it under the terms of the GNU General Public License as=20 + * published by the Free Software Foundation; either version 2 of=20 + * the License, or (at your option) any later version. + * =20 + * Neither Dag Brattli nor University of Troms=F8 admit liability no= r + * provide warranty for any of this software. This material is=20 + * provided "AS-IS" and at no charge. + * =20 + ********************************************************************/ + +#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 */ + +/* IrDA Socket */ +struct irda_sock { + __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 */ +=09 + __u32 max_sdu_size_rx; + __u32 max_sdu_size_tx; + __u32 max_data_size; + __u8 max_header_size; + struct qos_info qos_tx; + + __u16 mask; /* Hint bits mask */ + __u16 hints; /* Hint bits */ + + __u32 ckey; /* IrLMP client handle */ + __u32 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 */ + struct discovery_t *cachediscovery; /* Result of selective discovery qu= ery */ + + int nslots; /* Number of slots to use for discovery */ + + int errno; /* status of the IAS query */ + + struct sock *sk; + 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; +}; + +#define irda_sk(__sk) ((struct irda_sock *)(__sk)->protinfo) + +#endif /* AF_IRDA_H */ diff -u -p --new-file linux/include/net/irda.d9/discovery.h linux/include= /net/irda/discovery.h --- linux/include/net/irda.d9/discovery.h Tue Jun 18 11:59:20 2002 +++ linux/include/net/irda/discovery.h Tue Jun 18 13:57:31 2002 @@ -10,6 +10,7 @@ * Modified by: Dag Brattli <da...@cs...> *=20 * Copyright (c) 1999 Dag Brattli, All Rights Reserved. + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -34,10 +35,22 @@ #include <asm/param.h> =20 #include <net/irda/irda.h> -#include <net/irda/irqueue.h> +#include <net/irda/irqueue.h> /* irda_queue_t */ +#include <net/irda/irlap_event.h> /* LAP_REASON */ =20 #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=20 + * 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]=20 + * and LSB in byte[1]. + */ +typedef union { + __u16 word; + __u8 byte[2]; +} __u16_host_order; =20 /* Types of discovery */ typedef enum { diff -u -p --new-file linux/include/net/irda.d9/ircomm_core.h linux/inclu= de/net/irda/ircomm_core.h --- linux/include/net/irda.d9/ircomm_core.h Sat Jun 8 22:28:04 2002 +++ linux/include/net/irda/ircomm_core.h Tue Jun 18 13:51:36 2002 @@ -32,6 +32,7 @@ #define IRCOMM_CORE_H =20 #include <net/irda/irda.h> +#include <net/irda/irqueue.h> #include <net/irda/ircomm_event.h> =20 #define IRCOMM_MAGIC 0x98347298 diff -u -p --new-file linux/include/net/irda.d9/ircomm_event.h linux/incl= ude/net/irda/ircomm_event.h --- linux/include/net/irda.d9/ircomm_event.h Sat Jun 8 22:29:46 2002 +++ linux/include/net/irda/ircomm_event.h Tue Jun 18 13:51:36 2002 @@ -31,6 +31,8 @@ #ifndef IRCOMM_EVENT_H #define IRCOMM_EVENT_H =20 +#include <net/irda/irmod.h> + typedef enum { IRCOMM_IDLE, IRCOMM_WAITI, diff -u -p --new-file linux/include/net/irda.d9/ircomm_tty.h linux/includ= e/net/irda/ircomm_tty.h --- linux/include/net/irda.d9/ircomm_tty.h Sat Jun 8 22:29:14 2002 +++ linux/include/net/irda/ircomm_tty.h Tue Jun 18 13:51:36 2002 @@ -34,6 +34,7 @@ #include <linux/serial.h> #include <linux/termios.h> #include <linux/timer.h> +#include <linux/tty.h> /* struct tty_struct */ =20 #include <net/irda/irias_object.h> #include <net/irda/ircomm_core.h> diff -u -p --new-file linux/include/net/irda.d9/irda-usb.h linux/include/= net/irda/irda-usb.h --- linux/include/net/irda.d9/irda-usb.h Sat Jun 8 22:31:20 2002 +++ linux/include/net/irda/irda-usb.h Tue Jun 18 13:51:36 2002 @@ -29,8 +29,7 @@ #include <linux/time.h> =20 #include <net/irda/irda.h> -#include <net/irda/irlap.h> -#include <net/irda/irda_device.h> +#include <net/irda/irda_device.h> /* struct irlap_cb */ =20 #define RX_COPY_THRESHOLD 200 #define IRDA_USB_MAX_MTU 2051 diff -u -p --new-file linux/include/net/irda.d9/irda.h linux/include/net/= irda/irda.h --- linux/include/net/irda.d9/irda.h Sat Jun 8 22:28:49 2002 +++ linux/include/net/irda/irda.h Tue Jun 18 13:51:36 2002 @@ -10,7 +10,7 @@ * Modified by: Dag Brattli <da...@cs...> *=20 * Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -27,16 +27,13 @@ #define NET_IRDA_H =20 #include <linux/config.h> -#include <linux/skbuff.h> +#include <linux/skbuff.h> /* struct sk_buff */ #include <linux/kernel.h> -#include <linux/if.h> +#include <linux/if.h> /* sa_family_t in <linux/irda.h> */ #include <linux/irda.h> =20 typedef __u32 magic_t; =20 -#include <net/irda/qos.h> -#include <net/irda/irqueue.h> - #ifndef TRUE #define TRUE 1 #endif @@ -57,8 +54,8 @@ typedef __u32 magic_t; #ifndef IRDA_ALIGN # define IRDA_ALIGN __attribute__((aligned)) #endif -#ifndef PACK -# define PACK __attribute__((packed)) +#ifndef IRDA_PACK +# define IRDA_PACK __attribute__((packed)) #endif =20 =20 @@ -115,152 +112,5 @@ if(!(expr)) do { \ #define IAS_IRLAN_ID 0x34234 #define IAS_IRCOMM_ID 0x2343 #define IAS_IRLPT_ID 0x9876 - -typedef enum { FLOW_STOP, FLOW_START } LOCAL_FLOW; - -/* A few forward declarations (to make compiler happy) */ -struct tsap_cb; /* in <net/irda/irttp.h> */ -struct lsap_cb; /* in <net/irda/irlmp.h> */ -struct iriap_cb; /* in <net/irda/iriap.h> */ -struct ias_value; /* in <net/irda/irias_object.h> */ -struct discovery_t; /* in <net/irda/discovery.h> */ - -/* IrDA Socket */ -struct irda_sock { - __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 */ -=09 - __u32 max_sdu_size_rx; - __u32 max_sdu_size_tx; - __u32 max_data_size; - __u8 max_header_size; - struct qos_info qos_tx; - - __u16 mask; /* Hint bits mask */ - __u16 hints; /* Hint bits */ - - __u32 ckey; /* IrLMP client handle */ - __u32 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 */ - struct discovery_t *cachediscovery; /* Result of selective discovery qu= ery */ - - int nslots; /* Number of slots to use for discovery */ - - int errno; /* status of the IAS query */ - - struct sock *sk; - 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; -}; - -#define irda_sk(__sk) ((struct irda_sock *)(__sk)->protinfo) - -/* - * This type is used by the protocols that transmit 16 bits words in=20 - * 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]=20 - * and LSB in byte[1]. - */ -typedef union { - __u16 word; - __u8 byte[2]; -} __u16_host_order; - -/*=20 - * Per-packet information we need to hide inside sk_buff=20 - * (must not exceed 48 bytes, check with struct sk_buff)=20 - */ -struct irda_skb_cb { - 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 */ -}; - -/* Misc status information */ -typedef enum { - STATUS_OK, - STATUS_ABORTED, - STATUS_NO_ACTIVITY, - STATUS_NOISY, - STATUS_REMOTE, -} LINK_STATUS; - -typedef enum { - LOCK_NO_CHANGE, - LOCK_LOCKED, - LOCK_UNLOCKED, -} LOCK_STATUS; - -typedef enum { /* FIXME check the two first reason codes */ - LAP_DISC_INDICATION=3D1, /* 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; - -/* =20 - * IrLMP disconnect reasons. The order is very important, since they=20 - * correspond to disconnect reasons sent in IrLMP disconnect frames, so - * please do not touch :-) - */ -typedef enum { - LM_USER_REQUEST =3D 1, /* User request */ - LM_LAP_DISCONNECT, /* Unexpected IrLAP disconnect */ - LM_CONNECT_FAILURE, /* Failed to establish IrLAP connection */ - LM_LAP_RESET, /* IrLAP reset */ - LM_INIT_DISCONNECT, /* Link Management initiated disconnect */ - LM_LSAP_NOTCONN, /* Data delivered on unconnected LSAP */ - LM_NON_RESP_CLIENT, /* Non responsive LM-MUX client */ - LM_NO_AVAIL_CLIENT, /* No available LM-MUX client */ - LM_CONN_HALF_OPEN, /* Connection is half open */ - LM_BAD_SOURCE_ADDR, /* Illegal source address (i.e 0x00) */ -} LM_REASON; -#define LM_UNKNOWN 0xff /* Unspecified disconnect reason */ - -/* - * Notify structure used between transport and link management layers - */ -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,=20 - struct qos_info *qos, __u32 max_sdu_size, - __u8 max_header_size, struct sk_buff *skb); - void (*connect_indication)(void *instance, void *sap,=20 - struct qos_info *qos, __u32 max_sdu_size,=20 - __u8 max_header_size, struct sk_buff *skb); - void (*disconnect_indication)(void *instance, void *sap,=20 - 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 =20 #endif /* NET_IRDA_H */ diff -u -p --new-file linux/include/net/irda.d9/irda_device.h linux/inclu= de/net/irda/irda_device.h --- linux/include/net/irda.d9/irda_device.h Sat Jun 8 22:30:19 2002 +++ linux/include/net/irda/irda_device.h Tue Jun 18 13:51:36 2002 @@ -11,6 +11,7 @@ *=20 * Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved. * Copyright (c) 1998 Thomas Davis, <ra...@ra...>, + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -29,18 +30,27 @@ * =20 ********************************************************************/ =20 +/* + * 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 =20 #include <linux/tty.h> #include <linux/netdevice.h> #include <linux/spinlock.h> +#include <linux/skbuff.h> /* struct sk_buff */ #include <linux/irda.h> =20 #include <net/irda/irda.h> -#include <net/irda/qos.h> -#include <net/irda/irqueue.h> -#include <net/irda/irlap_frame.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; =20 /* Some non-standard interface flags (should not conflict with any in if= .h) */ #define IFF_SIR 0x0001 /* Supports SIR speeds */ @@ -120,6 +130,22 @@ struct dongle_reg { int (*change_speed)(struct irda_task *task); }; =20 +/*=20 + * Per-packet information we need to hide inside sk_buff=20 + * (must not exceed 48 bytes, check with struct sk_buff)=20 + */ +struct irda_skb_cb { + 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 */ @@ -157,6 +183,13 @@ typedef struct { /* 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= , + char * hw_name); +void irlap_close(struct irlap_cb *self); =20 /* Interface to be uses by IrLAP */ void irda_device_set_media_busy(struct net_device *dev, int status); diff -u -p --new-file linux/include/net/irda.d9/iriap.h linux/include/net= /irda/iriap.h --- linux/include/net/irda.d9/iriap.h Sat Jun 8 22:28:28 2002 +++ linux/include/net/irda/iriap.h Tue Jun 18 13:51:36 2002 @@ -29,11 +29,10 @@ #include <linux/types.h> #include <linux/skbuff.h> =20 -#include <net/irda/qos.h> #include <net/irda/iriap_event.h> #include <net/irda/irias_object.h> -#include <net/irda/irqueue.h> -#include <net/irda/timer.h> +#include <net/irda/irqueue.h> /* irda_queue_t */ +#include <net/irda/timer.h> /* struct timer_list */ =20 #define IAP_LST 0x80 #define IAP_ACK 0x40 diff -u -p --new-file linux/include/net/irda.d9/irlap.h linux/include/net= /irda/irlap.h --- linux/include/net/irda.d9/irlap.h Sat Jun 8 22:29:16 2002 +++ linux/include/net/irda/irlap.h Tue Jun 18 13:51:36 2002 @@ -11,7 +11,7 @@ *=20 * Copyright (c) 1998-1999 Dag Brattli <da...@cs...>,=20 * All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -33,7 +33,11 @@ #include <linux/netdevice.h> #include <linux/timer.h> =20 -#include <net/irda/irlap_event.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 */ =20 #define CONFIG_IRDA_DYNAMIC_WINDOW 1 =20 @@ -84,6 +88,29 @@ #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; +=09 + 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 */ +}; =20 /* Main structure of IrLAP */ struct irlap_cb { diff -u -p --new-file linux/include/net/irda.d9/irlap_event.h linux/inclu= de/net/irda/irlap_event.h --- linux/include/net/irda.d9/irlap_event.h Sat Jun 8 22:26:22 2002 +++ linux/include/net/irda/irlap_event.h Tue Jun 18 13:51:36 2002 @@ -12,7 +12,7 @@ *=20 * Copyright (c) 1998-1999 Dag Brattli <da...@cs...>,=20 * All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -35,9 +35,10 @@ #define IRLAP_EVENT_H =20 #include <net/irda/irda.h> -#include <net/irda/discovery.h> =20 +/* A few forward declarations (to make compiler happy) */ struct irlap_cb; +struct irlap_info; =20 /* IrLAP States */ typedef enum { @@ -108,27 +109,16 @@ typedef enum { } IRLAP_EVENT; =20 /* - * Various things used by the IrLAP state machine + * Disconnect reason code */ -struct irlap_info { - __u8 caddr; /* Connection address */ - __u8 control; /* Frame type */ - __u8 cmd; - - __u32 saddr; - __u32 daddr; -=09 - 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 */ -}; +typedef enum { /* FIXME check the two first reason codes */ + LAP_DISC_INDICATION=3D1, /* 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; =20 extern const char *irlap_state[]; =20 diff -u -p --new-file linux/include/net/irda.d9/irlap_frame.h linux/inclu= de/net/irda/irlap_frame.h --- linux/include/net/irda.d9/irlap_frame.h Sat Jun 8 22:26:27 2002 +++ linux/include/net/irda/irlap_frame.h Tue Jun 18 13:51:36 2002 @@ -11,6 +11,7 @@ *=20 * Copyright (c) 1997-1999 Dag Brattli <da...@cs...>, * All Rights Reserved. + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -35,8 +36,10 @@ #include <linux/skbuff.h> =20 #include <net/irda/irda.h> -#include <net/irda/irlap.h> -#include <net/irda/qos.h> + +/* A few forward declarations (to make compiler happy) */ +struct irlap_cb; +struct discovery_t; =20 /* Frame types and templates */ #define INVALID 0xff @@ -80,14 +83,14 @@ struct xid_frame { __u8 flags; /* Discovery flags */ __u8 slotnr; __u8 version; -} PACK; +} IRDA_PACK; =20 struct test_frame { __u8 caddr; /* Connection address */ __u8 control; __u32 saddr; /* Source device address */ __u32 daddr; /* Destination device address */ -} PACK; +} IRDA_PACK; =20 struct ua_frame { __u8 caddr; @@ -95,12 +98,12 @@ struct ua_frame { =20 __u32 saddr; /* Source device address */ __u32 daddr; /* Dest device address */ -} PACK; +} IRDA_PACK; =09 struct i_frame { __u8 caddr; __u8 control; -} PACK; +} IRDA_PACK; =20 struct snrm_frame { __u8 caddr; @@ -108,11 +111,12 @@ struct snrm_frame { __u32 saddr; __u32 daddr; __u8 ncaddr; -} PACK; +} IRDA_PACK; =20 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,=20 - __u8 command, discovery_t *discovery); + __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 dadd= r,=20 struct sk_buff *cmd); diff -u -p --new-file linux/include/net/irda.d9/irlmp.h linux/include/net= /irda/irlmp.h --- linux/include/net/irda.d9/irlmp.h Sat Jun 8 22:26:34 2002 +++ linux/include/net/irda/irlmp.h Tue Jun 18 13:51:36 2002 @@ -11,7 +11,7 @@ *=20 * Copyright (c) 1998-1999 Dag Brattli <da...@cs...>,=20 * All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -34,7 +34,7 @@ =20 #include <net/irda/irda.h> #include <net/irda/qos.h> -#include <net/irda/irlap.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> @@ -90,8 +90,6 @@ typedef struct { DISCOVERY_CALLBACK1 expir_callback; /* Selective expiration */ void *priv; /* Used to identify client */ } irlmp_client_t; - -struct lap_cb; /* Forward decl. */ =20 /* * Information about each logical LSAP connection diff -u -p --new-file linux/include/net/irda.d9/irlmp_event.h linux/inclu= de/net/irda/irlmp_event.h --- linux/include/net/irda.d9/irlmp_event.h Sat Jun 8 22:30:03 2002 +++ linux/include/net/irda/irlmp_event.h Tue Jun 18 13:51:36 2002 @@ -11,7 +11,7 @@ *=20 * Copyright (c) 1997, 1999 Dag Brattli <da...@cs...>,=20 * All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -27,9 +27,11 @@ #ifndef IRLMP_EVENT_H #define IRLMP_EVENT_H =20 +/* A few forward declarations (to make compiler happy) */ struct irlmp_cb; struct lsap_cb; struct lap_cb; +struct discovery_t; =20 /* LAP states */ typedef enum { @@ -94,7 +96,7 @@ struct irlmp_event { =20 int reason; =20 - discovery_t *discovery; + struct discovery_t *discovery; }; =20 extern const char *irlmp_state[]; diff -u -p --new-file linux/include/net/irda.d9/irmod.h linux/include/net= /irda/irmod.h --- linux/include/net/irda.d9/irmod.h Sat Jun 8 22:31:31 2002 +++ linux/include/net/irda/irmod.h Tue Jun 18 13:51:36 2002 @@ -10,7 +10,7 @@ * Modified by: Dag Brattli <da...@cs...> * * Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -26,19 +26,76 @@ #ifndef IRMOD_H #define IRMOD_H =20 -#include <net/irda/irda.h> /* Notify stuff */ +/* Misc status information */ +typedef enum { + STATUS_OK, + STATUS_ABORTED, + STATUS_NO_ACTIVITY, + STATUS_NOISY, + STATUS_REMOTE, +} LINK_STATUS; =20 -/* Nothing much here anymore - Maybe this header should be merged in - * another header like net/irda/irda.h... - Jean II */ +typedef enum { + LOCK_NO_CHANGE, + LOCK_LOCKED, + LOCK_UNLOCKED, +} LOCK_STATUS; + +typedef enum { FLOW_STOP, FLOW_START } LOCAL_FLOW; + +/* =20 + * IrLMP disconnect reasons. The order is very important, since they=20 + * correspond to disconnect reasons sent in IrLMP disconnect frames, so + * please do not touch :-) + */ +typedef enum { + LM_USER_REQUEST =3D 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,=20 + struct qos_info *qos, __u32 max_sdu_size, + __u8 max_header_size, struct sk_buff *skb); + void (*connect_indication)(void *instance, void *sap,=20 + struct qos_info *qos, __u32 max_sdu_size,=20 + __u8 max_header_size, struct sk_buff *skb); + void (*disconnect_indication)(void *instance, void *sap,=20 + 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); =20 /* 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))) - -/* Zero the notify structure */ -void irda_notify_init(notify_t *notify); =20 #endif /* IRMOD_H */ =20 diff -u -p --new-file linux/include/net/irda.d9/irttp.h linux/include/net= /irda/irttp.h --- linux/include/net/irda.d9/irttp.h Sat Jun 8 22:28:10 2002 +++ linux/include/net/irda/irttp.h Tue Jun 18 13:51:36 2002 @@ -11,6 +11,7 @@ *=20 * Copyright (c) 1998-1999 Dag Brattli <da...@cs...>,=20 * All Rights Reserved. + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -31,8 +32,8 @@ #include <linux/spinlock.h> =20 #include <net/irda/irda.h> -#include <net/irda/irlmp.h> -#include <net/irda/qos.h> +#include <net/irda/irlmp.h> /* struct lsap_cb */ +#include <net/irda/qos.h> /* struct qos_info */ #include <net/irda/irqueue.h> =20 #define TTP_MAX_CONNECTIONS LM_MAX_CONNECTIONS diff -u -p --new-file linux/include/net/irda.d9/timer.h linux/include/net= /irda/timer.h --- linux/include/net/irda.d9/timer.h Sat Jun 8 22:26:33 2002 +++ linux/include/net/irda/timer.h Tue Jun 18 13:51:36 2002 @@ -11,7 +11,7 @@ *=20 * Copyright (c) 1997, 1998-1999 Dag Brattli <da...@cs...>,=20 * All Rights Reserved. - * Copyright (c) 2000-2001 Jean Tourrilhes <jt...@hp...> + * Copyright (c) 2000-2002 Jean Tourrilhes <jt...@hp...> * =20 * This program is free software; you can redistribute it and/or=20 * modify it under the terms of the GNU General Public License as=20 @@ -27,15 +27,17 @@ #ifndef TIMER_H #define TIMER_H =20 -#include <linux/netdevice.h> +#include <linux/timer.h> =20 #include <asm/param.h> /* for HZ */ =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> -#include <net/irda/irlap.h> -#include <net/irda/irlmp.h> -#include <net/irda/irda_device.h> + +/* A few forward declarations (to make compiler happy) */ +struct irlmp_cb; +struct irlap_cb; +struct lsap_cb; +struct lap_cb; =20 /*=20 * Timeout definitions, some defined in IrLAP p. 92 @@ -81,8 +83,6 @@ inline void irlap_start_backoff_timer(st void irlap_start_mbusy_timer(struct irlap_cb *self, int timeout); void irlap_stop_mbusy_timer(struct irlap_cb *); =20 -struct lsap_cb; -struct lap_cb; inline void irlmp_start_watchdog_timer(struct lsap_cb *, int timeout); inline void irlmp_start_discovery_timer(struct irlmp_cb *, int timeout); inline void irlmp_start_idle_timer(struct lap_cb *, int timeout); diff -u -p --new-file linux/include/net/irda.d9/wrapper.h linux/include/n= et/irda/wrapper.h --- linux/include/net/irda.d9/wrapper.h Sat Jun 8 22:26:29 2002 +++ linux/include/net/irda/wrapper.h Tue Jun 18 13:51:36 2002 @@ -30,7 +30,7 @@ #include <linux/skbuff.h> #include <linux/netdevice.h> =20 -#include <net/irda/irda_device.h> +#include <net/irda/irda_device.h> /* iobuff_t */ =20 #define BOF 0xc0 /* Beginning of frame */ #define XBOF 0xff diff -u -p linux/drivers/net/irda.d9/actisys.c linux/drivers/net/irda/act= isys.c --- linux/drivers/net/irda.d9/actisys.c Sat Jun 8 22:30:18 2002 +++ linux/drivers/net/irda/actisys.c Tue Jun 18 13:51:36 2002 @@ -42,7 +42,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> =20 /*=20 @@ -110,7 +109,7 @@ int __init actisys_init(void) return 0; } =20 -void actisys_cleanup(void) +void __exit actisys_cleanup(void) { /* We have to remove both dongles */ irda_device_unregister_dongle(&dongle); @@ -269,7 +268,6 @@ static int actisys_reset(struct irda_tas return ret; } =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...> - Jean Tourrilhes <jt@hpl.hp= .com>"); MODULE_DESCRIPTION("ACTiSYS IR-220L and IR-220L+ dongle driver");=09 MODULE_LICENSE("GPL"); @@ -281,10 +279,7 @@ MODULE_LICENSE("GPL"); * Initialize Actisys module * */ -int init_module(void) -{ - return actisys_init(); -} +module_init(actisys_init); =20 /* * Function cleanup_module (void) @@ -292,8 +287,4 @@ int init_module(void) * Cleanup Actisys module * */ -void cleanup_module(void) -{ - actisys_cleanup(); -} -#endif /* MODULE */ +module_exit(actisys_cleanup); diff -u -p linux/drivers/net/irda.d9/ali-ircc.c linux/drivers/net/irda/al= i-ircc.c --- linux/drivers/net/irda.d9/ali-ircc.c Sat Jun 8 22:29:15 2002 +++ linux/drivers/net/irda/ali-ircc.c Tue Jun 18 13:51:36 2002 @@ -40,8 +40,6 @@ =20 #include <net/irda/wrapper.h> #include <net/irda/irda.h> -#include <net/irda/irmod.h> -#include <net/irda/irlap_frame.h> #include <net/irda/irda_device.h> =20 #include <net/irda/ali-ircc.h> @@ -88,9 +86,7 @@ static char *dongle_types[] =3D { /* Some prototypes */ static int ali_ircc_open(int i, chipio_t *info); =20 -#ifdef MODULE static int ali_ircc_close(struct ali_ircc_cb *self); -#endif /* MODULE */ =20 static int ali_ircc_setup(chipio_t *info); static int ali_ircc_is_receiving(struct ali_ircc_cb *self); @@ -228,8 +224,7 @@ int __init ali_ircc_init(void) * Close all configured chips * */ -#ifdef MODULE -static void ali_ircc_cleanup(void) +static void __exit ali_ircc_cleanup(void) { int i; =20 @@ -244,7 +239,6 @@ static void ali_ircc_cleanup(void) =09 IRDA_DEBUG(2, __FUNCTION__ "(), ----------------- End -----------------= \n"); } -#endif /* MODULE */ =20 /* * Function ali_ircc_open (int i, chipio_t *inf) @@ -387,14 +381,13 @@ static int ali_ircc_open(int i, chipio_t } =20 =20 -#ifdef MODULE /* * Function ali_ircc_close (self) * * Close driver instance * */ -static int ali_ircc_close(struct ali_ircc_cb *self) +static int __exit ali_ircc_close(struct ali_ircc_cb *self) { int iobase; =20 @@ -428,7 +421,6 @@ static int ali_ircc_close(struct ali_irc =09 return 0; } -#endif /* MODULE */ =20 /* * Function ali_ircc_init_43 (chip, info) @@ -2288,7 +2280,6 @@ static void FIR2SIR(int iobase) IRDA_DEBUG(1, __FUNCTION__ "(), ----------------- End -----------------= -\n"); } =20 -#ifdef MODULE MODULE_AUTHOR("Benjamin Kong <ben...@al...>"); MODULE_DESCRIPTION("ALi FIR Controller Driver"); MODULE_LICENSE("GPL"); @@ -2301,13 +2292,5 @@ MODULE_PARM_DESC(irq, "IRQ lines"); MODULE_PARM(dma, "1-4i"); MODULE_PARM_DESC(dma, "DMA channels"); =20 -int init_module(void) -{ - return ali_ircc_init();=09 -} - -void cleanup_module(void) -{ - ali_ircc_cleanup(); -} -#endif /* MODULE */ +module_init(ali_ircc_init); +module_exit(ali_ircc_cleanup); diff -u -p linux/drivers/net/irda.d9/ep7211_ir.c linux/drivers/net/irda/e= p7211_ir.c --- linux/drivers/net/irda.d9/ep7211_ir.c Sat Jun 8 22:26:57 2002 +++ linux/drivers/net/irda/ep7211_ir.c Tue Jun 18 13:51:36 2002 @@ -11,7 +11,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> =20 #include <asm/io.h> @@ -123,7 +122,5 @@ MODULE_AUTHOR("Jon McClintock <jonm@blue MODULE_DESCRIPTION("EP7211 I/R driver"); MODULE_LICENSE("GPL"); =09 -#ifdef MODULE module_init(ep7211_ir_init); -#endif /* MODULE */ module_exit(ep7211_ir_cleanup); diff -u -p linux/drivers/net/irda.d9/esi.c linux/drivers/net/irda/esi.c --- linux/drivers/net/irda.d9/esi.c Sat Jun 8 22:30:20 2002 +++ linux/drivers/net/irda/esi.c Tue Jun 18 13:51:36 2002 @@ -38,7 +38,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> =20 static void esi_open(dongle_t *self, struct qos_info *qos); @@ -60,7 +59,7 @@ int __init esi_init(void) return irda_device_register_dongle(&dongle); } =20 -void esi_cleanup(void) +void __exit esi_cleanup(void) { irda_device_unregister_dongle(&dongle); } @@ -133,7 +132,6 @@ static int esi_reset(struct irda_task *t return 0; } =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("Extended Systems JetEye PC dongle driver"); MODULE_LICENSE("GPL"); @@ -144,10 +142,7 @@ MODULE_LICENSE("GPL"); * Initialize ESI module * */ -int init_module(void) -{ - return esi_init(); -} +module_init(esi_init); =20 /* * Function cleanup_module (void) @@ -155,9 +150,5 @@ int init_module(void) * Cleanup ESI module * */ -void cleanup_module(void) -{ - esi_cleanup(); -} -#endif /* MODULE */ +module_exit(esi_cleanup); =20 diff -u -p linux/drivers/net/irda.d9/girbil.c linux/drivers/net/irda/girb= il.c --- linux/drivers/net/irda.d9/girbil.c Sat Jun 8 22:26:27 2002 +++ linux/drivers/net/irda/girbil.c Tue Jun 18 13:51:36 2002 @@ -29,7 +29,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> #include <net/irda/irtty.h> =20 @@ -79,7 +78,7 @@ int __init girbil_init(void) return irda_device_register_dongle(&dongle); } =20 -void girbil_cleanup(void) +void __exit girbil_cleanup(void) { irda_device_unregister_dongle(&dongle); } @@ -231,7 +230,6 @@ static int girbil_reset(struct irda_task return ret; } =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("Greenwich GIrBIL dongle driver"); MODULE_LICENSE("GPL"); @@ -243,10 +241,7 @@ MODULE_LICENSE("GPL"); * Initialize Girbil module * */ -int init_module(void) -{ - return girbil_init(); -} +module_init(girbil_init); =20 /* * Function cleanup_module (void) @@ -254,8 +249,5 @@ int init_module(void) * Cleanup Girbil module * */ -void cleanup_module(void) -{ - girbil_cleanup(); -} -#endif /* MODULE */ +module_exit(girbil_cleanup); + diff -u -p linux/drivers/net/irda.d9/irda-usb.c linux/drivers/net/irda/ir= da-usb.c --- linux/drivers/net/irda.d9/irda-usb.c Tue Jun 18 11:59:12 2002 +++ linux/drivers/net/irda/irda-usb.c Tue Jun 18 13:51:36 2002 @@ -65,11 +65,6 @@ #include <linux/rtnetlink.h> #include <linux/usb.h> =20 -#include <net/irda/irda.h> -#include <net/irda/irlap.h> -#include <net/irda/irda_device.h> -#include <net/irda/wrapper.h> - #include <net/irda/irda-usb.h> =20 /*------------------------------------------------------------------*/ diff -u -p linux/drivers/net/irda.d9/irport.c linux/drivers/net/irda/irpo= rt.c --- linux/drivers/net/irda.d9/irport.c Sat Jun 8 22:27:25 2002 +++ linux/drivers/net/irda/irport.c Tue Jun 18 13:51:36 2002 @@ -55,7 +55,6 @@ #include <asm/io.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/wrapper.h> #include <net/irda/irport.h> =20 @@ -121,8 +120,7 @@ int __init irport_init(void) * Close all configured ports * */ -#ifdef MODULE -static void irport_cleanup(void) +static void __exit irport_cleanup(void) { int i; =20 @@ -133,7 +131,6 @@ static void irport_cleanup(void) irport_close(dev_self[i]); } } -#endif /* MODULE */ =20 struct irport_cb * irport_open(int i, unsigned int iobase, unsigned int irq) @@ -1026,7 +1023,6 @@ static struct net_device_stats *irport_n return &self->stats; } =20 -#ifdef MODULE MODULE_PARM(io, "1-4i"); MODULE_PARM_DESC(io, "Base I/O addresses"); MODULE_PARM(irq, "1-4i"); @@ -1036,15 +1032,6 @@ MODULE_AUTHOR("Dag Brattli <dagb@cs.uit. MODULE_DESCRIPTION("Half duplex serial driver for IrDA SIR mode"); MODULE_LICENSE("GPL"); =20 - -void cleanup_module(void) -{ - irport_cleanup(); -} - -int init_module(void) -{ - return irport_init(); -} -#endif /* MODULE */ +module_init(irport_init); +module_exit(irport_cleanup); =20 diff -u -p linux/drivers/net/irda.d9/irtty.c linux/drivers/net/irda/irtty= .c --- linux/drivers/net/irda.d9/irtty.c Sat Jun 8 22:28:14 2002 +++ linux/drivers/net/irda/irtty.c Tue Jun 18 13:51:36 2002 @@ -37,7 +37,6 @@ #include <net/irda/irda.h> #include <net/irda/irtty.h> #include <net/irda/wrapper.h> -#include <net/irda/timer.h> #include <net/irda/irda_device.h> =20 static hashbin_t *irtty =3D NULL; @@ -113,8 +112,7 @@ int __init irtty_init(void) * Called when the irda module is removed. Here we remove all instanc= es * of the driver, and the master array. */ -#ifdef MODULE -static void irtty_cleanup(void)=20 +static void __exit irtty_cleanup(void)=20 { int ret; =09 @@ -132,7 +130,6 @@ static void irtty_cleanup(void)=20 */ hashbin_delete(irtty, NULL); } -#endif /* MODULE */ =20 /*=20 * Function irtty_open(tty) @@ -1058,8 +1055,6 @@ static struct net_device_stats *irtty_ne return &self->stats; } =20 -#ifdef MODULE - MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("IrDA TTY device driver"); MODULE_LICENSE("GPL"); @@ -1074,10 +1069,7 @@ MODULE_PARM_DESC(qos_mtt_bits, "Minimum=20 * Initialize IrTTY module * */ -int init_module(void) -{ - return irtty_init(); -} +module_init(irtty_init); =20 /* * Function cleanup_module (void) @@ -1085,9 +1077,4 @@ int init_module(void) * Cleanup IrTTY module * */ -void cleanup_module(void) -{ - irtty_cleanup(); -} - -#endif /* MODULE */ +module_exit(irtty_cleanup); diff -u -p linux/drivers/net/irda.d9/litelink.c linux/drivers/net/irda/li= telink.c --- linux/drivers/net/irda.d9/litelink.c Sat Jun 8 22:30:25 2002 +++ linux/drivers/net/irda/litelink.c Tue Jun 18 13:51:36 2002 @@ -35,7 +35,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> =20 #define MIN_DELAY 25 /* 15 us, but wait a little more to be sure */ @@ -63,7 +62,7 @@ int __init litelink_init(void) return irda_device_register_dongle(&dongle); } =20 -void litelink_cleanup(void) +void __exit litelink_cleanup(void) { irda_device_unregister_dongle(&dongle); } @@ -163,7 +162,6 @@ static int litelink_reset(struct irda_ta return 0; } =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("Parallax Litelink dongle driver");=09 MODULE_LICENSE("GPL"); @@ -175,10 +173,7 @@ MODULE_LICENSE("GPL"); * Initialize Litelink module * */ -int init_module(void) -{ - return litelink_init(); -} +module_init(litelink_init); =20 /* * Function cleanup_module (void) @@ -186,8 +181,4 @@ int init_module(void) * Cleanup Litelink module * */ -void cleanup_module(void) -{ - litelink_cleanup(); -} -#endif /* MODULE */ +module_exit(litelink_cleanup); diff -u -p linux/drivers/net/irda.d9/mcp2120.c linux/drivers/net/irda/mcp= 2120.c --- linux/drivers/net/irda.d9/mcp2120.c Sat Jun 8 22:31:27 2002 +++ linux/drivers/net/irda/mcp2120.c Tue Jun 18 13:51:36 2002 @@ -25,7 +25,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> #include <net/irda/irtty.h> =20 @@ -56,7 +55,7 @@ int __init mcp2120_init(void) return irda_device_register_dongle(&dongle); } =20 -void mcp2120_cleanup(void) +void __exit mcp2120_cleanup(void) { irda_device_unregister_dongle(&dongle); } @@ -222,7 +221,6 @@ static int mcp2120_reset(struct irda_tas return ret; } =20 -#ifdef MODULE MODULE_AUTHOR("Felix Tang <ta...@ey...>"); MODULE_DESCRIPTION("Microchip MCP2120"); MODULE_LICENSE("GPL"); @@ -234,10 +232,7 @@ MODULE_LICENSE("GPL"); * Initialize MCP2120 module * */ -int init_module(void) -{ - return mcp2120_init(); -} +module_init(mcp2120_init); =20 /* * Function cleanup_module (void) @@ -245,8 +240,4 @@ int init_module(void) * Cleanup MCP2120 module * */ -void cleanup_module(void) -{ - mcp2120_cleanup(); -} -#endif /* MODULE */ +module_exit(mcp2120_cleanup); diff -u -p linux/drivers/net/irda.d9/nsc-ircc.c linux/drivers/net/irda/ns= c-ircc.c --- linux/drivers/net/irda.d9/nsc-ircc.c Sat Jun 8 22:26:26 2002 +++ linux/drivers/net/irda/nsc-ircc.c Tue Jun 18 13:51:36 2002 @@ -61,8 +61,6 @@ =20 #include <net/irda/wrapper.h> #include <net/irda/irda.h> -#include <net/irda/irmod.h> -#include <net/irda/irlap_frame.h> #include <net/irda/irda_device.h> =20 #include <net/irda/nsc-ircc.h> @@ -123,9 +121,7 @@ static char *dongle_types[] =3D { =20 /* Some prototypes */ static int nsc_ircc_open(int i, chipio_t *info); -#ifdef MODULE static int nsc_ircc_close(struct nsc_ircc_cb *self); -#endif /* MODULE */ static int nsc_ircc_setup(chipio_t *info); static void nsc_ircc_pio_receive(struct nsc_ircc_cb *self); static int nsc_ircc_dma_receive(struct nsc_ircc_cb *self);=20 @@ -225,8 +221,7 @@ int __init nsc_ircc_init(void) * Close all configured chips * */ -#ifdef MODULE -static void nsc_ircc_cleanup(void) +static void __exit nsc_ircc_cleanup(void) { int i; =20 @@ -237,7 +232,6 @@ static void nsc_ircc_cleanup(void) nsc_ircc_close(dev_self[i]); } } -#endif /* MODULE */ =20 /* * Function nsc_ircc_open (iobase, irq) @@ -245,7 +239,7 @@ static void nsc_ircc_cleanup(void) * Open driver instance * */ -static int nsc_ircc_open(int i, chipio_t *info) +static int __init nsc_ircc_open(int i, chipio_t *info) { struct net_device *dev; struct nsc_ircc_cb *self; @@ -384,14 +378,13 @@ static int nsc_ircc_open(int i, chipio_t return 0; } =20 -#ifdef MODULE /* * Function nsc_ircc_close (self) * * Close driver instance * */ -static int nsc_ircc_close(struct nsc_ircc_cb *self) +static int __exit nsc_ircc_close(struct nsc_ircc_cb *self) { int iobase; =20 @@ -424,7 +417,6 @@ static int nsc_ircc_close(struct nsc_irc =09 return 0; } -#endif /* MODULE */ =20 /* * Function nsc_ircc_init_108 (iobase, cfg_base, irq, dma) @@ -2046,7 +2038,6 @@ static int nsc_ircc_pmproc(struct pm_dev return 0; } =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("NSC IrDA Device Driver"); MODULE_LICENSE("GPL"); @@ -2063,14 +2054,6 @@ MODULE_PARM_DESC(dma, "DMA channels"); MODULE_PARM(dongle_id, "i"); MODULE_PARM_DESC(dongle_id, "Type-id of used dongle"); =20 -int init_module(void) -{ - return nsc_ircc_init(); -} - -void cleanup_module(void) -{ - nsc_ircc_cleanup(); -} -#endif /* MODULE */ +module_init(nsc_ircc_init); +module_exit(nsc_ircc_cleanup); =20 diff -u -p linux/drivers/net/irda.d9/old_belkin.c linux/drivers/net/irda/= old_belkin.c --- linux/drivers/net/irda.d9/old_belkin.c Sat Jun 8 22:29:14 2002 +++ linux/drivers/net/irda/old_belkin.c Tue Jun 18 13:51:36 2002 @@ -36,7 +36,6 @@ #include <linux/irda.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> =20 /* @@ -90,7 +89,7 @@ int __init old_belkin_init(void) return irda_device_register_dongle(&dongle); } =20 -void old_belkin_cleanup(void) +void __exit old_belkin_cleanup(void) { irda_device_unregister_dongle(&dongle); } @@ -149,7 +148,6 @@ static int old_belkin_reset(struct irda_ return 0; } =20 -#ifdef MODULE MODULE_AUTHOR("Jean Tourrilhes <jt...@hp...>"); MODULE_DESCRIPTION("Belkin (old) SmartBeam dongle driver");=09 MODULE_LICENSE("GPL"); @@ -161,10 +159,7 @@ MODULE_LICENSE("GPL"); * Initialize Old-Belkin module * */ -int init_module(void) -{ - return old_belkin_init(); -} +module_init(old_belkin_init); =20 /* * Function cleanup_module (void) @@ -172,9 +167,4 @@ int init_module(void) * Cleanup Old-Belkin module * */ -void cleanup_module(void) -{ - old_belkin_cleanup(); -} -#endif /* MODULE */ - +module_exit(old_belkin_cleanup); diff -u -p linux/drivers/net/irda.d9/sa1100_ir.c linux/drivers/net/irda/s= a1100_ir.c --- linux/drivers/net/irda.d9/sa1100_ir.c Sat Jun 8 22:29:00 2002 +++ linux/drivers/net/irda/sa1100_ir.c Tue Jun 18 13:51:36 2002 @@ -33,7 +33,6 @@ #include <linux/pm.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/wrapper.h> #include <net/irda/irda_device.h> =20 @@ -1078,9 +1077,7 @@ static void sa1100_irda_net_uninit(struc kfree(si); } =20 -#ifdef MODULE static -#endif int __init sa1100_irda_init(void) { struct net_device *dev; @@ -1181,10 +1178,8 @@ static int __init sa1100ir_setup(char *l =20 __setup("sa1100ir=3D", sa1100ir_setup); =20 -#ifdef MODULE module_init(sa1100_irda_init); module_exit(sa1100_irda_exit); -#endif =20 MODULE_AUTHOR("Russell King <rm...@ar...>"); MODULE_DESCRIPTION("StrongARM SA1100 IrDA driver"); diff -u -p linux/drivers/net/irda.d9/smc-ircc.c linux/drivers/net/irda/sm= c-ircc.c --- linux/drivers/net/irda.d9/smc-ircc.c Sat Jun 8 22:26:29 2002 +++ linux/drivers/net/irda/smc-ircc.c Tue Jun 18 13:51:36 2002 @@ -59,8 +59,6 @@ =20 #include <net/irda/wrapper.h> #include <net/irda/irda.h> -#include <net/irda/irmod.h> -#include <net/irda/irlap_frame.h> #include <net/irda/irda_device.h> #include <net/irda/smc-ircc.h> #include <net/irda/irport.h> @@ -1160,15 +1158,12 @@ static int ircc_pmproc(struct pm_dev *de return 0; } =20 -#ifdef MODULE - /* * Function ircc_close (self) * * Close driver instance * */ -#ifdef MODULE static int __exit ircc_close(struct ircc_cb *self) { int iobase; @@ -1207,7 +1202,6 @@ static int __exit ircc_close(struct ircc =20 return 0; } -#endif /* MODULE */ =20 int __init smc_init(void) { @@ -1243,5 +1237,3 @@ MODULE_PARM(ircc_sir, "1-4i"); MODULE_PARM_DESC(ircc_sir, "SIR Base Address"); MODULE_PARM(ircc_cfg, "1-4i"); MODULE_PARM_DESC(ircc_cfg, "Configuration register base address"); - -#endif /* MODULE */ diff -u -p linux/drivers/net/irda.d9/tekram.c linux/drivers/net/irda/tekr= am.c --- linux/drivers/net/irda.d9/tekram.c Sat Jun 8 22:30:25 2002 +++ linux/drivers/net/irda/tekram.c Tue Jun 18 13:51:36 2002 @@ -29,7 +29,6 @@ #include <linux/init.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/irda_device.h> #include <net/irda/irtty.h> =20 @@ -60,7 +59,7 @@ int __init tekram_init(void) return irda_device_register_dongle(&dongle); } =20 -void tekram_cleanup(void) +void __exit tekram_cleanup(void) { irda_device_unregister_dongle(&dongle); } @@ -264,7 +263,6 @@ int tekram_reset(struct irda_task *task) return ret; } =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("Tekram IrMate IR-210B dongle driver"); MODULE_LICENSE("GPL"); @@ -275,10 +273,7 @@ MODULE_LICENSE("GPL"); * Initialize Tekram module * */ -int init_module(void) -{ - return tekram_init(); -} +module_init(tekram_init); =20 /* * Function cleanup_module (void) @@ -286,8 +281,4 @@ int init_module(void) * Cleanup Tekram module * */ -void cleanup_module(void) -{ - tekram_cleanup(); -} -#endif /* MODULE */ +module_exit(tekram_cleanup); diff -u -p linux/drivers/net/irda.d9/toshoboe.c linux/drivers/net/irda/to= shoboe.c --- linux/drivers/net/irda.d9/toshoboe.c Sat Jun 8 22:26:30 2002 +++ linux/drivers/net/irda/toshoboe.c Tue Jun 18 13:51:36 2002 @@ -69,8 +69,6 @@ static char *rcsid =3D "$Id: toshoboe.c,v=20 =20 #include <net/irda/wrapper.h> #include <net/irda/irda.h> -#include <net/irda/irmod.h> -#include <net/irda/irlap_frame.h> #include <net/irda/irda_device.h> =20 #include <linux/pm.h> diff -u -p linux/drivers/net/irda.d9/vlsi_ir.c linux/drivers/net/irda/vls= i_ir.c --- linux/drivers/net/irda.d9/vlsi_ir.c Sat Jun 8 22:26:51 2002 +++ linux/drivers/net/irda/vlsi_ir.c Tue Jun 18 13:51:36 2002 @@ -37,7 +37,6 @@ #include <net/irda/irda.h> #include <net/irda/irda_device.h> #include <net/irda/wrapper.h> -#include <net/irda/irlap.h> =20 #include <net/irda/vlsi_ir.h> =20 diff -u -p linux/drivers/net/irda.d9/w83977af_ir.c linux/drivers/net/irda= /w83977af_ir.c --- linux/drivers/net/irda.d9/w83977af_ir.c Sat Jun 8 22:29:00 2002 +++ linux/drivers/net/irda/w83977af_ir.c Tue Jun 18 13:51:36 2002 @@ -56,7 +56,6 @@ #include <asm/byteorder.h> =20 #include <net/irda/irda.h> -#include <net/irda/irmod.h> #include <net/irda/wrapper.h> #include <net/irda/irda_device.h> #include <net/irda/w83977af.h> @@ -135,8 +134,7 @@ int __init w83977af_init(void) * Close all configured chips * */ -#ifdef MODULE -void w83977af_cleanup(void) +void __exit w83977af_cleanup(void) { int i; =20 @@ -147,7 +145,6 @@ void w83977af_cleanup(void) w83977af_close(dev_self[i]); } } -#endif /* MODULE */ =20 /* * Function w83977af_open (iobase, irq) @@ -1374,8 +1371,6 @@ static struct net_device_stats *w83977af return &self->stats; } =20 -#ifdef MODULE - MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("Winbond W83977AF IrDA Device Driver"); MODULE_LICENSE("GPL"); @@ -1394,10 +1389,7 @@ MODULE_PARM_DESC(irq, "IRQ lines"); * =20 * */ -int init_module(void) -{ - return w83977af_init(); -} +module_init(w83977af_init); =20 /* * Function cleanup_module (void) @@ -1405,8 +1397,4 @@ int init_module(void) * =20 * */ -void cleanup_module(void) -{ - w83977af_cleanup(); -} -#endif /* MODULE */ +module_exit(w83977af_cleanup); diff -u -p -r linux/net/irda.d9/af_irda.c linux/net/irda/af_irda.c --- linux/net/irda.d9/af_irda.c Tue Jun 18 11:59:20 2002 +++ linux/net/irda/af_irda.c Tue Jun 18 13:51:36 2002 @@ -48,27 +48,17 @@ #include <linux/socket.h> #include <linux/sockios.h> #include <linux/init.h> -#include <linux/if_arp.h> #include <linux/net.h> #include <linux/irda.h> #include <linux/poll.h> =20 +#include <asm/ioctls.h> /* TIOCOUTQ, TIOCINQ */ #include <asm/uaccess.h> =20 #include <net/sock.h> #include <net/tcp.h> =20 -#include <net/irda/irda.h> -#include <net/irda/iriap.h> -#include <net/irda/irias_object.h> -#include <net/irda/irlmp.h> -#include <net/irda/irttp.h> -#include <net/irda/discovery.h> - -extern int irda_init(void); -extern void irda_cleanup(void); -extern int irlap_driver_rcv(struct sk_buff *, struct net_device *, - struct packet_type *); +#include <net/irda/af_irda.h> =20 static int irda_create(struct socket *sock, int protocol); =20 @@ -83,10 +73,6 @@ static struct proto_ops irda_ultra_ops; =20 #define IRDA_MAX_HEADER (TTP_MAX_HEADER) =20 -#ifdef CONFIG_IRDA_DEBUG -__u32 irda_debug =3D IRDA_DEBUG_LEVEL; -#endif - /* * Function irda_data_indication (instance, sap, skb) * @@ -2530,118 +2516,27 @@ SOCKOPS_WRAP(irda_ultra, PF_IRDA); #endif /* CONFIG_IRDA_ULTRA */ =20 /* - * Function irda_device_event (this, event, ptr) + * Function irsock_init (pro) * - * Called when a device is taken up or down + * Initialize IrDA protocol * */ -static int irda_device_event(struct notifier_block *this, unsigned long = event, - void *ptr) -{ - struct net_device *dev =3D (struct net_device *) ptr; - - /* Reject non IrDA devices */ - if (dev->type !=3D ARPHRD_IRDA) - return NOTIFY_DONE; - - switch (event) { - case NETDEV_UP: - IRDA_DEBUG(3, __FUNCTION__ "(), NETDEV_UP\n"); - /* irda_dev_device_up(dev); */ - break; - case NETDEV_DOWN: - IRDA_DEBUG(3, __FUNCTION__ "(), NETDEV_DOWN\n"); - /* irda_kill_by_device(dev); */ - /* irda_rt_device_down(dev); */ - /* irda_dev_device_down(dev); */ - break; - default: - break; - } - - return NOTIFY_DONE; -} - -static struct packet_type irda_packet_type =3D -{ - 0, /* MUTTER ntohs(ETH_P_IRDA),*/ - NULL, - irlap_driver_rcv, - NULL, - NULL, -}; - -static struct notifier_block irda_dev_notifier =3D { - irda_device_event, - NULL, - 0 -}; - -/* - * Function irda_proc_modcount (inode, fill) - * - * Use by the proc file system functions to prevent the irda module - * being removed while the use is standing in the net/irda directory - */ -void irda_proc_modcount(struct inode *inode, int fill) -{ -#ifdef MODULE -#ifdef CONFIG_PROC_FS - if (fill) - MOD_INC_USE_COUNT; - else - MOD_DEC_USE_COUNT; -#endif /* CONFIG_PROC_FS */ -#endif /* MODULE */ -} - -/* - * Function irda_proto_init (pro) - * - * Initialize IrDA protocol layer - * - */ -int __init irda_proto_init(void) +int __init irsock_init(void) { sock_register(&irda_family_ops); =20 - irda_packet_type.type =3D htons(ETH_P_IRDA); - dev_add_pack(&irda_packet_type); - - register_netdevice_notifier(&irda_dev_notifier); - - irda_init(); - irda_device_init(); return 0; } =20 -late_initcall(irda_proto_init); - /* - * Function irda_proto_cleanup (void) + * Function irsock_cleanup (void) * - * Remove IrDA protocol layer + * Remove IrDA protocol * */ -#ifdef MODULE -void irda_proto_cleanup(void) +void __exit irsock_cleanup(void) { - irda_packet_type.type =3D htons(ETH_P_IRDA); - dev_remove_pack(&irda_packet_type); - - unregister_netdevice_notifier(&irda_dev_notifier); - sock_unregister(PF_IRDA); - irda_cleanup(); =20 return; } -module_exit(irda_proto_cleanup); - -MODULE_AUTHOR("Dag Brattli <da...@cs...>"); -MODULE_DESCRIPTION("The Linux IrDA Protocol Subsystem"); -MODULE_LICENSE("GPL"); -#ifdef CONFIG_IRDA_DEBUG -MODULE_PARM(irda_debug, "1l"); -#endif -#endif /* MODULE */ diff -u -p -r linux/net/irda.d9/ircomm/ircomm_core.c linux/net/irda/ircom= m/ircomm_core.c --- linux/net/irda.d9/ircomm/ircomm_core.c Tue Jun 18 11:59:20 2002 +++ linux/net/irda/ircomm/ircomm_core.c Tue Jun 18 13:51:36 2002 @@ -76,8 +76,7 @@ int __init ircomm_init(void) return 0; } =20 -#ifdef MODULE -void ircomm_cleanup(void) +void __exit ircomm_cleanup(void) { IRDA_DEBUG(2, __FUNCTION__ "()\n"); =20 @@ -87,7 +86,6 @@ void ircomm_cleanup(void) remove_proc_entry("ircomm", proc_irda); #endif /* CONFIG_PROC_FS */ } -#endif /* MODULE */ =20 /* * Function ircomm_open (client_notify) @@ -543,18 +541,9 @@ int ircomm_proc_read(char *buf, char **s } #endif /* CONFIG_PROC_FS */ =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@br...>"); MODULE_DESCRIPTION("IrCOMM protocol"); MODULE_LICENSE("GPL"); =20 -int init_module(void)=20 -{ - return ircomm_init(); -} -=09 -void cleanup_module(void) -{ - ircomm_cleanup(); -} -#endif /* MODULE */ +module_init(ircomm_init); +module_exit(ircomm_cleanup); diff -u -p -r linux/net/irda.d9/ircomm/ircomm_lmp.c linux/net/irda/ircomm= /ircomm_lmp.c --- linux/net/irda.d9/ircomm/ircomm_lmp.c Sat Jun 8 22:26:52 2002 +++ linux/net/irda/ircomm/ircomm_lmp.c Tue Jun 18 13:51:36 2002 @@ -35,6 +35,7 @@ #include <net/irda/irda.h> #include <net/irda/irlmp.h> #include <net/irda/iriap.h> +#include <net/irda/irda_device.h> /* struct irda_skb_cb */ =20 #include <net/irda/ircomm_event.h> #include <net/irda/ircomm_lmp.h> diff -u -p -r linux/net/irda.d9/ircomm/ircomm_tty.c linux/net/irda/ircomm= /ircomm_tty.c --- linux/net/irda.d9/ircomm/ircomm_tty.c Tue Jun 18 11:59:20 2002 +++ linux/net/irda/ircomm/ircomm_tty.c Tue Jun 18 13:51:36 2002 @@ -141,8 +141,7 @@ int __init ircomm_tty_init(void) return 0; } =20 -#ifdef MODULE -static void __ircomm_tty_cleanup(struct ircomm_tty_cb *self) +static void __exit __ircomm_tty_cleanup(struct ircomm_tty_cb *self) { IRDA_DEBUG(0, __FUNCTION__ "()\n"); =20 @@ -161,7 +160,7 @@ static void __ircomm_tty_cleanup(struct=20 * Remove IrCOMM TTY layer/driver * */ -void ircomm_tty_cleanup(void) +void __exit ircomm_tty_cleanup(void) { int ret; =20 @@ -175,7 +174,6 @@ void ircomm_tty_cleanup(void) =20 hashbin_delete(ircomm_tty, (FREE_FUNC) __ircomm_tty_cleanup); } -#endif /* MODULE */ =20 /* * Function ircomm_startup (self) @@ -1390,23 +1388,9 @@ done: } #endif /* CONFIG_PROC_FS */ =20 -#ifdef MODULE MODULE_AUTHOR("Dag Brattli <da...@cs...>"); MODULE_DESCRIPTION("IrCOMM serial TTY driver"); MODULE_LICENSE("GPL"); =20 -int init_module(void)=20 -{ - return ircomm_tty_init(); -} - -void cleanup_module(void) -{ - ircomm_tty_cleanup(); -} - -#endif /* MODULE */ - - - - +module_init(ircomm_tty_init); +module_exit(ircomm_tty_cleanup); diff -u -p -r linux/net/irda.d9/irda_device.c linux/net/irda/irda_device.= c --- linux/net/irda.d9/irda_device.c Tue Jun 18 11:59:20 2002 +++ linux/net/irda/irda_device.c Tue Jun 18 13:51:36 2002 @@ -55,19 +55,6 @@ #include <net/irda/timer.h> #include <net/irda/wrapper.h> =20 -extern int irtty_init(void); -extern int nsc_ircc_init(void); -extern int ircc_init(void); -extern int toshoboe_init(void); -extern int litelink_init(void); -extern int w83977af_init(void); -extern int esi_init(void); -extern int tekram_init(void); -extern int actisys_init(void); -extern int girbil_init(void); -extern int sa1100_irda_init(void); -extern int ep7211_ir_init(void); - static void __irda_task_delete(struct irda_task *task); =20 static hashbin_t *dongles =3D NULL; @@ -116,53 +103,13 @@ int __init irda_device_init( void) return -ENOMEM; } =20 - /* - * Call the init function of the de... [truncated message content] |