Matt Jacob [Fri, 2 Jul 1999 23:18:03 +0000 (23:18 +0000)]
Remove pre-CAM code. Add in getenv_int calls for variables isp_mem_map,
isp_io_map, isp_no_fwload, isp_fwload, isp_no_nvram, isp_fcduplex
which are all bitmaps of isp instances that should or shouldn't
map memory space, I/O space, not load f/w, load f/w, ignore nvram,
not ignore nvarm, set full duplex mode. Also have an isp_seed value
that we can use to generate a pseudo seed for a synthetic WWN.
Other minor cosmetic cleanup. Add in support for the Qlogic ISP
2200. Very important change where we actually check now to see
whether we were successful in mapping request and response queues
(and fibre channel scratch space).
Matt Jacob [Fri, 2 Jul 1999 23:12:58 +0000 (23:12 +0000)]
Remove all pre-CAM code. Fix breakage for SCCLUN when it is in fact
ISP2100_SCCLUN. Make changes for how ISPASYNC_PDB_CHANGE_COMPLETE
is now ISPASYNC_PDB_CHANGED. Add in ISPASYNC_FABRIC_DEV case.
Matt Jacob [Fri, 2 Jul 1999 23:10:34 +0000 (23:10 +0000)]
Merge defunct isp_freebsd_cam.h into this file. Do some appropriate
changes like rolling minor revision levels and defines where we now
do default WWN seeding in the platform files.
Matt Jacob [Fri, 2 Jul 1999 23:06:38 +0000 (23:06 +0000)]
Roll revision levels. Add support for the Qlogic 2200 (warn about
not having SCSI_ISP_SCCLUN config defined if we don't have f/w for
the 2200- it's resident firmware uses SCCLUN (65535 luns)). Change
the way the default LoopID is gathered (it's now a platform specific
define so that some attempt at a synthetic WWN can be made in case
NVRAM isn't readable).
Change initialization of options a bit- don't use ADISC. Set
FullDuplex mode if config options tells us to do so. Do not use
FULL_LOGIN after LIP- it's the right thing to do but it causes too
much loop disruption (Loop Resets). Sanity check some default
values. Redo construction of port and node WWNs based upon what we
have- if we have 2 in the top nibble, we can have distinct port
and node WWNs. Clean up some SCCLUN related code that we obviously
had never compiled (:-(). Audit commands coming int ispscsicmd and
don't throw commands at Fibre devices that do not have Class 3
service parameters TARGET ROLE defined.
Clean up f/w initialization a bit. Add Fabric support (or at least
the first blush of it). Whew - way too much to describe here.
Basically, after a LIP, hang out until we see a Loop Up or a Port
DataBase Change async event, then see if we're on a Fabric
(GET_PORT_NAME of FL_PORT_ID). If we are, try and scan the fabric
controller for fabric devices using the GetAllNext SNS subcommand.
As we find devices, announce them to the outer layer. Try and do
some guard code for broken (Brocade) SNS servers (that get stuck
in loops- gotta maybe do this a different way using the GP_ID3 cmd
instead). Then do a scan of the lower (local loop) ids using a
GET_PORT_NAME to see if the f/w has logged into anything at that
loop id. If so, then do a GET_PORT_DATABASE command. Do this scan
into a local database. At this point we can say the loop is 'Ready'.
After this, we merge our local loop port database with our stored
port database- in a as yet to be really fully exercised fashion we
try and follow the logic of something having moved around. The
first time we see something at a Loop ID, we fix it, for the purpose
of this system instance, at that Loop ID. If things shift around
so it ends up somewhere else, we still keep it at this Loop ID (our
'Target') but use the new (moved) Loop ID when we actually throw
commands at it. Check for insane cases of different Loop IDs both
claiming to have the same WWN- if that happens, invalidate both.
Notify the outer layer of devices that have arrived and devices
that have gone away. *Finally*, when this is done, search the
softc's database of Fabric devices and perform logout/login actions.
The Qlogic f/w maintains logout/login for all local loop devices.
We have to maintain logout/login for fabric devices- total PITA.
Expect to see this area undergo more change over time.
Matt Jacob [Fri, 2 Jul 1999 22:46:31 +0000 (22:46 +0000)]
Roll revision levels. Move DEFAULT_LOOPID definition to platform files.
Change some fcp parameter structures such that we can get the portid
(24 bit value), get both node and port WWN, know whether we're on a fabric
or not, note whether we've ever seen the loop up, and note the current
state of the loop.
Replace the isp_pdb_t structure in fcparams with a reduced cost structure
that maintains a static relationship to 'Target', but can have the actual
loop ID used change (in case, post LIP, we discover things have moved
around). This also retains portid and node/port WWNs. This array gets
larger if we have fabric support compiled in.
Note special loop IDs that are invariate for this device- FL_PORT_ID
(0x7e) which tells us if there's a fabric controller present, FC_PORT_ID
and FC_SNS_ID (fabric controller port and fabric SNS server port). We don't
use the latter two for anything. IDs above FC_SNS_ID up through 255 are
available for mapping fabric devices to 'target' ids.
Add in a config define to set FC full duplex mode. Add in a define to
recognize the Qlogic 2200 boards. Add comments about ISPCTL commands.
Add and change some ISPASYNC enumes.
Matt Jacob [Fri, 2 Jul 1999 22:31:11 +0000 (22:31 +0000)]
Add in SNS and Fabric login/logout commands. Clean up ICBOPT defines.
Remove INVALID_PDB_OPTIONS defines. Define generic SNS request and
response structures and the bare minimum GAN and GP3 subcommands.
Mike Smith [Fri, 2 Jul 1999 20:33:32 +0000 (20:33 +0000)]
Lightly overhaul the memory sizing code again.
- The kernel environment variable 'hw.physmem' can be used to set the
amount of physical memory space, based at 0, that FreeBSD will use.
Any memory detected over this limit is ignored. Documentation for
this is available under 'help set tunables' in the loader.
- In the case where system memory size can't be accurately determined,
hw.physmem is used as a best-guess memory size, but speculative
probing will be used to determine actual memory size if any of the
guesses or hints are 16M or more.
- If RB_VERBOSE, we list the memory regions as we test them.
- The compile-time option MAXMEM supplies a default value for
'hw.physmem'.
Allow service alias names from /etc/services to be used when specifying
internal services in inetd.conf .
The inetd(8) manpage used to say that the official name of a service
_must_ be used, yet inetd itself was hardcoded to used a service alias for
the auth service, namely ident!
Rather than change inetd.conf and break existing configurations on next
upgrade, we now allow service aliases as well as official names. This
allows the software to work as expected and still support existing
configurations.
This should not breaking existing wrapped configurations either and the
inetd(8) manpage already states that it is the service name specified in
inetd.conf that is used for calls to hosts_access(3).
PR: 11796
Reported by: Alex Charalabidis <alex@wnm.net>
Approved by: des
Clarify that the services name, as specified in inetd.conf, for an
internal service should be used as the daemon name when constructing
hosts_access(5) rules.
Ruslan Ermilov [Fri, 2 Jul 1999 13:25:49 +0000 (13:25 +0000)]
o use getprotobynumber(3) instead of hardcoded protocol names.
Divert(4) sockets will now appear as "internet raw divert"
instead of "internet raw 254".
Remove the volume, plex, sd and drive commands which allowed the user
to bypass the create command.
vinum_stop:
Allow -f option.
Add commands for simplified configuration:
concat - create a volume with one concatenated plex
stripe - create a volume with one striped plex
mirror - create a volume with two concatenated or striped plexes
Matt Jacob [Fri, 2 Jul 1999 05:12:11 +0000 (05:12 +0000)]
Correct some ugly formatting. Remember to initialize the alignment tag.
Honor and pass a callers request to contigalloc if they had a non-zero
alignment constraint.
Matt Jacob [Fri, 2 Jul 1999 05:05:51 +0000 (05:05 +0000)]
Fix last delta which reinitialized nextpaddr to zero each time through the
loop it was supposed to be in. Correct some ugly formatting. Remember to
initialize the alignment tag. Honor and pass a callers request to contigalloc
if they had a non-zero alignment constraint.
Peter Wemm [Fri, 2 Jul 1999 04:33:05 +0000 (04:33 +0000)]
Zap totally the npx0 memory size override. It only worked if statically
specified in the kernel config file - but setting options MAXMEM works
exactly the same. Userconfig overrides of this have not worked for
ages.
Also, change the getenv for the loader override to hw.physmem based on a
prior suggestion from Mike Smith. I think he still wants to change this
some, but this shouldn't get in his way. This is a forced setting of
the memory size, not a "cap". We probably should have a plain 'maxmem'
variable as well which does do a cap, without loosing the bios memory
configuration data.
Peter Wemm [Fri, 2 Jul 1999 04:17:16 +0000 (04:17 +0000)]
Change the cast in pci_map_port() from u_short * to pci_port_t * so it
compiles cleanly on the Alpha. (On the alpha, the port type is an int,
not a short).
Cast a couple of pointers to ints via 'uintptr_t' rather than 'unsigned
int' since uintptr_t is long (64 bit) on Alpha, as are pointers.
Peter Wemm [Thu, 1 Jul 1999 18:33:22 +0000 (18:33 +0000)]
Look up the kernel environment for MAXMEM as a final override for the
memory size. If somebody wants to change the name, fine - I used this
since it's consistant with the config variable it replaces.
This is intended to replace the npx0 msize hack (which no longer works).
Peter Wemm [Thu, 1 Jul 1999 18:27:15 +0000 (18:27 +0000)]
Move kern_envp and preload initialization a little earlier so that we
can do a getenv_int() inside the memory sizing routines to override the
memory limit.
Peter Wemm [Thu, 1 Jul 1999 16:20:16 +0000 (16:20 +0000)]
Don't include trailing whitespace in ID tokens before comments. ie:
options FOO=10 # comment
would give FOO the value of "10 " and that caused unwanted
touches on the opt_*.h files.
Ruslan Ermilov [Thu, 1 Jul 1999 14:32:07 +0000 (14:32 +0000)]
Document that FTP_PASSIVE_MODE should be explicitly
set to `YES' for passive mode to be used by default.
Just setting FTP_PASSIVE_MODE is not sufficient, as
it was before.
Peter Wemm [Thu, 1 Jul 1999 13:21:46 +0000 (13:21 +0000)]
Slight reorganization of kernel thread/process creation. Instead of using
SYSINIT_KT() etc (which is a static, compile-time procedure), use a
NetBSD-style kthread_create() interface. kproc_start is still available
as a SYSINIT() hook. This allowed simplification of chunks of the
sysinit code in the process. This kthread_create() is our old kproc_start
internals, with the SYSINIT_KT fork hooks grafted in and tweaked to work
the same as the NetBSD one.
One thing I'd like to do shortly is get rid of nfsiod as a user initiated
process. It makes sense for the nfs client code to create them on the
fly as needed up to a user settable limit. This means that nfsiod
doesn't need to be in /sbin and is always "available". This is a fair bit
easier to do outside of the SYSINIT_KT() framework.
Sigh. It's always the smallest changes that generate the largest public
commentary. :) 3rd and final frob of this. Leave enough comments
behind that anyone running into trouble at least has some cited clues
on dealing with it and jump into the brave new world with uncommented
IANA port assignments.
Bill Fumerola [Thu, 1 Jul 1999 01:07:30 +0000 (01:07 +0000)]
(1) Don't perror() when at.deny doesn't exist, that's an accepted behavior.
(2) Die when there is a problem opening at.allow other then it not existing.
An error other then it not existing might be a trick to somehow
circumvent system security.
Compromise proposal: Comment out both old and new radius ports, explain
the differences in the comments, let the USER select which assignment to
use now.
Mike Smith [Wed, 30 Jun 1999 23:11:15 +0000 (23:11 +0000)]
Increase the size of the route reference count from 15 bits to 31 bits.
This doesn't change the size or alignment of the structure on either i386
or Alpha, and thus should be binary-compatible (modulo problems with old
applications and routes with more than 2^15 references).
Peter Wemm [Wed, 30 Jun 1999 15:33:41 +0000 (15:33 +0000)]
Slight tweak to fork1() calling conventions. Add a third argument so
the caller can easily find the child proc struct. fork(), rfork() etc
syscalls set p->p_retval[] themselves. Simplify the SYSINIT_KT() code
and other kernel thread creators to not need to use pfind() to find the
child based on the pid. While here, partly tidy up some of the fork1()
code for RF_SIGSHARE etc.