Loosen up the range test in ndis_register_ioport(). Allow drivers to

map ranges that are smaller than what our resource manager code knows
is available, rather than requiring that they match exactly. This
fixes a problem with the Intel PRO/1000 gigE driver: it wants to map
a range of 32 I/O ports, even though some chips appear set up to
decode a range of 64. With this fix, it loads and runs correctly.
This commit is contained in:
Bill Paul 2004-01-13 01:12:28 +00:00
parent b0d8e5b388
commit 2333afc31e

View File

@ -1069,7 +1069,8 @@ ndis_register_ioport(offset, adapter, port, numports)
if (sc->ndis_res_io == NULL)
return(NDIS_STATUS_FAILURE);
if (rman_get_size(sc->ndis_res_io) != numports)
/* Don't let the device map more ports than we have. */
if (rman_get_size(sc->ndis_res_io) < numports)
return(NDIS_STATUS_INVALID_LENGTH);
*offset = (void *)rman_get_start(sc->ndis_res_io);