Hi,
This is the patch to add IrLAP hardware name (to identify your
LAP instances) for 2.4.2. This patch should apply directly to kernel
2.4.2 (without the need of other patches). The two additional patches
are for the USB and ALI driver (if you install them).
Changes :
o Allow larger names
o Better names in irport, nsc and toshoboe
o name in w83977af_ir
Jean
diff -u -p linux/include/net/irda/irlap.d7.h linux/include/net/irda/irlap.h
--- linux/include/net/irda/irlap.d7.h Fri Feb 23 14:48:45 2001
+++ linux/include/net/irda/irlap.h Fri Feb 23 14:57:37 2001
@@ -93,7 +93,9 @@ 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 */
@@ -195,7 +197,8 @@ extern hashbin_t *irlap;
int irlap_init(void);
void irlap_cleanup(void);
-struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos);
+struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos,
+ char * hw_name);
void irlap_close(struct irlap_cb *self);
void irlap_connect_request(struct irlap_cb *self, __u32 daddr,
diff -u -p linux/net/irda/irlap.d7.c linux/net/irda/irlap.c
--- linux/net/irda/irlap.d7.c Fri Feb 23 14:49:30 2001
+++ linux/net/irda/irlap.c Fri Feb 23 14:58:11 2001
@@ -107,7 +107,8 @@ void irlap_cleanup(void)
* Initialize IrLAP layer
*
*/
-struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos)
+struct irlap_cb *irlap_open(struct net_device *dev, struct qos_info *qos,
+ char * hw_name)
{
struct irlap_cb *self;
@@ -124,6 +125,13 @@ struct irlap_cb *irlap_open(struct net_d
/* Make a binding between the layers */
self->netdev = dev;
self->qos_dev = qos;
+ /* Copy hardware name */
+ if(hw_name != NULL) {
+ strncpy(self->hw_name, hw_name, 2*IFNAMSIZ);
+ self->hw_name[2*IFNAMSIZ] = '\0';
+ } else {
+ self->hw_name[0] = '\0';
+ }
/* FIXME: should we get our own field? */
dev->atalk_ptr = self;
@@ -1183,6 +1191,10 @@ int irlap_proc_read(char *buf, char **st
len += sprintf(buf+len, "state: %s\n",
irlap_state[self->state]);
+ len += sprintf(buf+len, " device name: %s, ",
+ (self->netdev) ? self->netdev->name : "bug");
+ len += sprintf(buf+len, "hardware name: %s\n", self->hw_name);
+
len += sprintf(buf+len, " caddr: %#02x, ", self->caddr);
len += sprintf(buf+len, "saddr: %#08x, ", self->saddr);
len += sprintf(buf+len, "daddr: %#08x\n", self->daddr);
diff -u -p linux/drivers/net/irda/irtty.d7.c linux/drivers/net/irda/irtty.c
--- linux/drivers/net/irda/irtty.d7.c Fri Feb 23 14:50:14 2001
+++ linux/drivers/net/irda/irtty.c Fri Feb 23 15:01:28 2001
@@ -895,6 +895,8 @@ static int irtty_net_init(struct net_dev
static int irtty_net_open(struct net_device *dev)
{
struct irtty_cb *self = (struct irtty_cb *) dev->priv;
+ struct tty_struct *tty = self->tty;
+ char hwname[16];
ASSERT(self != NULL, return -1;);
ASSERT(self->magic == IRTTY_MAGIC, return -1;);
@@ -907,11 +909,16 @@ static int irtty_net_open(struct net_dev
/* Make sure we can receive more data */
irtty_stop_receiver(self, FALSE);
+ /* Give self a hardware name */
+ sprintf(hwname, "%s%d", tty->driver.name,
+ MINOR(tty->device) - tty->driver.minor_start +
+ tty->driver.name_base);
+
/*
* Open new IrLAP layer instance, now that everything should be
* initialized properly
*/
- self->irlap = irlap_open(dev, &self->qos);
+ self->irlap = irlap_open(dev, &self->qos, hwname);
MOD_INC_USE_COUNT;
diff -u -p linux/drivers/net/irda/irport.d7.c linux/drivers/net/irda/irport.c
--- linux/drivers/net/irda/irport.d7.c Fri Feb 23 14:50:43 2001
+++ linux/drivers/net/irda/irport.c Fri Feb 23 15:01:10 2001
@@ -772,6 +772,7 @@ int irport_net_open(struct net_device *d
{
struct irport_cb *self;
int iobase;
+ char hwname[16];
ASSERT(dev != NULL, return -1;);
self = (struct irport_cb *) dev->priv;
@@ -785,11 +786,14 @@ int irport_net_open(struct net_device *d
irport_start(self);
+ /* Give self a hardware name */
+ sprintf(hwname, "SIR @ 0x%03x", self->io.sir_base);
+
/*
* Open new IrLAP layer instance, now that everything should be
* initialized properly
*/
- self->irlap = irlap_open(dev, &self->qos);
+ self->irlap = irlap_open(dev, &self->qos, hwname);
/* FIXME: change speed of dongle */
/* Ready to play! */
diff -u -p linux/drivers/net/irda/nsc-ircc.d7.c linux/drivers/net/irda/nsc-ircc.c
--- linux/drivers/net/irda/nsc-ircc.d7.c Fri Feb 23 14:50:53 2001
+++ linux/drivers/net/irda/nsc-ircc.c Fri Feb 23 15:11:20 2001
@@ -1835,6 +1835,7 @@ static int nsc_ircc_net_open(struct net_
{
struct nsc_ircc_cb *self;
int iobase;
+ char hwname[32];
__u8 bank;
IRDA_DEBUG(4, __FUNCTION__ "()\n");
@@ -1873,14 +1874,16 @@ static int nsc_ircc_net_open(struct net_
outb(bank, iobase+BSR);
/* Ready to play! */
-
netif_start_queue(dev);
+ /* Give self a hardware name */
+ sprintf(hwname, "NSC-FIR @ 0x%03x", self->io.fir_base);
+
/*
* Open new IrLAP layer instance, now that everything should be
* initialized properly
*/
- self->irlap = irlap_open(dev, &self->qos);
+ self->irlap = irlap_open(dev, &self->qos, hwname);
MOD_INC_USE_COUNT;
diff -u -p linux/drivers/net/irda/toshoboe.d7.c linux/drivers/net/irda/toshoboe.c
--- linux/drivers/net/irda/toshoboe.d7.c Fri Feb 23 14:51:09 2001
+++ linux/drivers/net/irda/toshoboe.c Fri Feb 23 15:10:52 2001
@@ -508,6 +508,7 @@ static int
toshoboe_net_open (struct net_device *dev)
{
struct toshoboe_cb *self;
+ char hwname[32];
IRDA_DEBUG (4, __FUNCTION__ "()\n");
@@ -535,11 +536,13 @@ toshoboe_net_open (struct net_device *de
/* Ready to play! */
netif_start_queue(dev);
+ /* Give self a hardware name */
+ sprintf(hwname, "Toshiba-FIR @ 0x%03x", self->base);
/*
* Open new IrLAP layer instance, now that everything should be
* initialized properly
*/
- self->irlap = irlap_open(dev, &self->qos);
+ self->irlap = irlap_open(dev, &self->qos, hwname);
self->open = 1;
diff -u -p linux/drivers/net/irda/w83977af_ir.d7.c linux/drivers/net/irda/w83977af_ir.c
--- linux/drivers/net/irda/w83977af_ir.d7.c Fri Feb 23 14:51:28 2001
+++ linux/drivers/net/irda/w83977af_ir.c Fri Feb 23 15:13:19 2001
@@ -1210,6 +1210,7 @@ static int w83977af_net_open(struct net_
{
struct w83977af_ir *self;
int iobase;
+ char hwname[32];
__u8 set;
IRDA_DEBUG(0, __FUNCTION__ "()\n");
@@ -1251,11 +1252,14 @@ static int w83977af_net_open(struct net_
/* Ready to play! */
netif_start_queue(dev);
+ /* Give self a hardware name */
+ sprintf(hwname, "w83977af @ 0x%03x", self->io.fir_base);
+
/*
* Open new IrLAP layer instance, now that everything should be
* initialized properly
*/
- self->irlap = irlap_open(dev, &self->qos);
+ self->irlap = irlap_open(dev, &self->qos, hwname);
MOD_INC_USE_COUNT;
diff -u -p linux/drivers/net/irda/irda-usb.d7.c linux/drivers/net/irda/irda-usb.c
--- linux/drivers/net/irda/irda-usb.d7.c Fri Feb 23 14:47:55 2001
+++ linux/drivers/net/irda/irda-usb.c Fri Feb 23 15:02:04 2001
@@ -958,6 +958,7 @@ static int irda_usb_net_init(struct net_
static int irda_usb_net_open(struct net_device *netdev)
{
struct irda_usb_cb *self;
+ char hwname[16];
int i;
IRDA_DEBUG(0, __FUNCTION__ "()\n");
@@ -988,7 +989,8 @@ static int irda_usb_net_open(struct net_
* Open new IrLAP layer instance to take care of us...
* Note : will send immediately a speed change...
*/
- self->irlap = irlap_open(netdev, &self->qos);
+ sprintf(hwname, "usb#%d", self->usbdev->devnum);
+ self->irlap = irlap_open(netdev, &self->qos, hwname);
ASSERT(self->irlap != NULL, return -1;);
/* Allow IrLAP to send data to us */
diff -u -p linux/drivers/net/irda/ali-ircc.d7.c linux/drivers/net/irda/ali-ircc.c
--- linux/drivers/net/irda/ali-ircc.d7.c Fri Feb 23 15:42:47 2001
+++ linux/drivers/net/irda/ali-ircc.c Fri Feb 23 15:44:48 2001
@@ -1344,6 +1344,7 @@ static int ali_ircc_net_open(struct net_
{
struct ali_ircc_cb *self;
int iobase;
+ char hwname[32];
IRDA_DEBUG(2, __FUNCTION__ "(), ---------------- Start ----------------\n");
@@ -1380,11 +1381,14 @@ static int ali_ircc_net_open(struct net_
/* Ready to play! */
netif_start_queue(dev); //benjamin by irport
+ /* Give self a hardware name */
+ sprintf(hwname, "ALI-FIR @ 0x%03x", self->io.fir_base);
+
/*
* Open new IrLAP layer instance, now that everything should be
* initialized properly
*/
- self->irlap = irlap_open(dev, &self->qos);
+ self->irlap = irlap_open(dev, &self->qos, hwname);
MOD_INC_USE_COUNT;