Fix station address detection in smc
Megahertz EM1144 PCMCIA ethernet adapter needs special handling because it has two VERS_1 tuples and the station address is in the second one. Conversion to generic handling of these fields broke it. Reverting that fixes the device. https://bugzilla.redhat.com/show_bug.cgi?id=233255 Thanks go to Jon Stanley for not giving up on this one until the problem was found. Signed-off-by: Chuck Ebbert <cebbert@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
committed by
Jeff Garzik
parent
4a75834644
commit
a1a98b72db
@@ -559,8 +559,16 @@ static int mhz_setup(struct pcmcia_device *link)
|
|||||||
|
|
||||||
/* Read the station address from the CIS. It is stored as the last
|
/* Read the station address from the CIS. It is stored as the last
|
||||||
(fourth) string in the Version 1 Version/ID tuple. */
|
(fourth) string in the Version 1 Version/ID tuple. */
|
||||||
if (link->prod_id[3]) {
|
tuple->DesiredTuple = CISTPL_VERS_1;
|
||||||
station_addr = link->prod_id[3];
|
if (first_tuple(link, tuple, parse) != CS_SUCCESS) {
|
||||||
|
rc = -1;
|
||||||
|
goto free_cfg_mem;
|
||||||
|
}
|
||||||
|
/* Ugh -- the EM1144 card has two VERS_1 tuples!?! */
|
||||||
|
if (next_tuple(link, tuple, parse) != CS_SUCCESS)
|
||||||
|
first_tuple(link, tuple, parse);
|
||||||
|
if (parse->version_1.ns > 3) {
|
||||||
|
station_addr = parse->version_1.str + parse->version_1.ofs[3];
|
||||||
if (cvt_ascii_address(dev, station_addr) == 0) {
|
if (cvt_ascii_address(dev, station_addr) == 0) {
|
||||||
rc = 0;
|
rc = 0;
|
||||||
goto free_cfg_mem;
|
goto free_cfg_mem;
|
||||||
|
Reference in New Issue
Block a user