https://bugzilla.kernel.org/show_bug.cgi?id=199887 --- Comment #5 from Pavel Kankovsky (peak@xxxxxxxxxxxxxxxxxxxxxx) --- Some additional findings: 1. It turns out qla2x00_get_node_name_list() was introduced in 3.5 and it was called from qla_target.c until 3.11 when the call was removed and the function remained unused until its own removal in 4.11. I have not tested whether it would work on an old HBA but it is far from certain (its result was an array of "struct qla_port_24xx_data", corresponding to "struct get_name_list" in recent versions), and even if it would, it would not help much (there seem to be two variants of MBC_PORT_NODE_NAME_LIST, the old function invoked the variant providing less data while the current code needs the variant providing more data, "struct get_name_list_extended"). 2. The driver is sometimes unable to relogin when an old HBA reconnects to the fabric because "Async-login" keeps failing with 4007 ie. MBS_PORT_ID_USED. It turns out qla24xx_handle_plogi_done_event expects an offending loopid in ea->iop[1] but qla2x00_mbx_iocb_entry stores the value in ea->data[1]. (A similar problem occurs during the handling 4008 ie. MBS_LOOP_ID_USED when qla24xx_handle_plogi_done_event expects an offending portid in ea->iop[1] but it is not stored anywhere. But the driver seems to be able to recover in this case.) 3. Newer HBAs seem to use the same command (MBC_LOGIN_FABRIC_PORT) for both fabric and private loop port login but old HBAs need a different command (MBC_LOGIN_LOOP_PORT) in the latter case. See qla2x00_local_device_login. -- You may reply to this email to add a comment. You are receiving this mail because: You are watching the assignee of the bug.