log insert/remove events using the logstr, if specified for that card,
or the manufacturer + version strings from the cis if not. This
eliminates the need to have logger in the pccard.conf file which makes
it easier to move pcardd to /sbin later if we need to. This also
reduces the pccard.conf file size from 53k to 28k, which will help the
install disk a little.
Also, minor cleanup of free usage (if (x != NULL) free(x); is
identical to free(x); for all versions of C that we care about).
Reviewed by: iwasaki (who proposed the logstr keyword).
Documentation and fixes to pccard.conf to follow.
- This feature will be enabled only if the string is
enclosed by '/' something like;
card "SunDisk" "/.*/"
- Also added matching additional information strings
followed by version string. This is for the card which is
difficult to idendentify by only the manufacturer and
card version strings matching.
card "MACNICA" "MIRACLE SCSI" "mPS100" "D.0"
Reviewed by: imp
Obtained from: PAO
This should solve tentatively the pccardd core dump problem when
there's no CIS (likely CardBus cards).
Later, this function will have regex CIS string comparison capability
too.
Obtained from: PAO
- Fixed bogus CIS tuple dumping (Network node ID, IRQ modes and etc.)
- Include telling drivers ethernet address if Network node ID
tuple is available. This is usefull for some bogus ehter cards which
can't get correct ethernet address from CIS tupple.
Obtained from: PAO3
member variable to find the configuration on new driver allocation.
Correct condition is that card_config and driver are not in use. Both
of them are cleared in card_removed() (conf->driver->card never be
cleared).
This fix problems `No free configuration for card' on insertion, and
pccardd core dump on removal in condition of the same driver but
different card.
Also this might be emergency measures, complete solution would be made
after Hosokawa-san come back.
Consulted with: imp
Waiting for: hosokawa
For example, when /etc/pccard.conf had ed0 in config line, but kernel
refused this name and said
devclass_alloc_unit: ed0 already exists, using next availale unit
number
Kernel used ed1 as device name and it did not match with config and
insert/remove lines. Fortunately, dhclient was called without args,
and it works, but if we wanted to use static IP address for PC-card,
it did not work.
This modification makes pccardd to execute insert/remove lines with
the true device name that returns from kernel. (Last change to
etc/pccard.conf.sample eliminated all hardwired device name from
insert/remove lines in /etc/pccard.conf)
is a race here that the old code didn't deal with, and I'm not
completely sure this is the right way to solve it, but it works here.
Should get rid of the dreaded "No free configuration for card" message.
o Document debug level keyword
o Implement debug level:
o For most of the diagnostic messages, change them from #ifdef DEBUG
to if (debuglevel > 0).
o Add a couple more diagnostic messages that weren't present before
o Fix a couple of excessively long lines.
Reviewed by: hosokawa-san
o Start to implement the stopgap kludge for -current's pccard code by passing
the length of the i/o range. If DEV_DESC_HAS_SIZE is defined, we'll set
the size. This is done as an ifdef so that I can generate patches
against the kernel more easily.
o Add preliminary support for tweaking sleep times, but leave it
disabled until a good range of values can be established.
Didn't fix: logmsg problem noted by Nate.
Allocate free I/O window with given size to card.
(example)
# IBM PCMCIA Ethernet I/II
card "IBM Corp." "Ethernet"
config 0x1 "ed0" ?
iosize 32
ether 0xff0
(it's currently only useful for externalizing hacks for broken CIS cards,
but it will play an important role with "function" directive I'm planninng
to merge)
Reviewed by: freebsd-mobile list
Obtained from: PAO3's "cardio" directive
change it w/out informing the program. Instead, use the (now available)
previous state returned by the kernel to make intelligent card
removal/insertion decisions.
pccard claims that the driver is already allocated.
It works around a race when pccardd gets woken up too late after a resume.
This is a 2.2.6 candidate.
Reviewed by: nate@freebsd.org
since we only store CIS_MAXSTR data, and the users may stick the
'entire' CIS string returned from the card in /etc/pccard.conf and
cause the comparison to (bogusly) fail.
Submitted by: Brad Karp <karp@eecs.harvard.edu>
instead Do The Right Thing when the kernel states a card was
inserted/removed. This isn't a complete fix, but better than nothing.
Reviewed by: Guido van Rooij <guido@gvr.org>
removed. Add a new state 'suspend' so we 'fake' insertion events at
resume time for the cards that have been suspended.
[
The code still works if you remove the card during suspend, switch the
card during suspend, or combinations of both.
]
Reviewed by: frf@xocolatl.com
follow.
* Rename/reorder all of the pccard structures, change many of the member
names to be descriptive, and follow more closely other 'bus' drivers
naming schemes.
* Rename a bunch of parameter and local variable names to be more
consistant in the code.
* Renamed the PCCARD 'crd' device to be the 'card' device
* KNF and make the code consistant where it was obvious.
* ifdef'd out some unused code
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.
- Try to have all output go through the routines in util.c [logerr(),
log_1s(), die()]
- Add *some* code in util.c to allow pccardd to run out of sysinstall.
Submitted by: Mostly me, but some by Tatsumi Hosokawa <hosokawa@jp.FreeBSD.org>