resp_code = (pp->spp.spp_flags & FC_SPP_RESP_MASK);
                FC_RPORT_DBG(rdata, "PRLI spp_flags = 0x%x spp_type 0x%x\n",
                             pp->spp.spp_flags, pp->spp.spp_type);
+
                rdata->spp_type = pp->spp.spp_type;
                if (resp_code != FC_SPP_RESP_ACK) {
                        if (resp_code == FC_SPP_RESP_CONF)
                /*
                 * Call prli provider if we should act as a target
                 */
-               prov = fc_passive_prov[rdata->spp_type];
-               if (prov) {
-                       memset(&temp_spp, 0, sizeof(temp_spp));
-                       prov->prli(rdata, pp->prli.prli_spp_len,
-                                  &pp->spp, &temp_spp);
+               if (rdata->spp_type < FC_FC4_PROV_SIZE) {
+                       prov = fc_passive_prov[rdata->spp_type];
+                       if (prov) {
+                               memset(&temp_spp, 0, sizeof(temp_spp));
+                               prov->prli(rdata, pp->prli.prli_spp_len,
+                                          &pp->spp, &temp_spp);
+                       }
                }
                /*
                 * Check if the image pair could be established