24 #include <linux/slab.h>
25 #include <linux/pci.h>
29 #include <scsi/scsi.h>
48 static uint8_t lpfcAlpaArray[] = {
49 0xEF, 0xE8, 0xE4, 0xE2, 0xE1, 0xE0, 0xDC, 0xDA, 0xD9, 0xD6,
50 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xCE, 0xCD, 0xCC, 0xCB, 0xCA,
51 0xC9, 0xC7, 0xC6, 0xC5, 0xC3, 0xBC, 0xBA, 0xB9, 0xB6, 0xB5,
52 0xB4, 0xB3, 0xB2, 0xB1, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9,
53 0xA7, 0xA6, 0xA5, 0xA3, 0x9F, 0x9E, 0x9D, 0x9B, 0x98, 0x97,
54 0x90, 0x8F, 0x88, 0x84, 0x82, 0x81, 0x80, 0x7C, 0x7A, 0x79,
55 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0x6E, 0x6D, 0x6C, 0x6B,
56 0x6A, 0x69, 0x67, 0x66, 0x65, 0x63, 0x5C, 0x5A, 0x59, 0x56,
57 0x55, 0x54, 0x53, 0x52, 0x51, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A,
58 0x49, 0x47, 0x46, 0x45, 0x43, 0x3C, 0x3A, 0x39, 0x36, 0x35,
59 0x34, 0x33, 0x32, 0x31, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
60 0x27, 0x26, 0x25, 0x23, 0x1F, 0x1E, 0x1D, 0x1B, 0x18, 0x17,
61 0x10, 0x0F, 0x08, 0x04, 0x02, 0x01
64 static void lpfc_disc_timeout_handler(
struct lpfc_vport *);
67 static int lpfc_fcf_inuse(
struct lpfc_hba *);
82 " to terminate I/O Data x%x\n",
90 "rport terminate: sid:x%x did:x%x flg:x%x",
95 &phba->
sli.ring[phba->
sli.fcp_ring],
123 "rport devlosscb: sid:x%x did:x%x flg:x%x",
127 "3181 dev_loss_callbk x%06x, rport %p flg x%x\n",
173 spin_unlock_irq(&phba->
hbalock);
212 fcf_inuse = lpfc_fcf_inuse(phba);
215 "rport devlosstmo:did:x%x type:x%x id:x%x",
219 "3182 dev_loss_tmo_handler x%06x, rport %p flg x%x\n",
230 &phba->
sli.ring[phba->
sli.fcp_ring],
246 "0284 Devloss timeout Ignored on "
247 "WWPN %x:%x:%x:%x:%x:%x:%x:%x "
249 *name, *(name+1), *(name+2), *(name+3),
250 *(name+4), *(name+5), *(name+6), *(name+7),
277 "0203 Devloss timeout on "
278 "WWPN %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x "
279 "NPort x%06x Data: x%x x%x x%x\n",
280 *name, *(name+1), *(name+2), *(name+3),
281 *(name+4), *(name+5), *(name+6), *(name+7),
286 "0204 Devloss timeout on "
287 "WWPN %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x "
288 "NPort x%06x Data: x%x x%x x%x\n",
289 *name, *(name+1), *(name+2), *(name+3),
290 *(name+4), *(name+5), *(name+6), *(name+7),
334 lpfc_sli4_post_dev_loss_tmo_handler(
struct lpfc_hba *phba,
int fcf_inuse,
347 spin_unlock_irq(&phba->
hbalock);
352 "2847 Last remote node (x%x) using "
353 "FCF devloss tmo\n", nlp_did);
356 spin_unlock_irq(&phba->
hbalock);
358 "2868 Devloss tmo to FCF rediscovery "
363 spin_unlock_irq(&phba->
hbalock);
365 "2869 Devloss tmo to idle FIP engine, "
366 "unreg in-use FCF and rescan.\n");
371 spin_unlock_irq(&phba->
hbalock);
374 "2870 FCF table scan in progress\n");
377 "2871 FLOGI roundrobin FCF failover "
405 INIT_LIST_HEAD(&ret->
work_evt.evt_listp);
437 lpfc_send_fastpath_evt(
struct lpfc_hba *phba,
440 unsigned long evt_category, evt_sub_category;
450 evt_sub_category = (
unsigned long) fast_evt_data->
un.
451 fabric_evt.subcategory;
452 shost = lpfc_shost_from_vport(fast_evt_data->
vport);
456 evt_data_size =
sizeof(fast_evt_data->
un.
467 switch (evt_sub_category) {
470 evt_data = (
char *) &fast_evt_data->
un.
scsi_evt;
471 evt_data_size =
sizeof(fast_evt_data->
un.
scsi_evt);
475 evt_data_size =
sizeof(fast_evt_data->
un.
480 evt_data_size =
sizeof(fast_evt_data->
un.
503 lpfc_work_list_done(
struct lpfc_hba *phba)
515 spin_unlock_irq(&phba->
hbalock);
529 fcf_inuse = lpfc_dev_loss_tmo_handler(ndlp);
537 lpfc_sli4_post_dev_loss_tmo_handler(phba,
575 = (phba->
pport->stopped)
581 lpfc_send_fastpath_evt(phba, evtp);
593 spin_unlock_irq(&phba->
hbalock);
598 lpfc_work_done(
struct lpfc_hba *phba)
609 spin_unlock_irq(&phba->
hbalock);
638 spin_unlock_irq(&phba->
hbalock);
652 if (vports[i] ==
NULL && i == 0)
663 lpfc_disc_timeout_handler(vport);
709 "WRK Enable ring: cntl:x%x hacopy:x%x",
710 control, ha_copy, 0);
717 "WRK Ring ok: cntl:x%x hacopy:x%x",
718 control, ha_copy, 0);
720 spin_unlock_irq(&phba->
hbalock);
723 lpfc_work_list_done(phba);
745 "0433 Wakeup on signal: rc=x%x\n", rc);
750 lpfc_work_done(phba);
754 "0432 Worker thread stopped.\n");
784 spin_unlock_irqrestore(&phba->
hbalock, flags);
794 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
851 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
856 "Link Down: state:x%x rtry:x%x flg:x%x",
872 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
885 spin_unlock_irq(&phba->
hbalock);
913 phba->
pport->fc_myDID = 0;
933 lpfc_linkup_cleanup_nodes(
struct lpfc_vport *vport)
961 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
968 "Link Up: top:x%x speed:x%x flg:x%x",
973 (vport != phba->
pport))
986 lpfc_linkup_cleanup_nodes(vport);
1006 lpfc_linkup_port(vports[i]);
1025 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
1039 "0320 CLEAR_LA mbxStatus error x%x hba "
1049 spin_lock_irq(&phba->
hbalock);
1055 spin_unlock_irq(&phba->
hbalock);
1062 "0225 Device Discovery completes\n");
1073 spin_lock_irq(&phba->
hbalock);
1079 spin_unlock_irq(&phba->
hbalock);
1121 "0306 CONFIG_LINK mbxStatus error x%x "
1129 "0200 CONFIG_LINK bad hba state x%x\n",
1149 memset(phba->
fcf.fcf_rr_bmask, 0,
sizeof(*phba->
fcf.fcf_rr_bmask));
1150 spin_lock_irq(&phba->
hbalock);
1152 &phba->
fcf.fcf_pri_list,
list) {
1153 list_del_init(&fcf_pri->
list);
1156 spin_unlock_irq(&phba->
hbalock);
1165 "2017 REG_FCFI mbxStatus error x%x "
1172 phba->
fcf.fcfi =
bf_get(lpfc_reg_fcfi_fcfi, &mboxq->
u.
mqe.un.reg_fcfi);
1174 spin_lock_irq(&phba->
hbalock);
1176 spin_unlock_irq(&phba->
hbalock);
1184 spin_lock_irq(&phba->
hbalock);
1189 spin_unlock_irq(&phba->
hbalock);
1193 spin_unlock_irq(&phba->
hbalock);
1197 spin_lock_irq(&phba->
hbalock);
1199 spin_unlock_irq(&phba->
hbalock);
1216 if (fab_name[0] !=
bf_get(lpfc_fcf_record_fab_name_0, new_fcf_record))
1218 if (fab_name[1] !=
bf_get(lpfc_fcf_record_fab_name_1, new_fcf_record))
1220 if (fab_name[2] !=
bf_get(lpfc_fcf_record_fab_name_2, new_fcf_record))
1222 if (fab_name[3] !=
bf_get(lpfc_fcf_record_fab_name_3, new_fcf_record))
1224 if (fab_name[4] !=
bf_get(lpfc_fcf_record_fab_name_4, new_fcf_record))
1226 if (fab_name[5] !=
bf_get(lpfc_fcf_record_fab_name_5, new_fcf_record))
1228 if (fab_name[6] !=
bf_get(lpfc_fcf_record_fab_name_6, new_fcf_record))
1230 if (fab_name[7] !=
bf_get(lpfc_fcf_record_fab_name_7, new_fcf_record))
1247 if (sw_name[0] !=
bf_get(lpfc_fcf_record_switch_name_0, new_fcf_record))
1249 if (sw_name[1] !=
bf_get(lpfc_fcf_record_switch_name_1, new_fcf_record))
1251 if (sw_name[2] !=
bf_get(lpfc_fcf_record_switch_name_2, new_fcf_record))
1253 if (sw_name[3] !=
bf_get(lpfc_fcf_record_switch_name_3, new_fcf_record))
1255 if (sw_name[4] !=
bf_get(lpfc_fcf_record_switch_name_4, new_fcf_record))
1257 if (sw_name[5] !=
bf_get(lpfc_fcf_record_switch_name_5, new_fcf_record))
1259 if (sw_name[6] !=
bf_get(lpfc_fcf_record_switch_name_6, new_fcf_record))
1261 if (sw_name[7] !=
bf_get(lpfc_fcf_record_switch_name_7, new_fcf_record))
1278 if (mac_addr[0] !=
bf_get(lpfc_fcf_record_mac_0, new_fcf_record))
1280 if (mac_addr[1] !=
bf_get(lpfc_fcf_record_mac_1, new_fcf_record))
1282 if (mac_addr[2] !=
bf_get(lpfc_fcf_record_mac_2, new_fcf_record))
1284 if (mac_addr[3] !=
bf_get(lpfc_fcf_record_mac_3, new_fcf_record))
1286 if (mac_addr[4] !=
bf_get(lpfc_fcf_record_mac_4, new_fcf_record))
1288 if (mac_addr[5] !=
bf_get(lpfc_fcf_record_mac_5, new_fcf_record))
1296 return (curr_vlan_id == new_vlan_id);
1316 fcf_pri = &phba->
fcf.fcf_pri[fcf_index];
1317 fcf_pri->
fcf_rec.fcf_index = fcf_index;
1337 bf_get(lpfc_fcf_record_fab_name_0, new_fcf_record);
1339 bf_get(lpfc_fcf_record_fab_name_1, new_fcf_record);
1341 bf_get(lpfc_fcf_record_fab_name_2, new_fcf_record);
1343 bf_get(lpfc_fcf_record_fab_name_3, new_fcf_record);
1345 bf_get(lpfc_fcf_record_fab_name_4, new_fcf_record);
1347 bf_get(lpfc_fcf_record_fab_name_5, new_fcf_record);
1349 bf_get(lpfc_fcf_record_fab_name_6, new_fcf_record);
1351 bf_get(lpfc_fcf_record_fab_name_7, new_fcf_record);
1353 fcf_rec->
mac_addr[0] =
bf_get(lpfc_fcf_record_mac_0, new_fcf_record);
1354 fcf_rec->
mac_addr[1] =
bf_get(lpfc_fcf_record_mac_1, new_fcf_record);
1355 fcf_rec->
mac_addr[2] =
bf_get(lpfc_fcf_record_mac_2, new_fcf_record);
1356 fcf_rec->
mac_addr[3] =
bf_get(lpfc_fcf_record_mac_3, new_fcf_record);
1357 fcf_rec->
mac_addr[4] =
bf_get(lpfc_fcf_record_mac_4, new_fcf_record);
1358 fcf_rec->
mac_addr[5] =
bf_get(lpfc_fcf_record_mac_5, new_fcf_record);
1360 fcf_rec->
fcf_indx =
bf_get(lpfc_fcf_record_fcf_index, new_fcf_record);
1365 bf_get(lpfc_fcf_record_switch_name_0, new_fcf_record);
1367 bf_get(lpfc_fcf_record_switch_name_1, new_fcf_record);
1369 bf_get(lpfc_fcf_record_switch_name_2, new_fcf_record);
1371 bf_get(lpfc_fcf_record_switch_name_3, new_fcf_record);
1373 bf_get(lpfc_fcf_record_switch_name_4, new_fcf_record);
1375 bf_get(lpfc_fcf_record_switch_name_5, new_fcf_record);
1377 bf_get(lpfc_fcf_record_switch_name_6, new_fcf_record);
1379 bf_get(lpfc_fcf_record_switch_name_7, new_fcf_record);
1401 lpfc_copy_fcf_record(fcf_rec, new_fcf_record);
1406 __lpfc_update_fcf_record_pri(phba,
1407 bf_get(lpfc_fcf_record_fcf_index, new_fcf_record),
1419 lpfc_register_fcf(
struct lpfc_hba *phba)
1424 spin_lock_irq(&phba->
hbalock);
1428 spin_unlock_irq(&phba->
hbalock);
1438 spin_unlock_irq(&phba->
hbalock);
1442 spin_unlock_irq(&phba->
hbalock);
1445 spin_unlock_irq(&phba->
hbalock);
1449 spin_lock_irq(&phba->
hbalock);
1451 spin_unlock_irq(&phba->
hbalock);
1457 fcf_mbxq->
mbox_cmpl = lpfc_mbx_cmpl_reg_fcfi;
1460 spin_lock_irq(&phba->
hbalock);
1462 spin_unlock_irq(&phba->
hbalock);
1488 lpfc_match_fcf_conn_list(
struct lpfc_hba *phba,
1494 int i,
j, fcf_vlan_id = 0;
1497 for (i = 0; i < 512; i++) {
1499 fcf_vlan_id = i * 8;
1501 while (!((new_fcf_record->
vlan_bitmap[i] >> j) & 1)) {
1510 if (!
bf_get(lpfc_fcf_record_fcf_avail, new_fcf_record) ||
1511 !
bf_get(lpfc_fcf_record_fcf_valid, new_fcf_record) ||
1512 bf_get(lpfc_fcf_record_fcf_sol, new_fcf_record))
1517 *addr_mode =
bf_get(lpfc_fcf_record_mac_addr_prov,
1532 *addr_mode =
bf_get(lpfc_fcf_record_mac_addr_prov,
1544 *vlan_id = fcf_vlan_id;
1556 !lpfc_fab_name_match(conn_entry->
conn_rec.fabric_name,
1560 !lpfc_sw_name_match(conn_entry->
conn_rec.switch_name,
1569 [conn_entry->
conn_rec.vlan_tag / 8] &
1570 (1 << (conn_entry->
conn_rec.vlan_tag % 8))))
1578 if (!(
bf_get(lpfc_fcf_record_mac_addr_prov, new_fcf_record)
1593 !(
bf_get(lpfc_fcf_record_mac_addr_prov,
1601 !(
bf_get(lpfc_fcf_record_mac_addr_prov,
1602 new_fcf_record) & LPFC_FCF_FPMA))
1619 *addr_mode =
bf_get(lpfc_fcf_record_mac_addr_prov,
1627 *addr_mode = (conn_entry->
conn_rec.flags &
1629 LPFC_FCF_SPMA : LPFC_FCF_FPMA;
1647 *vlan_id = conn_entry->
conn_rec.vlan_tag;
1652 else if (fcf_vlan_id)
1653 *vlan_id = fcf_vlan_id;
1684 "2768 Pending link or FCF event during current "
1685 "handling of the previous event: link_state:x%x, "
1686 "evt_tag_at_scan:x%x, evt_tag_current:x%x\n",
1690 spin_lock_irq(&phba->
hbalock);
1692 spin_unlock_irq(&phba->
hbalock);
1696 "2780 Restart FCF table scan due to "
1697 "pending FCF event:evt_tag_at_scan:x%x, "
1698 "evt_tag_current:x%x\n",
1708 "2833 Stop FCF discovery process due to link "
1710 spin_lock_irq(&phba->
hbalock);
1713 spin_unlock_irq(&phba->
hbalock);
1718 spin_lock_irq(&phba->
hbalock);
1720 spin_unlock_irq(&phba->
hbalock);
1750 if ((fcf_cnt * rand_num) < 0xFFFF)
1777 uint32_t shdr_status, shdr_add_status;
1788 "2524 Failed to get the non-embedded SGE "
1789 "virtual address\n");
1796 shdr_add_status =
bf_get(lpfc_mbox_hdr_add_status, &shdr->
response);
1797 if (shdr_status || shdr_add_status) {
1800 "2726 READ_FCF_RECORD Indicates empty "
1804 "2521 READ_FCF_RECORD mailbox failed "
1805 "with status x%x add_status x%x, "
1806 "mbx\n", shdr_status, shdr_add_status);
1814 *next_fcf_index =
bf_get(lpfc_mbx_read_fcf_tbl_nxt_vindx, read_fcf);
1815 new_fcf_record = (
struct fcf_record *)(virt_addr +
1822 return new_fcf_record;
1836 lpfc_sli4_log_fcf_record_info(
struct lpfc_hba *phba,
1842 "2764 READ_FCF_RECORD:\n"
1843 "\tFCF_Index : x%x\n"
1844 "\tFCF_Avail : x%x\n"
1845 "\tFCF_Valid : x%x\n"
1847 "\tFIP_Priority : x%x\n"
1848 "\tMAC_Provider : x%x\n"
1849 "\tLowest VLANID : x%x\n"
1850 "\tFCF_MAC Addr : x%x:%x:%x:%x:%x:%x\n"
1851 "\tFabric_Name : x%x:%x:%x:%x:%x:%x:%x:%x\n"
1852 "\tSwitch_Name : x%x:%x:%x:%x:%x:%x:%x:%x\n"
1853 "\tNext_FCF_Index: x%x\n",
1854 bf_get(lpfc_fcf_record_fcf_index, fcf_record),
1855 bf_get(lpfc_fcf_record_fcf_avail, fcf_record),
1856 bf_get(lpfc_fcf_record_fcf_valid, fcf_record),
1857 bf_get(lpfc_fcf_record_fcf_sol, fcf_record),
1859 bf_get(lpfc_fcf_record_mac_addr_prov, fcf_record),
1861 bf_get(lpfc_fcf_record_mac_0, fcf_record),
1862 bf_get(lpfc_fcf_record_mac_1, fcf_record),
1863 bf_get(lpfc_fcf_record_mac_2, fcf_record),
1864 bf_get(lpfc_fcf_record_mac_3, fcf_record),
1865 bf_get(lpfc_fcf_record_mac_4, fcf_record),
1866 bf_get(lpfc_fcf_record_mac_5, fcf_record),
1867 bf_get(lpfc_fcf_record_fab_name_0, fcf_record),
1868 bf_get(lpfc_fcf_record_fab_name_1, fcf_record),
1869 bf_get(lpfc_fcf_record_fab_name_2, fcf_record),
1870 bf_get(lpfc_fcf_record_fab_name_3, fcf_record),
1871 bf_get(lpfc_fcf_record_fab_name_4, fcf_record),
1872 bf_get(lpfc_fcf_record_fab_name_5, fcf_record),
1873 bf_get(lpfc_fcf_record_fab_name_6, fcf_record),
1874 bf_get(lpfc_fcf_record_fab_name_7, fcf_record),
1875 bf_get(lpfc_fcf_record_switch_name_0, fcf_record),
1876 bf_get(lpfc_fcf_record_switch_name_1, fcf_record),
1877 bf_get(lpfc_fcf_record_switch_name_2, fcf_record),
1878 bf_get(lpfc_fcf_record_switch_name_3, fcf_record),
1879 bf_get(lpfc_fcf_record_switch_name_4, fcf_record),
1880 bf_get(lpfc_fcf_record_switch_name_5, fcf_record),
1881 bf_get(lpfc_fcf_record_switch_name_6, fcf_record),
1882 bf_get(lpfc_fcf_record_switch_name_7, fcf_record),
1900 lpfc_sli4_fcf_record_match(
struct lpfc_hba *phba,
1902 struct fcf_record *new_fcf_record,
1906 if (!lpfc_vlan_id_match(fcf_rec->
vlan_id, new_vlan_id))
1908 if (!lpfc_mac_addr_match(fcf_rec->
mac_addr, new_fcf_record))
1910 if (!lpfc_sw_name_match(fcf_rec->
switch_name, new_fcf_record))
1912 if (!lpfc_fab_name_match(fcf_rec->
fabric_name, new_fcf_record))
1936 spin_lock_irq(&phba->
hbalock);
1938 spin_unlock_irq(&phba->
hbalock);
1940 "2872 Devloss tmo with no eligible "
1941 "FCF, unregister in-use FCF (x%x) "
1942 "and rescan FCF table\n",
1943 phba->
fcf.current_rec.fcf_indx);
1945 goto stop_flogi_current_fcf;
1951 spin_unlock_irq(&phba->
hbalock);
1953 "2865 No FCF available, stop roundrobin FCF "
1954 "failover and change port state:x%x/x%x\n",
1957 goto stop_flogi_current_fcf;
1960 "2794 Try FLOGI roundrobin FCF failover to "
1961 "(x%x)\n", fcf_index);
1965 "2761 FLOGI roundrobin FCF failover "
1966 "failed (rc:x%x) to read FCF (x%x)\n",
1967 rc, phba->
fcf.current_rec.fcf_indx);
1969 goto stop_flogi_current_fcf;
1973 stop_flogi_current_fcf:
1987 static void lpfc_sli4_fcf_pri_list_del(
struct lpfc_hba *phba,
1992 new_fcf_pri = &phba->
fcf.fcf_pri[fcf_index];
1994 "3058 deleting idx x%x pri x%x flg x%x\n",
1995 fcf_index, new_fcf_pri->
fcf_rec.priority,
1997 spin_lock_irq(&phba->
hbalock);
1999 if (phba->
fcf.current_rec.priority ==
2000 new_fcf_pri->
fcf_rec.priority)
2001 phba->
fcf.eligible_fcf_cnt--;
2002 list_del_init(&new_fcf_pri->
list);
2005 spin_unlock_irq(&phba->
hbalock);
2022 new_fcf_pri = &phba->
fcf.fcf_pri[fcf_index];
2023 spin_lock_irq(&phba->
hbalock);
2025 spin_unlock_irq(&phba->
hbalock);
2044 struct fcf_record *new_fcf_record)
2053 new_fcf_pri = &phba->
fcf.fcf_pri[fcf_index];
2055 "3059 adding idx x%x pri x%x flg x%x\n",
2058 spin_lock_irq(&phba->
hbalock);
2060 list_del_init(&new_fcf_pri->
list);
2061 new_fcf_pri->
fcf_rec.fcf_index = fcf_index;
2063 if (list_empty(&phba->
fcf.fcf_pri_list)) {
2064 list_add(&new_fcf_pri->
list, &phba->
fcf.fcf_pri_list);
2066 new_fcf_pri->
fcf_rec.fcf_index);
2076 current_fcf_pri = phba->
fcf.fcf_pri[last_index].fcf_rec.priority;
2077 if (new_fcf_pri->
fcf_rec.priority <= current_fcf_pri) {
2078 list_add(&new_fcf_pri->
list, &phba->
fcf.fcf_pri_list);
2079 if (new_fcf_pri->
fcf_rec.priority < current_fcf_pri) {
2081 sizeof(*phba->
fcf.fcf_rr_bmask));
2083 phba->
fcf.eligible_fcf_cnt = 1;
2086 phba->
fcf.eligible_fcf_cnt++;
2088 new_fcf_pri->
fcf_rec.fcf_index);
2093 &phba->
fcf.fcf_pri_list,
list) {
2094 if (new_fcf_pri->
fcf_rec.priority <=
2096 if (fcf_pri->
list.prev == &phba->
fcf.fcf_pri_list)
2097 list_add(&new_fcf_pri->
list,
2098 &phba->
fcf.fcf_pri_list);
2100 list_add(&new_fcf_pri->
list,
2102 fcf_pri->
list.prev)->list);
2105 }
else if (fcf_pri->
list.next == &phba->
fcf.fcf_pri_list
2106 || new_fcf_pri->
fcf_rec.priority <
2107 next_fcf_pri->
fcf_rec.priority) {
2108 list_add(&new_fcf_pri->
list, &fcf_pri->
list);
2120 spin_unlock_irq(&phba->
hbalock);
2142 struct fcf_record *new_fcf_record;
2144 uint16_t fcf_index, next_fcf_index;
2148 bool select_new_fcf;
2158 new_fcf_record = lpfc_sli4_fcf_rec_mbox_parse(phba, mboxq,
2160 if (!new_fcf_record) {
2162 "2765 Mailbox command READ_FCF_RECORD "
2163 "failed to retrieve a FCF record.\n");
2165 spin_lock_irq(&phba->
hbalock);
2167 spin_unlock_irq(&phba->
hbalock);
2173 rc = lpfc_match_fcf_conn_list(phba, new_fcf_record, &boot_flag,
2174 &addr_mode, &vlan_id);
2177 lpfc_sli4_log_fcf_record_info(phba, new_fcf_record, vlan_id,
2186 lpfc_sli4_fcf_pri_list_del(phba,
2187 bf_get(lpfc_fcf_record_fcf_index,
2190 "2781 FCF (x%x) failed connection "
2191 "list check: (x%x/x%x/%x)\n",
2192 bf_get(lpfc_fcf_record_fcf_index,
2194 bf_get(lpfc_fcf_record_fcf_avail,
2196 bf_get(lpfc_fcf_record_fcf_valid,
2198 bf_get(lpfc_fcf_record_fcf_sol,
2201 lpfc_sli4_fcf_record_match(phba, &phba->
fcf.current_rec,
2203 if (
bf_get(lpfc_fcf_record_fcf_index, new_fcf_record) !=
2204 phba->
fcf.current_rec.fcf_indx) {
2206 "2862 FCF (x%x) matches property "
2207 "of in-use FCF (x%x)\n",
2208 bf_get(lpfc_fcf_record_fcf_index,
2210 phba->
fcf.current_rec.fcf_indx);
2222 "2835 Invalid in-use FCF "
2223 "(x%x), enter FCF failover "
2225 phba->
fcf.current_rec.fcf_indx);
2226 spin_lock_irq(&phba->
hbalock);
2228 spin_unlock_irq(&phba->
hbalock);
2237 fcf_index =
bf_get(lpfc_fcf_record_fcf_index, new_fcf_record);
2250 spin_lock_irq(&phba->
hbalock);
2253 lpfc_sli4_fcf_record_match(phba, &phba->
fcf.current_rec,
2254 new_fcf_record, vlan_id)) {
2255 if (
bf_get(lpfc_fcf_record_fcf_index, new_fcf_record) ==
2256 phba->
fcf.current_rec.fcf_indx) {
2265 spin_unlock_irq(&phba->
hbalock);
2267 "2836 New FCF matches in-use "
2269 phba->
fcf.current_rec.fcf_indx);
2273 "2863 New FCF (x%x) matches "
2274 "property of in-use FCF (x%x)\n",
2275 bf_get(lpfc_fcf_record_fcf_index,
2277 phba->
fcf.current_rec.fcf_indx);
2287 spin_unlock_irq(&phba->
hbalock);
2296 fcf_rec = &phba->
fcf.failover_rec;
2298 fcf_rec = &phba->
fcf.current_rec;
2309 "2837 Update current FCF record "
2310 "(x%x) with new FCF record (x%x)\n",
2312 bf_get(lpfc_fcf_record_fcf_index,
2314 __lpfc_update_fcf_record(phba, fcf_rec, new_fcf_record,
2316 spin_unlock_irq(&phba->
hbalock);
2325 spin_unlock_irq(&phba->
hbalock);
2335 "2838 Update current FCF record "
2336 "(x%x) with new FCF record (x%x)\n",
2338 bf_get(lpfc_fcf_record_fcf_index,
2340 __lpfc_update_fcf_record(phba, fcf_rec, new_fcf_record,
2341 addr_mode, vlan_id, 0);
2343 phba->
fcf.eligible_fcf_cnt = 1;
2346 phba->
fcf.eligible_fcf_cnt++;
2347 select_new_fcf = lpfc_sli4_new_fcf_random_select(phba,
2348 phba->
fcf.eligible_fcf_cnt);
2349 if (select_new_fcf) {
2351 "2839 Update current FCF record "
2352 "(x%x) with new FCF record (x%x)\n",
2354 bf_get(lpfc_fcf_record_fcf_index,
2357 __lpfc_update_fcf_record(phba, fcf_rec,
2359 addr_mode, vlan_id, 0);
2362 spin_unlock_irq(&phba->
hbalock);
2371 "2840 Update initial FCF candidate "
2373 bf_get(lpfc_fcf_record_fcf_index,
2375 __lpfc_update_fcf_record(phba, fcf_rec, new_fcf_record,
2376 addr_mode, vlan_id, (boot_flag ?
2380 phba->
fcf.eligible_fcf_cnt = 1;
2385 spin_unlock_irq(&phba->
hbalock);
2402 "2782 No suitable FCF found: "
2405 bf_get(lpfc_fcf_record_fcf_index,
2407 spin_lock_irq(&phba->
hbalock);
2410 spin_unlock_irq(&phba->
hbalock);
2414 "2864 On devloss tmo "
2415 "unreg in-use FCF and "
2416 "rescan FCF table\n");
2424 spin_unlock_irq(&phba->
hbalock);
2441 "2842 Replace in-use FCF (x%x) "
2442 "with failover FCF (x%x)\n",
2443 phba->
fcf.current_rec.fcf_indx,
2444 phba->
fcf.failover_rec.fcf_indx);
2446 &phba->
fcf.failover_rec,
2453 spin_lock_irq(&phba->
hbalock);
2455 spin_unlock_irq(&phba->
hbalock);
2457 lpfc_register_fcf(phba);
2476 "2841 In-use FCF record (x%x) "
2477 "not reported, entering fast "
2478 "FCF failover mode scanning.\n",
2479 phba->
fcf.current_rec.fcf_indx);
2480 spin_lock_irq(&phba->
hbalock);
2482 spin_unlock_irq(&phba->
hbalock);
2488 lpfc_register_fcf(phba);
2496 lpfc_register_fcf(phba);
2519 struct fcf_record *new_fcf_record;
2521 uint16_t next_fcf_index, fcf_index;
2528 spin_lock_irq(&phba->
hbalock);
2531 spin_unlock_irq(&phba->
hbalock);
2536 new_fcf_record = lpfc_sli4_fcf_rec_mbox_parse(phba, mboxq,
2538 if (!new_fcf_record) {
2540 "2766 Mailbox command READ_FCF_RECORD "
2541 "failed to retrieve a FCF record.\n");
2546 rc = lpfc_match_fcf_conn_list(phba, new_fcf_record, &boot_flag,
2547 &addr_mode, &vlan_id);
2550 lpfc_sli4_log_fcf_record_info(phba, new_fcf_record, vlan_id,
2553 fcf_index =
bf_get(lpfc_fcf_record_fcf_index, new_fcf_record);
2556 "2848 Remove ineligible FCF (x%x) from "
2557 "from roundrobin bmask\n", fcf_index);
2568 if (fcf_index == phba->
fcf.current_rec.fcf_indx) {
2570 "2760 Perform FLOGI roundrobin FCF failover: "
2571 "FCF (x%x) back to FCF (x%x)\n",
2572 phba->
fcf.current_rec.fcf_indx, fcf_index);
2581 "2834 Update current FCF (x%x) with new FCF (x%x)\n",
2582 phba->
fcf.failover_rec.fcf_indx, fcf_index);
2583 spin_lock_irq(&phba->
hbalock);
2584 __lpfc_update_fcf_record(phba, &phba->
fcf.failover_rec,
2585 new_fcf_record, addr_mode, vlan_id,
2587 spin_unlock_irq(&phba->
hbalock);
2589 current_fcf_index = phba->
fcf.current_rec.fcf_indx;
2595 memcpy(&phba->
fcf.current_rec, &phba->
fcf.failover_rec,
2599 "2783 Perform FLOGI roundrobin FCF failover: FCF "
2600 "(x%x) to FCF (x%x)\n", current_fcf_index, fcf_index);
2603 lpfc_register_fcf(phba);
2622 struct fcf_record *new_fcf_record;
2624 uint16_t fcf_index, next_fcf_index;
2637 new_fcf_record = lpfc_sli4_fcf_rec_mbox_parse(phba, mboxq,
2639 if (!new_fcf_record) {
2641 "2767 Mailbox command READ_FCF_RECORD "
2642 "failed to retrieve a FCF record.\n");
2647 rc = lpfc_match_fcf_conn_list(phba, new_fcf_record, &boot_flag,
2648 &addr_mode, &vlan_id);
2651 lpfc_sli4_log_fcf_record_info(phba, new_fcf_record, vlan_id,
2658 fcf_index =
bf_get(lpfc_fcf_record_fcf_index, new_fcf_record);
2688 "2891 Init VFI mailbox failed 0x%x\n",
2717 LOG_MBOX,
"2892 Failed to allocate "
2718 "init_vfi mailbox\n");
2726 LOG_MBOX,
"2893 Failed to issue init_vfi mailbox\n");
2743 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
2748 "2609 Init VPI mailbox failed 0x%x\n",
2764 "2731 Cannot find fabric "
2765 "controller node\n");
2777 "2606 No NPIV Fabric support\n");
2799 LOG_MBOX,
"2607 Failed to allocate "
2800 "init_vpi mailbox\n");
2804 mboxq->
vport = vport;
2809 LOG_MBOX,
"2608 Failed to issue init_vpi mailbox\n");
2828 if (vports !=
NULL) {
2855 "Fabric support\n");
2867 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
2878 "2018 REG_VFI mbxStatus error x%x "
2944 "0319 READ_SPARAM mbxStatus error x%x "
2982 struct fcf_record *fcf_record;
2984 spin_lock_irq(&phba->
hbalock);
2985 switch (
bf_get(lpfc_mbx_read_top_link_spd, la)) {
3002 shost = lpfc_shost_from_vport(vport);
3011 "1309 Link Up Event npiv not supported in loop "
3014 if (
bf_get(lpfc_mbx_read_top_il, la)) {
3039 while (j < numalpa) {
3041 for (k = 1; j < numalpa; k++) {
3052 "1304 Link Up Event "
3053 "ALPA map Data: x%x "
3055 un.pa.wd1, un.pa.wd2,
3056 un.pa.wd3, un.pa.wd4);
3071 spin_unlock_irq(&phba->
hbalock);
3083 sparam_mbox->
vport = vport;
3084 sparam_mbox->
mbox_cmpl = lpfc_mbx_cmpl_read_sparam;
3100 cfglink_mbox->
vport = vport;
3101 cfglink_mbox->
mbox_cmpl = lpfc_mbx_cmpl_local_config_link;
3115 fcf_record = kzalloc(
sizeof(
struct fcf_record),
3120 "2554 Could not allocate memory for "
3132 "2013 Could not manually add FCF "
3133 "record 0, status %d\n", rc);
3144 spin_lock_irq(&phba->
hbalock);
3146 spin_unlock_irq(&phba->
hbalock);
3151 spin_unlock_irq(&phba->
hbalock);
3153 "2778 Start FCF table scan at linkup\n");
3157 spin_lock_irq(&phba->
hbalock);
3159 spin_unlock_irq(&phba->
hbalock);
3170 "0263 Discovery Mailbox error: state: 0x%x : %p %p\n",
3171 vport->
port_state, sparam_mbox, cfglink_mbox);
3177 lpfc_enable_la(
struct lpfc_hba *phba)
3181 spin_lock_irq(&phba->
hbalock);
3189 spin_unlock_irq(&phba->
hbalock);
3193 lpfc_mbx_issue_link_down(
struct lpfc_hba *phba)
3196 lpfc_enable_la(phba);
3212 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3222 "1307 READ_LA mbox error x%x state x%x\n",
3224 lpfc_mbx_issue_link_down(phba);
3226 goto lpfc_mbx_cmpl_read_topology_free_mbuf;
3234 if (
bf_get(lpfc_mbx_read_top_pb, la))
3242 phba->
fc_stat.LinkMultiEvent++;
3249 spin_lock_irq(&phba->
hbalock);
3250 if (
bf_get(lpfc_mbx_read_top_mm, la))
3254 spin_unlock_irq(&phba->
hbalock);
3258 (!
bf_get(lpfc_mbx_read_top_mm, la))) {
3262 "1306 Link Up Event in loop back mode "
3263 "x%x received Data: x%x x%x x%x x%x\n",
3265 bf_get(lpfc_mbx_read_top_alpa_granted,
3267 bf_get(lpfc_mbx_read_top_link_spd, la),
3271 "1303 Link Up Event x%x received "
3272 "Data: x%x x%x x%x x%x x%x x%x %d\n",
3274 bf_get(lpfc_mbx_read_top_alpa_granted,
3276 bf_get(lpfc_mbx_read_top_link_spd, la),
3278 bf_get(lpfc_mbx_read_top_mm, la),
3279 bf_get(lpfc_mbx_read_top_fa, la),
3282 lpfc_mbx_process_link_up(phba, la);
3283 }
else if (
bf_get(lpfc_mbx_read_top_att_type, la) ==
3288 "1308 Link Down Event in loop back mode "
3290 "Data: x%x x%x x%x\n",
3295 "1305 Link Down Event x%x received "
3296 "Data: x%x x%x x%x x%x x%x\n",
3299 bf_get(lpfc_mbx_read_top_mm, la),
3300 bf_get(lpfc_mbx_read_top_fa, la));
3301 lpfc_mbx_issue_link_down(phba);
3303 if ((
bf_get(lpfc_mbx_read_top_mm, la)) &&
3308 "1312 Link Down Event x%x received "
3309 "Data: x%x x%x x%x\n",
3312 lpfc_mbx_issue_link_down(phba);
3314 lpfc_enable_la(phba);
3317 "1310 Menlo Maint Mode Link up Event x%x rcvd "
3318 "Data: x%x x%x x%x\n",
3332 if (
bf_get(lpfc_mbx_read_top_fa, la)) {
3333 if (
bf_get(lpfc_mbx_read_top_mm, la))
3337 bf_get(lpfc_mbx_read_top_fa, la));
3340 lpfc_mbx_cmpl_read_topology_free_mbuf:
3359 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3401 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3407 "0911 cmpl_unreg_vpi, mb status = 0x%x\n",
3413 "2798 Unreg_vpi failed vpi 0x%x, mb status = 0x%x\n",
3446 mbox->
vport = vport;
3447 mbox->
mbox_cmpl = lpfc_mbx_cmpl_unreg_vpi;
3451 "1800 Could not issue unreg_vpi\n");
3463 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3471 "0912 cmpl_reg_vpi, mb status = 0x%x\n",
3517 int mbx_wait_rc = 0,
i;
3530 "0542 lpfc_create_static_vport failed to"
3531 " allocate mailbox memory\n");
3540 "0543 lpfc_create_static_vport failed to"
3541 " allocate vport_info\n");
3546 vport_buff = (
uint8_t *) vport_info;
3563 "0544 lpfc_create_static_vport failed to"
3564 " issue dump mailbox command ret 0x%x "
3571 byte_count = pmb->
u.
mqe.un.mb_words[5];
3577 memcpy(vport_buff + offset, mp->
virt, byte_count);
3578 offset += byte_count;
3587 vport_buff + offset,
3590 offset += byte_count;
3593 }
while (byte_count &&
3601 "0545 lpfc_create_static_vport bad"
3602 " information header 0x%x 0x%x\n",
3609 shost = lpfc_shost_from_vport(phba->
pport);
3612 memset(&vport_id, 0,
sizeof(vport_id));
3623 if (!new_fc_vport) {
3625 "0546 lpfc_create_static_vport failed to"
3669 "0258 Register Fabric login error: 0x%x\n",
3708 shost = lpfc_shost_from_vport(vport);
3747 "0260 Register NameServer error: 0x%x\n",
3814 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3821 rport_ids.node_name = wwn_to_u64(ndlp->
nlp_nodename.u.wwn);
3822 rport_ids.port_name = wwn_to_u64(ndlp->
nlp_portname.u.wwn);
3823 rport_ids.port_id = ndlp->
nlp_DID;
3838 "rport add: did:x%x flg:x%x type x%x",
3848 "Warning: fc_remote_port_add failed\n");
3867 "3183 rport register x%06x, rport %p role x%x\n",
3883 "rport delete: did:x%x flg:x%x type x%x",
3887 "3184 rport unregister x%06x, rport %p\n",
3898 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3934 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3948 vport->
phba->nport_event_cnt++;
3949 lpfc_unregister_remote_port(ndlp);
3954 vport->
phba->nport_event_cnt++;
3960 lpfc_register_remote_port(vport, ndlp);
3974 "0286 lpfc_nlp_state_cleanup failed to "
3975 "allocate statistical data buffer DID "
3986 ndlp->
rport->scsi_target_id == -1 ||
3996 lpfc_nlp_state_name(
char *
buffer,
size_t size,
int state)
3998 static char *states[] = {
4011 strlcpy(buffer, states[state], size);
4013 snprintf(buffer, size,
"unknown (%d)", state);
4021 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4023 char name1[16], name2[16];
4026 "0904 NPort state transition x%06x, %s -> %s\n",
4028 lpfc_nlp_state_name(name1,
sizeof(name1), old_state),
4029 lpfc_nlp_state_name(name2,
sizeof(name2), state));
4032 "node statechg did:x%x old:%d ste:%d",
4033 ndlp->
nlp_DID, old_state, state);
4047 }
else if (old_state)
4048 lpfc_nlp_counters(vport, old_state, -1);
4051 lpfc_nlp_counters(vport, state, 1);
4052 lpfc_nlp_state_cleanup(vport, ndlp, old_state, state);
4058 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4070 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4074 lpfc_nlp_counters(vport, ndlp->
nlp_state, -1);
4078 lpfc_nlp_state_cleanup(vport, ndlp, ndlp->
nlp_state,
4087 lpfc_nlp_counters(vport, ndlp->
nlp_state, -1);
4088 lpfc_nlp_state_cleanup(vport, ndlp, ndlp->
nlp_state,
4115 ndlp->
vport = vport;
4118 kref_init(&ndlp->
kref);
4132 unsigned long flags;
4140 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
4142 "0277 lpfc_enable_node: ndlp:x%p "
4143 "usgmap:x%x refcnt:%d\n",
4150 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
4152 "0278 lpfc_enable_node: ndlp:x%p "
4153 "usgmap:x%x refcnt:%d\n",
4165 lpfc_initialize_node(vport, ndlp, did);
4167 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
4173 "node enable: did:x%x",
4203 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4209 tmo = (((phba->
fc_edtov + 999) / 1000) + 1);
4220 "set disc timer: tmo:x%x state:x%x flg:x%x",
4231 "0247 Start Discovery Timer state x%x "
4232 "Data: x%x x%lx x%x x%x\n",
4246 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4247 unsigned long iflags;
4250 "can disc timer: state:x%x rtry:x%x flg:x%x",
4257 spin_unlock_irqrestore(shost->
host_lock, iflags);
4266 "0248 Cancel Discovery Timer state x%x "
4267 "Data: x%x x%x x%x\n",
4287 if (iocb->
vport != vport)
4342 pring = &psli->
ring[
i];
4344 spin_lock_irq(&phba->
hbalock);
4355 list_move_tail(&iocb->
list,
4360 spin_unlock_irq(&phba->
hbalock);
4417 mbox->
vport = vport;
4429 lpfc_no_rpi(phba, ndlp);
4458 "2884 Vport array allocation failed \n");
4462 shost = lpfc_shost_from_vport(vports[i]);
4493 mbox->
vport = vport;
4502 "1836 Could not issue "
4503 "unreg_login(all_rpis) status %d\n", rc);
4518 mbox->
vport = vport;
4527 "1815 Could not issue "
4528 "unreg_did (default rpis) status %d\n",
4540 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4547 "0900 Cleanup node for NPort x%x "
4548 "Data: x%x x%x x%x\n",
4553 "0280 lpfc_cleanup_node: ndlp:x%p "
4554 "usgmap:x%x refcnt:%d\n",
4560 "0281 lpfc_cleanup_node: ndlp:x%p "
4561 "usgmap:x%x refcnt:%d\n",
4564 lpfc_disable_node(vport, ndlp);
4571 if ((mb = phba->
sli.mbox_active)) {
4580 spin_lock_irq(&phba->
hbalock);
4609 spin_unlock_irq(&phba->
hbalock);
4658 mbox->
vport = vport;
4667 lpfc_cleanup_node(vport, ndlp);
4675 rdata = ndlp->
rport->dd_data;
4685 D_ID mydid, ndlpdid, matchdid;
4696 if ((mydid.
un.
b.domain == 0) && (mydid.
un.
b.area == 0)) {
4702 if (matchdid.
un.
b.id == ndlpdid.
un.
b.id) {
4703 if ((mydid.
un.
b.domain == matchdid.
un.
b.domain) &&
4704 (mydid.
un.
b.area == matchdid.
un.
b.area)) {
4705 if ((ndlpdid.
un.
b.domain == 0) &&
4706 (ndlpdid.
un.
b.area == 0)) {
4707 if (ndlpdid.
un.
b.id)
4714 if ((mydid.
un.
b.domain == ndlpdid.
un.
b.domain) &&
4715 (mydid.
un.
b.area == ndlpdid.
un.
b.area)) {
4716 if ((matchdid.
un.
b.domain == 0) &&
4717 (matchdid.
un.
b.area == 0)) {
4718 if (matchdid.
un.
b.id)
4734 if (lpfc_matchdid(vport, ndlp, did)) {
4740 "0929 FIND node DID "
4741 "Data: x%p x%x x%x x%x\n",
4750 "0932 FIND node did x%x NOT FOUND.\n", did);
4757 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4759 unsigned long iflags;
4762 ndlp = __lpfc_findnode_did(vport, did);
4763 spin_unlock_irqrestore(shost->
host_lock, iflags);
4770 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4841 if (!lpfc_is_link_up(phba))
4849 for (j = 1; j <= phba->
alpa_map[0]; j++) {
4851 if (((vport->
fc_myDID & 0xff) == alpa) || (alpa == 0))
4864 index = FC_MAXLOOP - j - 1;
4865 alpa = lpfcAlpaArray[
index];
4866 if ((vport->
fc_myDID & 0xff) == alpa)
4897 mbox->
mbox_cmpl = lpfc_mbx_cmpl_clear_la;
4898 mbox->
vport = vport;
4902 lpfc_disc_flush_list(vport);
4920 regvpimbox->
mbox_cmpl = lpfc_mbx_cmpl_reg_vpi;
4921 regvpimbox->
vport = vport;
4933 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
4939 if (!lpfc_is_link_up(phba))
4943 clear_la_pending = 1;
4945 clear_la_pending = 0;
4962 "0202 Start Discovery hba state x%x "
4963 "Data: x%x x%x x%x\n",
5048 spin_lock_irq(&phba->
hbalock);
5057 list_move_tail(&iocb->
list, &completions);
5073 spin_unlock_irq(&phba->
hbalock);
5081 lpfc_disc_flush_list(
struct lpfc_vport *vport)
5093 lpfc_free_tx(phba, ndlp);
5104 lpfc_disc_flush_list(vport);
5128 unsigned long flags = 0;
5145 lpfc_disc_timeout_handler(
struct lpfc_vport *vport)
5147 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
5152 int rc, clrlaerr = 0;
5162 "disc timeout: state:x%x rtry:x%x flg:x%x",
5173 "0221 FAN timeout\n");
5206 "0222 Initial %s timeout\n",
5207 vport->
vpi ?
"FDISC" :
"FLOGI");
5224 "0223 Timeout while waiting for "
5225 "NameServer login\n");
5237 "0224 NameServer Query timeout "
5268 if (!initlinkmbox) {
5270 "0206 Device Discovery "
5271 "completion error\n");
5283 lpfc_set_loopback_flag(phba);
5292 "0227 Node Authentication timeout\n");
5293 lpfc_disc_flush_list(vport);
5312 "0231 RSCN timeout Data: x%x "
5320 lpfc_disc_flush_list(vport);
5326 "0273 Unexpected discovery timeout, "
5335 "0228 CLEAR LA timeout\n");
5349 "0230 Unexpected timeout, hba link "
5359 lpfc_disc_flush_list(vport);
5427 lpfc_filter_by_wwpn(
struct lpfc_nodelist *ndlp,
void *param)
5439 if (
filter(ndlp, param)) {
5441 "3185 FIND node filter %p DID "
5442 "Data: x%p x%x x%x\n",
5449 "3186 FIND node filter %p NOT FOUND.\n", filter);
5460 return __lpfc_find_node(vport, lpfc_filter_by_rpi, &rpi);
5470 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
5474 ndlp = __lpfc_find_node(vport, lpfc_filter_by_wwpn, wwpn);
5487 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
5513 unsigned long flags;
5522 for (i = 0; i < phba->
max_vpi; i++) {
5529 "2936 Could not find Vport mapped "
5530 "to vpi %d\n", vpi);
5537 if (vport->
vpi == i) {
5538 spin_unlock_irqrestore(&phba->
hbalock, flags);
5542 spin_unlock_irqrestore(&phba->
hbalock, flags);
5552 lpfc_initialize_node(vport, ndlp, did);
5556 "node init: did:x%x",
5566 lpfc_nlp_release(
struct kref *
kref)
5569 unsigned long flags;
5574 "node release: did:x%x flg:x%x type:x%x",
5578 "0279 lpfc_nlp_release: ndlp:x%p did %x "
5579 "usgmap:x%x refcnt:%d\n",
5584 lpfc_nlp_remove(ndlp->
vport, ndlp);
5590 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
5609 unsigned long flags;
5613 "node get: did:x%x flg:x%x refcnt:x%x",
5623 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
5625 "0276 lpfc_nlp_get: ndlp:x%p "
5626 "usgmap:x%x refcnt:%d\n",
5631 kref_get(&ndlp->
kref);
5632 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
5647 unsigned long flags;
5653 "node put: did:x%x flg:x%x refcnt:x%x",
5663 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
5665 "0274 lpfc_nlp_put: ndlp:x%p "
5666 "usgmap:x%x refcnt:%d\n",
5676 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
5678 "0275 lpfc_nlp_put: ndlp:x%p "
5679 "usgmap:x%x refcnt:%d\n",
5696 spin_unlock_irqrestore(&phba->
ndlp_lock, flags);
5703 return kref_put(&ndlp->
kref, lpfc_nlp_release);
5715 "node not used: did:x%x flg:x%x refcnt:x%x",
5735 lpfc_fcf_inuse(
struct lpfc_hba *phba)
5749 shost = lpfc_shost_from_vport(vports[i]);
5771 "2624 RPI %x DID %x flag %x "
5772 "still logged in\n",
5795 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
5799 "2555 UNREG_VFI mbxStatus error x%x "
5824 "2550 UNREG_FCFI mbxStatus error x%x "
5849 if (lpfc_fcf_inuse(phba))
5867 shost = lpfc_shost_from_vport(vports[i]);
5902 "2551 UNREG_FCFI mbox allocation failed"
5903 "HBA state x%x\n", phba->
pport->port_state);
5908 mbox->
mbox_cmpl = lpfc_unregister_fcfi_cmpl;
5913 "2552 Unregister FCFI command failed rc x%x "
5915 rc, phba->
pport->port_state);
5937 "2748 Failed to prepare for unregistering "
5938 "HBA's FCF record: rc=%d\n", rc);
5947 phba->
fcf.fcf_flag = 0;
5948 phba->
fcf.current_rec.flag = 0;
5959 spin_lock_irq(&phba->
hbalock);
5961 spin_unlock_irq(&phba->
hbalock);
5969 spin_lock_irq(&phba->
hbalock);
5971 spin_unlock_irq(&phba->
hbalock);
5973 "2553 lpfc_unregister_unused_fcf failed "
5974 "to read FCF record HBA state x%x\n",
5975 phba->
pport->port_state);
5995 "2749 Failed to prepare for unregistering "
5996 "HBA's FCF record: rc=%d\n", rc);
6005 spin_lock_irq(&phba->
hbalock);
6007 spin_unlock_irq(&phba->
hbalock);
6026 spin_lock_irq(&phba->
hbalock);
6032 spin_unlock_irq(&phba->
hbalock);
6035 spin_unlock_irq(&phba->
hbalock);
6037 if (lpfc_fcf_inuse(phba))
6052 lpfc_read_fcf_conn_tbl(
struct lpfc_hba *phba,
6064 list_del_init(&conn_entry->
list);
6075 for (i = 0; i < record_count; i++) {
6082 "2566 Failed to allocate connection"
6107 lpfc_read_fcoe_param(
struct lpfc_hba *phba,
6153 rec_length = buff[offset + 1];
6161 if (buff[offset] == rec_type)
6168 rec_length = buff[offset + 1];
6200 "2567 Config region 23 has bad signature\n");
6209 "2568 Config region 23 has bad version\n");
6214 rec_length = buff[offset + 1];
6217 rec_ptr = lpfc_get_rec_conf23(&buff[offset],
6220 lpfc_read_fcoe_param(phba, rec_ptr);
6223 rec_ptr = lpfc_get_rec_conf23(&buff[offset],
6226 lpfc_read_fcf_conn_tbl(phba, rec_ptr);