mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 14:43:58 +08:00
scsi: qedi: Add ep_state for login completion on un-reachable targets
When the driver finds invalid destination MAC for the first un-reachable target, and before completes the PATH_REQ operation, set new ep_state to OFFLDCONN_NONE so that as part of driver ep_poll mechanism, the upper open-iscsi layer is notified to complete the login process on the first un-reachable target and thus proceed login to other reachable targets. Signed-off-by: Manish Rangankar <mrangankar@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
ce9e7bce43
commit
34a2ce8876
@ -953,6 +953,7 @@ static int qedi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms)
|
||||
|
||||
qedi_ep = ep->dd_data;
|
||||
if (qedi_ep->state == EP_STATE_IDLE ||
|
||||
qedi_ep->state == EP_STATE_OFLDCONN_NONE ||
|
||||
qedi_ep->state == EP_STATE_OFLDCONN_FAILED)
|
||||
return -1;
|
||||
|
||||
@ -1035,6 +1036,7 @@ static void qedi_ep_disconnect(struct iscsi_endpoint *ep)
|
||||
|
||||
switch (qedi_ep->state) {
|
||||
case EP_STATE_OFLDCONN_START:
|
||||
case EP_STATE_OFLDCONN_NONE:
|
||||
goto ep_release_conn;
|
||||
case EP_STATE_OFLDCONN_FAILED:
|
||||
break;
|
||||
@ -1225,6 +1227,7 @@ static int qedi_set_path(struct Scsi_Host *shost, struct iscsi_path *path_data)
|
||||
|
||||
if (!is_valid_ether_addr(&path_data->mac_addr[0])) {
|
||||
QEDI_NOTICE(&qedi->dbg_ctx, "dst mac NOT VALID\n");
|
||||
qedi_ep->state = EP_STATE_OFLDCONN_NONE;
|
||||
ret = -EIO;
|
||||
goto set_path_exit;
|
||||
}
|
||||
|
@ -59,6 +59,7 @@ enum {
|
||||
EP_STATE_OFLDCONN_FAILED = 0x2000,
|
||||
EP_STATE_CONNECT_FAILED = 0x4000,
|
||||
EP_STATE_DISCONN_TIMEDOUT = 0x8000,
|
||||
EP_STATE_OFLDCONN_NONE = 0x10000,
|
||||
};
|
||||
|
||||
struct qedi_conn;
|
||||
|
Loading…
Reference in New Issue
Block a user