X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Firda%2Firlan%2Firlan_common.c;h=2bb04ac0932922dd8e5042787fdacea795b5ec13;hb=refs%2Fheads%2Fvserver;hp=fa25d3a97d0159074bc24faea81855220dad3b07;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/net/irda/irlan/irlan_common.c b/net/irda/irlan/irlan_common.c index fa25d3a97..2bb04ac09 100644 --- a/net/irda/irlan/irlan_common.c +++ b/net/irda/irlan/irlan_common.c @@ -23,7 +23,6 @@ * ********************************************************************/ -#include #include #include @@ -36,9 +35,10 @@ #include #include #include +#include +#include #include -#include #include #include @@ -104,10 +104,13 @@ static struct file_operations irlan_fops = { extern struct proc_dir_entry *proc_irda; #endif /* CONFIG_PROC_FS */ +static struct irlan_cb *irlan_open(__u32 saddr, __u32 daddr); static void __irlan_close(struct irlan_cb *self); static int __irlan_insert_param(struct sk_buff *skb, char *param, int type, __u8 value_byte, __u16 value_short, __u8 *value_array, __u16 value_len); +static void irlan_open_unicast_addr(struct irlan_cb *self); +static void irlan_get_unicast_addr(struct irlan_cb *self); void irlan_close_tsaps(struct irlan_cb *self); /* @@ -184,7 +187,7 @@ static void __exit irlan_cleanup(void) * Open new instance of a client/provider, we should only register the * network device if this instance is ment for a particular client/provider */ -struct irlan_cb *irlan_open(__u32 saddr, __u32 daddr) +static struct irlan_cb *irlan_open(__u32 saddr, __u32 daddr) { struct net_device *dev; struct irlan_cb *self; @@ -257,8 +260,8 @@ static void __irlan_close(struct irlan_cb *self) IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); ASSERT_RTNL(); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); del_timer_sync(&self->watchdog_timer); del_timer_sync(&self->client.kick_timer); @@ -293,9 +296,11 @@ struct irlan_cb *irlan_get_any(void) * Here we receive the connect indication for the data channel * */ -void irlan_connect_indication(void *instance, void *sap, struct qos_info *qos, - __u32 max_sdu_size, __u8 max_header_size, - struct sk_buff *skb) +static void irlan_connect_indication(void *instance, void *sap, + struct qos_info *qos, + __u32 max_sdu_size, + __u8 max_header_size, + struct sk_buff *skb) { struct irlan_cb *self; struct tsap_cb *tsap; @@ -305,9 +310,9 @@ void irlan_connect_indication(void *instance, void *sap, struct qos_info *qos, self = (struct irlan_cb *) instance; tsap = (struct tsap_cb *) sap; - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); - ASSERT(tsap == self->tsap_data,return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(tsap == self->tsap_data,return;); self->max_sdu_size = max_sdu_size; self->max_header_size = max_header_size; @@ -338,16 +343,18 @@ void irlan_connect_indication(void *instance, void *sap, struct qos_info *qos, netif_start_queue(self->dev); /* Clear reason */ } -void irlan_connect_confirm(void *instance, void *sap, struct qos_info *qos, - __u32 max_sdu_size, __u8 max_header_size, - struct sk_buff *skb) +static void irlan_connect_confirm(void *instance, void *sap, + struct qos_info *qos, + __u32 max_sdu_size, + __u8 max_header_size, + struct sk_buff *skb) { struct irlan_cb *self; self = (struct irlan_cb *) instance; - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); self->max_sdu_size = max_sdu_size; self->max_header_size = max_header_size; @@ -383,8 +390,9 @@ void irlan_connect_confirm(void *instance, void *sap, struct qos_info *qos, * Callback function for the IrTTP layer. Indicates a disconnection of * the specified connection (handle) */ -void irlan_disconnect_indication(void *instance, void *sap, LM_REASON reason, - struct sk_buff *userdata) +static void irlan_disconnect_indication(void *instance, + void *sap, LM_REASON reason, + struct sk_buff *userdata) { struct irlan_cb *self; struct tsap_cb *tsap; @@ -394,12 +402,12 @@ void irlan_disconnect_indication(void *instance, void *sap, LM_REASON reason, self = (struct irlan_cb *) instance; tsap = (struct tsap_cb *) sap; - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); - ASSERT(tsap != NULL, return;); - ASSERT(tsap->magic == TTP_TSAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(tsap != NULL, return;); + IRDA_ASSERT(tsap->magic == TTP_TSAP_MAGIC, return;); - ASSERT(tsap == self->tsap_data, return;); + IRDA_ASSERT(tsap == self->tsap_data, return;); IRDA_DEBUG(2, "IrLAN, data channel disconnected by peer!\n"); @@ -423,7 +431,7 @@ void irlan_disconnect_indication(void *instance, void *sap, LM_REASON reason, IRDA_DEBUG(2, "%s(), IrLMP connect failed\n", __FUNCTION__ ); break; default: - ERROR("%s(), Unknown disconnect reason\n", __FUNCTION__); + IRDA_ERROR("%s(), Unknown disconnect reason\n", __FUNCTION__); break; } @@ -447,8 +455,8 @@ void irlan_open_data_tsap(struct irlan_cb *self) IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); /* Check if already open */ if (self->tsap_data) @@ -483,8 +491,8 @@ void irlan_close_tsaps(struct irlan_cb *self) { IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); /* Disconnect and close all open TSAP connections */ if (self->tsap_data) { @@ -518,8 +526,8 @@ void irlan_ias_register(struct irlan_cb *self, __u8 tsap_sel) struct ias_object *obj; struct ias_value *new_value; - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); /* * Check if object has already been registered by a previous provider. @@ -601,7 +609,7 @@ int irlan_run_ctrl_tx_queue(struct irlan_cb *self) * This function makes sure that commands on the control channel is being * sent in a command/response fashion */ -void irlan_ctrl_data_request(struct irlan_cb *self, struct sk_buff *skb) +static void irlan_ctrl_data_request(struct irlan_cb *self, struct sk_buff *skb) { IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); @@ -625,10 +633,11 @@ void irlan_get_provider_info(struct irlan_cb *self) IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(64); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER, + GFP_ATOMIC); if (!skb) return; @@ -657,10 +666,13 @@ void irlan_open_data_channel(struct irlan_cb *self) IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(64); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_STRING_PARAMETER_LEN("MEDIA", "802.3") + + IRLAN_STRING_PARAMETER_LEN("ACCESS_TYPE", "DIRECT"), + GFP_ATOMIC); if (!skb) return; @@ -689,14 +701,16 @@ void irlan_close_data_channel(struct irlan_cb *self) IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); /* Check if the TSAP is still there */ if (self->client.tsap_ctrl == NULL) return; - skb = dev_alloc_skb(64); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN"), + GFP_ATOMIC); if (!skb) return; @@ -707,7 +721,7 @@ void irlan_close_data_channel(struct irlan_cb *self) /* Build frame */ frame[0] = CMD_CLOSE_DATA_CHAN; - frame[1] = 0x01; /* Two parameters */ + frame[1] = 0x01; /* One parameter */ irlan_insert_byte_param(skb, "DATA_CHAN", self->dtsap_sel_data); @@ -721,17 +735,21 @@ void irlan_close_data_channel(struct irlan_cb *self) * address. * */ -void irlan_open_unicast_addr(struct irlan_cb *self) +static void irlan_open_unicast_addr(struct irlan_cb *self) { struct sk_buff *skb; __u8 *frame; IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(128); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") + + IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "DIRECTED") + + IRLAN_STRING_PARAMETER_LEN("FILTER_MODE", "FILTER"), + GFP_ATOMIC); if (!skb) return; @@ -766,10 +784,15 @@ void irlan_set_broadcast_filter(struct irlan_cb *self, int status) IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(128); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") + + IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "BROADCAST") + + /* We may waste one byte here...*/ + IRLAN_STRING_PARAMETER_LEN("FILTER_MODE", "FILTER"), + GFP_ATOMIC); if (!skb) return; @@ -805,10 +828,15 @@ void irlan_set_multicast_filter(struct irlan_cb *self, int status) IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(128); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") + + IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "MULTICAST") + + /* We may waste one byte here...*/ + IRLAN_STRING_PARAMETER_LEN("FILTER_MODE", "NONE"), + GFP_ATOMIC); if (!skb) return; @@ -838,17 +866,22 @@ void irlan_set_multicast_filter(struct irlan_cb *self, int status) * can construct its packets. * */ -void irlan_get_unicast_addr(struct irlan_cb *self) +static void irlan_get_unicast_addr(struct irlan_cb *self) { struct sk_buff *skb; __u8 *frame; IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(128); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") + + IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "DIRECTED") + + IRLAN_STRING_PARAMETER_LEN("FILTER_OPERATION", + "DYNAMIC"), + GFP_ATOMIC); if (!skb) return; @@ -880,10 +913,13 @@ void irlan_get_media_char(struct irlan_cb *self) IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); - ASSERT(self != NULL, return;); - ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); - skb = dev_alloc_skb(64); + skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER + + IRLAN_STRING_PARAMETER_LEN("MEDIA", "802.3"), + GFP_ATOMIC); + if (!skb) return; @@ -959,7 +995,7 @@ static int __irlan_insert_param(struct sk_buff *skb, char *param, int type, { __u8 *frame; __u8 param_len; - __u16 tmp_le; /* Temporary value in little endian format */ + __le16 tmp_le; /* Temporary value in little endian format */ int n=0; if (skb == NULL) { @@ -976,8 +1012,8 @@ static int __irlan_insert_param(struct sk_buff *skb, char *param, int type, value_len = 2; break; case IRLAN_ARRAY: - ASSERT(value_array != NULL, return 0;); - ASSERT(value_len > 0, return 0;); + IRDA_ASSERT(value_array != NULL, return 0;); + IRDA_ASSERT(value_len > 0, return 0;); break; default: IRDA_DEBUG(2, "%s(), Unknown parameter type!\n", __FUNCTION__ ); @@ -1020,7 +1056,7 @@ static int __irlan_insert_param(struct sk_buff *skb, char *param, int type, default: break; } - ASSERT(n == (param_len+value_len+3), return 0;); + IRDA_ASSERT(n == (param_len+value_len+3), return 0;); return param_len+value_len+3; } @@ -1133,8 +1169,8 @@ static int irlan_seq_show(struct seq_file *seq, void *v) else { struct irlan_cb *self = v; - ASSERT(self != NULL, return -1;); - ASSERT(self->magic == IRLAN_MAGIC, return -1;); + IRDA_ASSERT(self != NULL, return -1;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, return -1;); seq_printf(seq,"ifname: %s,\n", self->dev->name); @@ -1181,9 +1217,9 @@ MODULE_AUTHOR("Dag Brattli "); MODULE_DESCRIPTION("The Linux IrDA LAN protocol"); MODULE_LICENSE("GPL"); -MODULE_PARM(eth, "i"); +module_param(eth, bool, 0); MODULE_PARM_DESC(eth, "Name devices ethX (0) or irlanX (1)"); -MODULE_PARM(access, "i"); +module_param(access, int, 0); MODULE_PARM_DESC(access, "Access type DIRECT=1, PEER=2, HOSTED=3"); module_init(irlan_init);