Lines Matching refs:fcf
358 if (phba->fcf.fcf_flag & FCF_DISCOVERY) {
368 if (phba->fcf.fcf_flag & FCF_REDISC_PROG) {
668 if (phba->fcf.fcf_flag & FCF_REDISC_EVT)
923 phba->fcf.fcf_flag &= ~(FCF_AVAILABLE | FCF_SCAN_DONE);
1251 * fcf priority list. The list deletions are done while holding the
1260 memset(phba->fcf.fcf_rr_bmask, 0, sizeof(*phba->fcf.fcf_rr_bmask));
1263 &phba->fcf.fcf_pri_list, list) {
1283 phba->fcf.fcfi = bf_get(lpfc_reg_fcfi_fcfi, &mboxq->u.mqe.un.reg_fcfi);
1286 phba->fcf.fcf_flag |= FCF_REGISTERED;
1296 phba->fcf.fcf_flag |= (FCF_SCAN_DONE | FCF_IN_USE);
1316 * lpfc_fab_name_match - Check if the fcf fabric name match.
1318 * @new_fcf_record: pointer to fcf record.
1320 * This routine compare the fcf record's fabric name with provided
1347 * lpfc_sw_name_match - Check if the fcf switch name match.
1349 * @new_fcf_record: pointer to fcf record.
1351 * This routine compare the fcf record's switch name with provided
1378 * lpfc_mac_addr_match - Check if the fcf mac address match.
1380 * @new_fcf_record: pointer to fcf record.
1382 * This routine compare the fcf record's mac address with HBA's
1414 * @new_fcf_record: pointer to hba fcf record.
1427 fcf_pri = &phba->fcf.fcf_pri[fcf_index];
1435 * lpfc_copy_fcf_record - Copy fcf information to lpfc_hba.
1436 * @fcf_rec: pointer to driver fcf record.
1437 * @new_fcf_record: pointer to fcf record.
1494 * lpfc_update_fcf_record - Update driver fcf record
1496 * @fcf_rec: pointer to driver fcf record.
1497 * @new_fcf_record: pointer to hba fcf record.
1498 * @addr_mode: address mode to be set to the driver fcf record.
1499 * @vlan_id: vlan tag to be set to the driver fcf record.
1500 * @flag: flag bits to be set to the driver fcf record.
1529 * the fcf with HBA.
1539 if (!(phba->fcf.fcf_flag & FCF_AVAILABLE)) {
1546 if (phba->fcf.fcf_flag & FCF_REGISTERED) {
1547 phba->fcf.fcf_flag |= (FCF_SCAN_DONE | FCF_IN_USE);
1586 * @new_fcf_record: pointer to fcf record.
1591 * This routine compare the fcf record with connect list obtained from the
1721 * This fcf record matches filtering criteria.
1805 phba->fcf.fcf_flag &= ~FCF_AVAILABLE;
1826 phba->fcf.fcf_flag &= ~(FCF_REDISC_FOV | FCF_DISCOVERY);
1833 phba->fcf.fcf_flag &= ~FCF_REGISTERED;
1841 * lpfc_sli4_new_fcf_random_select - Randomly select an eligible new fcf record
1843 * @fcf_cnt: number of eligible fcf record seen so far.
1874 * @next_fcf_index: pointer to holder of next fcf index.
1876 * This routine parses the non-embedded fcf mailbox command by performing the
1943 * lpfc_sli4_log_fcf_record_info - Log the information of a fcf record
1945 * @fcf_record: pointer to the fcf record.
1946 * @vlan_id: the lowest vlan identifier associated to this fcf record.
1947 * @next_fcf_index: the index to the next fcf record in hba's fcf table.
2037 * lpfc_sli4_fcf_rr_next_proc - processing next roundrobin fcf
2039 * @fcf_index: index to next fcf.
2041 * This function processing the roundrobin fcf failover to next fcf index.
2042 * When this function is invoked, there will be a current fcf registered
2044 * Return: 0 for continue retrying flogi on currently registered fcf;
2045 * 1 for stop flogi on currently registered fcf;
2060 phba->fcf.current_rec.fcf_indx);
2066 /* Allow action to new fcf asynchronous event */
2067 phba->fcf.fcf_flag &= ~(FCF_AVAILABLE | FCF_SCAN_DONE);
2075 if (!phba->fcf.fcf_redisc_attempted) {
2082 phba->fcf.fcf_redisc_attempted = 1;
2104 rc, phba->fcf.current_rec.fcf_indx);
2118 * @fcf_index: the index of the fcf record to delete
2121 * is cleared. This routine grab the hbalock before removing the fcf
2129 new_fcf_pri = &phba->fcf.fcf_pri[fcf_index];
2136 if (phba->fcf.current_rec.priority ==
2138 phba->fcf.eligible_fcf_cnt--;
2148 * @fcf_index: the index of the fcf record to update
2151 * will try a different fcf record that does not have this bit set.
2152 * If the fcf record is re-read for any reason this flag is cleared brfore
2159 new_fcf_pri = &phba->fcf.fcf_pri[fcf_index];
2168 * @fcf_index: the index of the fcf record to add
2192 new_fcf_pri = &phba->fcf.fcf_pri[fcf_index];
2202 if (list_empty(&phba->fcf.fcf_pri_list)) {
2203 list_add(&new_fcf_pri->list, &phba->fcf.fcf_pri_list);
2209 last_index = find_first_bit(phba->fcf.fcf_rr_bmask,
2215 current_fcf_pri = phba->fcf.fcf_pri[last_index].fcf_rec.priority;
2217 list_add(&new_fcf_pri->list, &phba->fcf.fcf_pri_list);
2219 memset(phba->fcf.fcf_rr_bmask, 0,
2220 sizeof(*phba->fcf.fcf_rr_bmask));
2222 phba->fcf.eligible_fcf_cnt = 1;
2225 phba->fcf.eligible_fcf_cnt++;
2232 &phba->fcf.fcf_pri_list, list) {
2235 if (fcf_pri->list.prev == &phba->fcf.fcf_pri_list)
2237 &phba->fcf.fcf_pri_list);
2244 } else if (fcf_pri->list.next == &phba->fcf.fcf_pri_list
2264 * lpfc_mbx_cmpl_fcf_scan_read_fcf_rec - fcf scan read_fcf mbox cmpl handler.
2268 * This function iterates through all the fcf records available in
2319 * If the fcf record does not match with connect list entries
2338 if ((phba->fcf.fcf_flag & FCF_IN_USE) &&
2339 lpfc_sli4_fcf_record_match(phba, &phba->fcf.current_rec,
2342 phba->fcf.current_rec.fcf_indx) {
2349 phba->fcf.current_rec.fcf_indx);
2358 if (!(phba->fcf.fcf_flag & FCF_REDISC_PEND) &&
2359 !(phba->fcf.fcf_flag & FCF_REDISC_FOV)) {
2364 phba->fcf.current_rec.fcf_indx);
2366 phba->fcf.fcf_flag |= FCF_REDISC_FOV;
2390 if (phba->fcf.fcf_flag & FCF_IN_USE) {
2392 lpfc_sli4_fcf_record_match(phba, &phba->fcf.current_rec,
2395 phba->fcf.current_rec.fcf_indx) {
2396 phba->fcf.fcf_flag |= FCF_AVAILABLE;
2397 if (phba->fcf.fcf_flag & FCF_REDISC_PEND)
2401 else if (phba->fcf.fcf_flag & FCF_REDISC_FOV)
2403 phba->fcf.fcf_flag &= ~FCF_REDISC_FOV;
2409 phba->fcf.current_rec.fcf_indx,
2419 phba->fcf.current_rec.fcf_indx);
2428 if (!(phba->fcf.fcf_flag & FCF_REDISC_FOV)) {
2437 if (phba->fcf.fcf_flag & FCF_REDISC_FOV)
2438 fcf_rec = &phba->fcf.failover_rec;
2440 fcf_rec = &phba->fcf.current_rec;
2442 if (phba->fcf.fcf_flag & FCF_AVAILABLE) {
2445 * set and new hba fcf record has boot flag set, use
2446 * the new hba fcf record.
2485 phba->fcf.eligible_fcf_cnt = 1;
2488 phba->fcf.eligible_fcf_cnt++;
2490 phba->fcf.eligible_fcf_cnt);
2520 phba->fcf.fcf_flag |= FCF_AVAILABLE;
2522 phba->fcf.eligible_fcf_cnt = 1;
2530 if (phba->fcf.fcf_flag & FCF_REDISC_FOV) {
2539 if (!(phba->fcf.failover_rec.flag & RECORD_VALID)) {
2582 phba->fcf.current_rec.fcf_indx,
2583 phba->fcf.failover_rec.fcf_indx);
2584 memcpy(&phba->fcf.current_rec,
2585 &phba->fcf.failover_rec,
2593 phba->fcf.fcf_flag &= ~FCF_REDISC_FOV;
2602 if ((phba->fcf.fcf_flag & FCF_REDISC_EVT) ||
2603 (phba->fcf.fcf_flag & FCF_REDISC_PEND))
2607 phba->fcf.fcf_flag & FCF_IN_USE) {
2618 phba->fcf.current_rec.fcf_indx);
2620 phba->fcf.fcf_flag |= FCF_REDISC_FOV;
2641 * lpfc_mbx_cmpl_fcf_rr_read_fcf_rec - fcf roundrobin read_fcf mbox cmpl hdler
2668 phba->fcf.fcf_flag &= ~FCF_DISCOVERY;
2682 phba->fcf.fcf_flag);
2710 if (fcf_index == phba->fcf.current_rec.fcf_indx) {
2714 phba->fcf.current_rec.fcf_indx, fcf_index);
2724 phba->fcf.failover_rec.fcf_indx, fcf_index);
2726 __lpfc_update_fcf_record(phba, &phba->fcf.failover_rec,
2731 current_fcf_index = phba->fcf.current_rec.fcf_indx;
2737 memcpy(&phba->fcf.current_rec, &phba->fcf.failover_rec,
2751 * lpfc_mbx_cmpl_read_fcf_rec - read fcf completion handler.
2775 if (!(phba->fcf.fcf_flag & FCF_DISCOVERY))
3337 "fcf record\n");
3366 phba->fcf.fcf_flag |= FCF_INIT_DISC;
3374 phba->fcf.fcf_flag &= ~FCF_INIT_DISC;
6575 /* If driver cannot allocate memory, indicate fcf is in use */
6586 * unreg the fcf.
6665 * lpfc_unregister_fcf_prep - Unregister fcf record preparation
6752 lpfc_unreg_fcfi(mbox, phba->fcf.fcfi);
6768 * lpfc_unregister_fcf_rescan - Unregister currently registered fcf and rescan
6779 /* Preparation for unregistering fcf */
6793 phba->fcf.fcf_flag = 0;
6794 phba->fcf.current_rec.flag = 0;
6806 phba->fcf.fcf_flag |= FCF_INIT_DISC;
6816 phba->fcf.fcf_flag &= ~FCF_INIT_DISC;
6826 * lpfc_unregister_fcf - Unregister the currently registered fcf record
6837 /* Preparation for unregistering fcf */
6852 phba->fcf.fcf_flag &= ~FCF_REGISTERED;
6874 !(phba->fcf.fcf_flag & FCF_REGISTERED) ||
6876 (phba->fcf.fcf_flag & FCF_DISCOVERY) ||