Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Feb 1998 10:35:14 -0800 (PST)
From:      steveg@comtrol.com
To:        freebsd-gnats-submit@FreeBSD.ORG
Subject:   i386/5765: Our RocketPort port only suports 32 ports on FreeBSD 3.0 current
Message-ID:  <199802161835.KAA13528@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         5765
>Category:       i386
>Synopsis:       Our RocketPort port only suports 32 ports on FreeBSD 3.0 current
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Feb 16 10:40:04 PST 1998
>Last-Modified:
>Originator:     Steve Gericke
>Organization:
Comtrol
>Release:        3,0 current
>Environment:
FreeBSD steveg1.comtrol.com 3.0-971006-SNAP .....

>Description:
Our RocketPort driver currently supports only 32 ports.

>How-To-Repeat:
Try to use more than 32 ports
>Fix:
Change MAKEDEV to use higher minor numbers.
changed rp.c to use the new minor numbers.

Difference of rp.c from 3.0 current dated 2/19/98 (55391 bytes)
1110,1112c1110
< 	count = 0;
< 	for(i=0;i<unit;i++)
< 		count += rp_num_ports[i];
---
> 	count = unit * 32;      /* board times max ports per card SG */
1226,1228c1224
< 	count = 0;
< 	for(i=0;i<unit;i++)
< 		count += rp_num_ports[i];
---
> 	count = unit * 32;    /* board # times max ports per card  SG */
1309c1305
< 	int	unit, i, port, mynor, flags;
---
> 	int	unit, i, port, mynor, umynor, flags;  /* SG */
1314c1310,1313
< 	mynor = MINOR_MAGIC(dev);
---
> 
>    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                    /* SG */
1318,1320d1316
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
1458c1454
< 	int	oldspl, unit, mynor, port, status, i;
---
> 	int	oldspl, unit, mynor, umynor, port, status, i; /* SG */
1463,1466c1459,1463
< 	mynor = MINOR_MAGIC(dev);
< 	unit = 0;
< 	unit = minor_to_unit[mynor];
< 	port = mynor;
---
>    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                    /* SG */
>    unit = minor_to_unit[mynor];                /* SG */
> 
1469,1470d1465
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
1534c1529,1534
< 	int	unit, i, mynor, port, error = 0;
---
> 	int	unit, i, mynor, umynor, port, error = 0; /* SG */
> 
>    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                    /* SG */
>    unit = minor_to_unit[mynor];                /* SG */
1536d1535
< 	mynor = MINOR_MAGIC(dev);
1539,1543d1537
< 	unit = 0;
< 	unit = minor_to_unit[mynor];
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
1559c1553,1558
< 	int	unit, i, mynor, port, error = 0;
---
> 	int	unit, i, mynor, port, umynor, error = 0; /* SG */
> 
>    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                    /* SG */
>    unit = minor_to_unit[mynor];                /* SG */
1561d1559
< 	mynor = MINOR_MAGIC(dev);
1564,1568d1561
< 	unit = 0;
< 	unit = minor_to_unit[mynor];
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
1604c1597
< 	int	unit, mynor, port;
---
> 	int	unit, mynor, port, umynor;            /* SG */
1612c1605,1607
< 	mynor = MINOR_MAGIC(dev);
---
>    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                    /* SG */
1614,1616d1608
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
1816c1808
< 	int	unit, i, mynor, port;
---
> 	int	unit, i, mynor, port, umynor;               /* SG */
1820c1812,1816
< 	mynor = MINOR_MAGIC(tp->t_dev);
---
> 
>    umynor = (((minor(tp->t_dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(tp->t_dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                          /* SG */
> 
1822,1824d1817
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
1953c1946
< 	int	unit, i, mynor, port;
---
> 	int	unit, i, mynor, port, umynor;               /* SG */
1958c1951,1954
< 	mynor = MINOR_MAGIC(tp->t_dev);
---
> 
>    umynor = (((minor(tp->t_dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(tp->t_dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                          /* SG */
1960,1962d1955
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
2014c2007
< 	int	unit, mynor, port;
---
> 	int	unit, mynor, port, umynor;                  /* SG */
2019c2012,2014
< 	mynor = MINOR_MAGIC(tp->t_dev);
---
>    umynor = (((minor(tp->t_dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(tp->t_dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                          /* SG */
2021,2023d2015
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];
2056c2048,2053
< 	int	unit, i, port, mynor;
---
> 	int	unit, i, port, mynor, umynor;         /* SG */
> 
>    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
> 	port  = (minor(dev) & 0x1f);                /* SG */
> 	mynor = (port + umynor);                    /* SG */
>    unit = minor_to_unit[mynor];                /* SG */
2058d2054
< 	mynor = MINOR_MAGIC(dev);
2061,2064d2056
< 	unit = minor_to_unit[mynor];
< 	port = mynor;
< 	for(i=0;i<unit;i++)
< 		port -= rp_num_ports[i];

MAKEDEV changes for ttyR? and cauR?  -- replacement ---
#
# Rocketport multiport serial card.
# Creates devices for all cards at one time.
#
ttyR?)
	major=81
	BOARD=1; MINOR=65536; Rnum=0
	MINOR=`expr $BOARD \* 65536`
	dmesg | grep ^RocketPort[0-4] > /tmp/rp_list
	controllers=`awk '{print $1}' < /tmp/rp_list`
	rm -f /dev/ttyR*; rm -f /dev/ttyiR*; rm -f /dev/ttylR*
	for i in $controllers;do
 	   ndevices=`grep ^$i /tmp/rp_list | sed -e 's/.* \([0-9]*\) ports/\1/'`
	   echo -n "Creating $ndevices devices for $i: "
	   for dev in `jot $ndevices 0`;do
		   mknod /dev/ttyR$Rnum c $major $MINOR 
		   mknod /dev/ttylR$Rnum c $major `expr $MINOR + 32`
		   mknod /dev/ttyiR$Rnum c $major `expr $MINOR + 64` 
		   Rnum=`expr $Rnum + 1`
		   MINOR=`expr $MINOR + 1`
	   done
		BOARD=`expr $BOARD + 1`
		MINOR=`expr $BOARD \* 65536`
	   echo " "
	done
	chown root.wheel /dev/ttyR*
   ls /dev/ttyR*
	;;

cuaR?)
	major=81
	BOARD=1; MINOR=65536; Rnum=0
	MINOR=`expr $BOARD \* 65536`
	dmesg | grep ^RocketPort[0-4] > /tmp/rp_list
	controllers=`awk '{print $1}' < /tmp/rp_list`
	rm -f /dev/cuaR*; rm -f /dev/cuaiR*; rm -f /dev/cualR*
	for i in $controllers;do
 	   ndevices=`grep ^$i /tmp/rp_list | sed -e 's/.* \([0-9]*\) ports/\1/'`
	   echo -n "Creating $ndevices devices for $i: "
	   for dev in `jot $ndevices 0`;do
		   mknod /dev/cuaR$Rnum c  $major `expr $MINOR + 128`
		   mknod /dev/cualR$Rnum c $major `expr $MINOR + 128 + 32`
		   mknod /dev/cuaiR$Rnum c $major `expr $MINOR + 128 + 64` 
		   Rnum=`expr $Rnum + 1`
		   MINOR=`expr $MINOR + 1`
	   done
		BOARD=`expr $BOARD + 1`
		MINOR=`expr $BOARD \* 65536`
	   echo " "
	done
	chown uucp.dialer /dev/cuaR*
   ls /dev/cuaR*
	umask 77
	;;
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802161835.KAA13528>