Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mpr/mpr_mapping.c
Show First 20 Lines • Show All 2,561 Lines • ▼ Show 20 Lines | mpr_mapping_initialize(struct mpr_softc *sc) | ||||
*/ | */ | ||||
sc->max_enclosures = sc->facts->MaxEnclosures + 1; | sc->max_enclosures = sc->facts->MaxEnclosures + 1; | ||||
sc->max_expanders = sc->facts->MaxSasExpanders; | sc->max_expanders = sc->facts->MaxSasExpanders; | ||||
sc->max_volumes = sc->facts->MaxVolumes; | sc->max_volumes = sc->facts->MaxVolumes; | ||||
sc->max_devices = sc->facts->MaxTargets + sc->max_volumes; | sc->max_devices = sc->facts->MaxTargets + sc->max_volumes; | ||||
sc->pending_map_events = 0; | sc->pending_map_events = 0; | ||||
sc->num_enc_table_entries = 0; | sc->num_enc_table_entries = 0; | ||||
sc->num_rsvd_entries = 0; | sc->num_rsvd_entries = 0; | ||||
sc->max_dpm_entries = sc->ioc_pg8.MaxPersistentEntries; | sc->max_dpm_entries = le16toh(sc->ioc_pg8.MaxPersistentEntries); | ||||
sc->is_dpm_enable = (sc->max_dpm_entries) ? 1 : 0; | sc->is_dpm_enable = (sc->max_dpm_entries) ? 1 : 0; | ||||
sc->track_mapping_events = 0; | sc->track_mapping_events = 0; | ||||
mpr_dprint(sc, MPR_MAPPING, "%s: Mapping table has a max of %d entries " | mpr_dprint(sc, MPR_MAPPING, "%s: Mapping table has a max of %d entries " | ||||
"and DPM has a max of %d entries.\n", __func__, sc->max_devices, | "and DPM has a max of %d entries.\n", __func__, sc->max_devices, | ||||
sc->max_dpm_entries); | sc->max_dpm_entries); | ||||
if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_DISABLE_PERSISTENT_MAPPING) | if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_DISABLE_PERSISTENT_MAPPING) | ||||
sc->is_dpm_enable = 0; | sc->is_dpm_enable = 0; | ||||
if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0) | if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0) | ||||
sc->num_rsvd_entries = 1; | sc->num_rsvd_entries = 1; | ||||
volume_mapping_flags = sc->ioc_pg8.IRVolumeMappingFlags & | volume_mapping_flags = le16toh(sc->ioc_pg8.IRVolumeMappingFlags) & | ||||
MPI2_IOCPAGE8_IRFLAGS_MASK_VOLUME_MAPPING_MODE; | MPI2_IOCPAGE8_IRFLAGS_MASK_VOLUME_MAPPING_MODE; | ||||
if (sc->ir_firmware && (volume_mapping_flags == | if (sc->ir_firmware && (volume_mapping_flags == | ||||
MPI2_IOCPAGE8_IRFLAGS_LOW_VOLUME_MAPPING)) | MPI2_IOCPAGE8_IRFLAGS_LOW_VOLUME_MAPPING)) | ||||
sc->num_rsvd_entries += sc->max_volumes; | sc->num_rsvd_entries += sc->max_volumes; | ||||
error = mpr_mapping_allocate_memory(sc); | error = mpr_mapping_allocate_memory(sc); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
▲ Show 20 Lines • Show All 537 Lines • Show Last 20 Lines |