qed*: Utilize Firmware 8.15.3.0
This patch advances the qed* drivers into using the newer firmware - This solves several firmware bugs, mostly related [but not limited to] various init/deinit issues in various offloaded protocols. It also introduces a major 4-Cached SGE change in firmware, which can be seen in the storage drivers' changes. In addition, this firmware is required for supporting the new QL41xxx series of adapters; While this patch doesn't add the actual support, the firmware contains the necessary initialization & firmware logic to operate such adapters [actual support would be added later on]. Changes from Previous versions: ------------------------------- - V2 - fix kbuild-test robot warnings Signed-off-by: Tomer Tayar <Tomer.Tayar@cavium.com> Signed-off-by: Ram Amrani <Ram.Amrani@cavium.com> Signed-off-by: Manish Rangankar <Manish.Rangankar@cavium.com> Signed-off-by: Chad Dupuis <Chad.Dupuis@cavium.com> Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

کامیت شده توسط
David S. Miller

والد
6a019c5c50
کامیت
be086e7c53
@@ -25,6 +25,9 @@ static int qedf_initiate_els(struct qedf_rport *fcport, unsigned int op,
|
||||
uint16_t xid;
|
||||
uint32_t start_time = jiffies / HZ;
|
||||
uint32_t current_time;
|
||||
struct fcoe_wqe *sqe;
|
||||
unsigned long flags;
|
||||
u16 sqe_idx;
|
||||
|
||||
QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_ELS, "Sending ELS\n");
|
||||
|
||||
@@ -113,20 +116,25 @@ retry_els:
|
||||
/* Obtain exchange id */
|
||||
xid = els_req->xid;
|
||||
|
||||
spin_lock_irqsave(&fcport->rport_lock, flags);
|
||||
|
||||
sqe_idx = qedf_get_sqe_idx(fcport);
|
||||
sqe = &fcport->sq[sqe_idx];
|
||||
memset(sqe, 0, sizeof(struct fcoe_wqe));
|
||||
|
||||
/* Initialize task context for this IO request */
|
||||
task = qedf_get_task_mem(&qedf->tasks, xid);
|
||||
qedf_init_mp_task(els_req, task);
|
||||
qedf_init_mp_task(els_req, task, sqe);
|
||||
|
||||
/* Put timer on original I/O request */
|
||||
if (timer_msec)
|
||||
qedf_cmd_timer_set(qedf, els_req, timer_msec);
|
||||
|
||||
qedf_add_to_sq(fcport, xid, 0, FCOE_TASK_TYPE_MIDPATH, 0);
|
||||
|
||||
/* Ring doorbell */
|
||||
QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_ELS, "Ringing doorbell for ELS "
|
||||
"req\n");
|
||||
qedf_ring_doorbell(fcport);
|
||||
spin_unlock_irqrestore(&fcport->rport_lock, flags);
|
||||
els_err:
|
||||
return rc;
|
||||
}
|
||||
@@ -604,6 +612,8 @@ static void qedf_initiate_seq_cleanup(struct qedf_ioreq *orig_io_req,
|
||||
struct qedf_rport *fcport;
|
||||
unsigned long flags;
|
||||
struct qedf_els_cb_arg *cb_arg;
|
||||
struct fcoe_wqe *sqe;
|
||||
u16 sqe_idx;
|
||||
|
||||
fcport = orig_io_req->fcport;
|
||||
|
||||
@@ -631,8 +641,13 @@ static void qedf_initiate_seq_cleanup(struct qedf_ioreq *orig_io_req,
|
||||
|
||||
spin_lock_irqsave(&fcport->rport_lock, flags);
|
||||
|
||||
qedf_add_to_sq(fcport, orig_io_req->xid, 0,
|
||||
FCOE_TASK_TYPE_SEQUENCE_CLEANUP, offset);
|
||||
sqe_idx = qedf_get_sqe_idx(fcport);
|
||||
sqe = &fcport->sq[sqe_idx];
|
||||
memset(sqe, 0, sizeof(struct fcoe_wqe));
|
||||
orig_io_req->task_params->sqe = sqe;
|
||||
|
||||
init_initiator_sequence_recovery_fcoe_task(orig_io_req->task_params,
|
||||
offset);
|
||||
qedf_ring_doorbell(fcport);
|
||||
|
||||
spin_unlock_irqrestore(&fcport->rport_lock, flags);
|
||||
|
مرجع در شماره جدید
Block a user