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>