diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-01-27 23:45:22 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-01-27 23:45:22 +0000 |
commit | 5b35aa5cd29bb111d847b2a2ed18110acbfb1f44 (patch) | |
tree | c7bbaa1137528330d3c74d14056ef7016a52be72 /net/irda/ircomm | |
parent | 511bcd7c5924ce9e98ad1cb851988f7448dfef0f (diff) |
Merge with Linux 2.3.24.
Diffstat (limited to 'net/irda/ircomm')
-rw-r--r-- | net/irda/ircomm/ircomm_core.c | 4 | ||||
-rw-r--r-- | net/irda/ircomm/ircomm_param.c | 46 | ||||
-rw-r--r-- | net/irda/ircomm/ircomm_tty.c | 10 | ||||
-rw-r--r-- | net/irda/ircomm/ircomm_tty_attach.c | 27 |
4 files changed, 62 insertions, 25 deletions
diff --git a/net/irda/ircomm/ircomm_core.c b/net/irda/ircomm/ircomm_core.c index a1fd0223a..e7c1f5064 100644 --- a/net/irda/ircomm/ircomm_core.c +++ b/net/irda/ircomm/ircomm_core.c @@ -6,7 +6,7 @@ * Status: Experimental. * Author: Dag Brattli <dagb@cs.uit.no> * Created at: Sun Jun 6 20:37:34 1999 - * Modified at: Tue Aug 17 11:05:41 1999 + * Modified at: Tue Oct 5 11:37:11 1999 * Modified by: Dag Brattli <dagb@cs.uit.no> * * Copyright (c) 1999 Dag Brattli, All Rights Reserved. @@ -128,7 +128,7 @@ struct ircomm_cb *ircomm_open(notify_t *notify, __u8 service_type, int line) self->service_type = service_type; self->line = line; - hashbin_insert(ircomm, (QUEUE *) self, line, NULL); + hashbin_insert(ircomm, (queue_t *) self, line, NULL); ircomm_next_state(self, IRCOMM_IDLE); diff --git a/net/irda/ircomm/ircomm_param.c b/net/irda/ircomm/ircomm_param.c index 4294dbdb2..b6012d511 100644 --- a/net/irda/ircomm/ircomm_param.c +++ b/net/irda/ircomm/ircomm_param.c @@ -6,7 +6,7 @@ * Status: Experimental. * Author: Dag Brattli <dagb@cs.uit.no> * Created at: Mon Jun 7 10:25:11 1999 - * Modified at: Fri Sep 3 09:28:20 1999 + * Modified at: Mon Oct 4 09:36:53 1999 * Modified by: Dag Brattli <dagb@cs.uit.no> * * Copyright (c) 1999 Dag Brattli, All Rights Reserved. @@ -236,7 +236,7 @@ static int ircomm_param_port_type(void *instance, param_t *param, int get) /* * Function ircomm_param_port_name (self, param) * - * + * Exchange port name * */ static int ircomm_param_port_name(void *instance, param_t *param, int get) @@ -259,7 +259,7 @@ static int ircomm_param_port_name(void *instance, param_t *param, int get) /* * Function ircomm_param_data_rate (self, param) * - * + * Exchange data rate to be used in this session * */ static int ircomm_param_data_rate(void *instance, param_t *param, int get) @@ -282,7 +282,7 @@ static int ircomm_param_data_rate(void *instance, param_t *param, int get) /* * Function ircomm_param_data_format (self, param) * - * + * Exchange data format to be used in this session * */ static int ircomm_param_data_format(void *instance, param_t *param, int get) @@ -303,7 +303,7 @@ static int ircomm_param_data_format(void *instance, param_t *param, int get) /* * Function ircomm_param_flow_control (self, param) * - * + * Exchange flow control settings to be used in this session * */ static int ircomm_param_flow_control(void *instance, param_t *param, int get) @@ -326,12 +326,26 @@ static int ircomm_param_flow_control(void *instance, param_t *param, int get) /* * Function ircomm_param_xon_xoff (self, param) * - * + * Exchange XON/XOFF characters * */ static int ircomm_param_xon_xoff(void *instance, param_t *param, int get) { - DEBUG(2, __FUNCTION__ "(), not impl.\n"); + struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) instance; + + ASSERT(self != NULL, return -1;); + ASSERT(self->magic == IRCOMM_TTY_MAGIC, return -1;); + + if (get) { + param->pv.s = self->session.xonxoff[0]; + param->pv.s |= self->session.xonxoff[1] << 8; + } else { + self->session.xonxoff[0] = param->pv.s & 0xff; + self->session.xonxoff[1] = param->pv.s >> 8; + } + + DEBUG(0, __FUNCTION__ "(), XON/XOFF = 0x%02x\n,0x%02x", + param->pv.s & 0xff, param->pv.s >> 8); return 0; } @@ -339,12 +353,26 @@ static int ircomm_param_xon_xoff(void *instance, param_t *param, int get) /* * Function ircomm_param_enq_ack (self, param) * - * + * Exchange ENQ/ACK characters * */ static int ircomm_param_enq_ack(void *instance, param_t *param, int get) { - DEBUG(2, __FUNCTION__ "(), not impl.\n"); + struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) instance; + + ASSERT(self != NULL, return -1;); + ASSERT(self->magic == IRCOMM_TTY_MAGIC, return -1;); + + if (get) { + param->pv.s = self->session.enqack[0]; + param->pv.s |= self->session.enqack[1] << 8; + } else { + self->session.enqack[0] = param->pv.s & 0xff; + self->session.enqack[1] = param->pv.s >> 8; + } + + DEBUG(0, __FUNCTION__ "(), ENQ/ACK = 0x%02x,0x%02x\n", + param->pv.s & 0xff, param->pv.s >> 8); return 0; } diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c index 8df8d876e..14da65d89 100644 --- a/net/irda/ircomm/ircomm_tty.c +++ b/net/irda/ircomm/ircomm_tty.c @@ -6,7 +6,7 @@ * Status: Experimental. * Author: Dag Brattli <dagb@cs.uit.no> * Created at: Sun Jun 6 21:00:56 1999 - * Modified at: Tue Sep 21 11:46:59 1999 + * Modified at: Tue Oct 19 21:32:04 1999 * Modified by: Dag Brattli <dagb@cs.uit.no> * Sources: serial.c and previous IrCOMM work by Takahide Higuchi * @@ -408,7 +408,7 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp) tty->termios->c_oflag = 0; /* Insert into hash */ - hashbin_insert(ircomm_tty, (QUEUE *) self, line, NULL); + hashbin_insert(ircomm_tty, (queue_t *) self, line, NULL); } self->open_count++; @@ -796,7 +796,7 @@ static void ircomm_tty_wait_until_sent(struct tty_struct *tty, int timeout) orig_jiffies = jiffies; /* Set poll time to 200 ms */ - poll_time = MIN(timeout, MSECS_TO_JIFFIES(200)); + poll_time = IRDA_MIN(timeout, MSECS_TO_JIFFIES(200)); while (self->tx_skb && self->tx_skb->len) { current->state = TASK_INTERRUPTIBLE; @@ -939,8 +939,6 @@ static void ircomm_tty_hangup(struct tty_struct *tty) */ static void ircomm_tty_send_xchar(struct tty_struct *tty, char ch) { - struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) tty->driver_data; - DEBUG(0, __FUNCTION__"(), not impl\n"); } @@ -1082,7 +1080,7 @@ static int ircomm_tty_control_indication(void *instance, void *sap, clen = skb->data[0]; - irda_param_extract_all(self, skb->data+1, MIN(skb->len-1, clen), + irda_param_extract_all(self, skb->data+1, IRDA_MIN(skb->len-1, clen), &ircomm_param_info); dev_kfree_skb(skb); diff --git a/net/irda/ircomm/ircomm_tty_attach.c b/net/irda/ircomm/ircomm_tty_attach.c index f2466d68c..52a6ec5e9 100644 --- a/net/irda/ircomm/ircomm_tty_attach.c +++ b/net/irda/ircomm/ircomm_tty_attach.c @@ -6,7 +6,7 @@ * Status: Experimental. * Author: Dag Brattli <dagb@cs.uit.no> * Created at: Sat Jun 5 17:42:00 1999 - * Modified at: Wed Sep 8 11:54:27 1999 + * Modified at: Tue Oct 19 21:32:17 1999 * Modified by: Dag Brattli <dagb@cs.uit.no> * * Copyright (c) 1999 Dag Brattli, All Rights Reserved. @@ -208,7 +208,6 @@ static void ircomm_tty_ias_register(struct ircomm_tty_cb *self) irias_insert_object(self->obj); } else { hints = irlmp_service_to_hint(S_COMM); - hints |= irlmp_service_to_hint(S_TELEPHONY); /* Register IrCOMM with LM-IAS */ self->obj = irias_new_object("IrDA:IrCOMM", IAS_IRCOMM_ID); @@ -243,13 +242,24 @@ static int ircomm_tty_send_initial_parameters(struct ircomm_tty_cb *self) if (self->service_type & IRCOMM_3_WIRE_RAW) return 0; - /* Set default values */ - self->session.data_rate = 9600; - self->session.data_format = IRCOMM_WSIZE_8; /* 8N1 */ - self->session.flow_control = 0; /* None */ + /* + * Set default values, but only if the application for some reason + * haven't set them already + */ + DEBUG(2, __FUNCTION__ "(), data-rate = %d\n", self->session.data_rate); + if (!self->session.data_rate) + self->session.data_rate = 9600; + DEBUG(2, __FUNCTION__ "(), data-format = %d\n", + self->session.data_format); + if (!self->session.data_format) + self->session.data_format = IRCOMM_WSIZE_8; /* 8N1 */ + + DEBUG(2, __FUNCTION__ "(), flow-control = %d\n", + self->session.flow_control); + /*self->session.flow_control = IRCOMM_RTS_CTS_IN|IRCOMM_RTS_CTS_OUT;*/ /* Do not set delta values for the initial parameters */ - self->session.dte = (IRCOMM_DTR| IRCOMM_RTS); + self->session.dte = IRCOMM_DTR | IRCOMM_RTS; ircomm_param_request(self, IRCOMM_SERVICE_TYPE, FALSE); ircomm_param_request(self, IRCOMM_DATA_RATE, FALSE); @@ -430,7 +440,8 @@ void ircomm_tty_connect_indication(void *instance, void *sap, clen = skb->data[0]; if (clen) - irda_param_extract_all(self, skb->data+1, MIN(skb->len, clen), + irda_param_extract_all(self, skb->data+1, + IRDA_MIN(skb->len, clen), &ircomm_param_info); ircomm_tty_do_event(self, IRCOMM_TTY_CONNECT_INDICATION, NULL, NULL); |