summaryrefslogtreecommitdiffstats
path: root/net/irda/ircomm
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-01-27 23:45:22 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-01-27 23:45:22 +0000
commit5b35aa5cd29bb111d847b2a2ed18110acbfb1f44 (patch)
treec7bbaa1137528330d3c74d14056ef7016a52be72 /net/irda/ircomm
parent511bcd7c5924ce9e98ad1cb851988f7448dfef0f (diff)
Merge with Linux 2.3.24.
Diffstat (limited to 'net/irda/ircomm')
-rw-r--r--net/irda/ircomm/ircomm_core.c4
-rw-r--r--net/irda/ircomm/ircomm_param.c46
-rw-r--r--net/irda/ircomm/ircomm_tty.c10
-rw-r--r--net/irda/ircomm/ircomm_tty_attach.c27
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);