snic: Fix for missing interrupts

- On posting an IO to the firmware, adapter generates an interrupt.
  Due to hardware issues, sometimes the adapter fails to generate
  the interrupt. This behavior skips updating transmit queue-
  counters, which in turn causes the queue full condition. The fix
  addresses the queue full condition.

- The fix also reserves a slot in transmit queue for hba reset.
  when queue full is observed during IO, there will always be room
  to post hba reset command.

Signed-off-by: Narsimhulu Musini <nmusini@cisco.com>
Signed-off-by: Sesidhar Baddela <sebaddel@cisco.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Narsimhulu Musini
2016-03-17 00:51:14 -07:00
committed by Martin K. Petersen
parent 58fcf92050
commit c9747821f9
2 changed files with 60 additions and 8 deletions

View File

@@ -414,7 +414,7 @@ enum snic_ev_type {
/* Payload 88 bytes = 128 - 24 - 16 */
#define SNIC_HOST_REQ_PAYLOAD ((int)(SNIC_HOST_REQ_LEN - \
sizeof(struct snic_io_hdr) - \
(2 * sizeof(u64))))
(2 * sizeof(u64)) - sizeof(ulong)))
/*
* snic_host_req: host -> firmware request
@@ -448,6 +448,8 @@ struct snic_host_req {
/* hba reset */
struct snic_hba_reset reset;
} u;
ulong req_pa;
}; /* end of snic_host_req structure */