Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ec62b2b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
  [SCSI] megaraid_sas: fix for 32bit apps
  [SCSI] fcoe: Only rmmod fcoe.ko if there are no active connections
  [SCSI] libfcoe: Send port LKA every FIP_VN_KA_PERIOD secs.
  [SCSI] libfc: Don't assume response request present.
  [SCSI] libfc: Fix e_d_tov ns -> ms scaling factor in PLOGI response.
  [SCSI] libfc: call ddp setup for only FCP reads to avoid accessing junk fsp pointer
  [SCSI] iscsi_tcp regression: remove bogus warn on in write path
parents 8386cda3 b3dc1a21
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -2009,6 +2009,8 @@ static int fcoe_destroy(const char *buffer, struct kernel_param *kp)
	fcoe_interface_cleanup(fcoe);
	rtnl_unlock();
	fcoe_if_destroy(fcoe->ctlr.lp);
	module_put(THIS_MODULE);

out_putdev:
	dev_put(netdev);
out_nodev:
@@ -2059,6 +2061,11 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp)
	}
#endif

	if (!try_module_get(THIS_MODULE)) {
		rc = -EINVAL;
		goto out_nomod;
	}

	rtnl_lock();
	netdev = fcoe_if_to_netdev(buffer);
	if (!netdev) {
@@ -2099,17 +2106,24 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp)
	if (!fcoe_link_ok(lport))
		fcoe_ctlr_link_up(&fcoe->ctlr);

	rc = 0;
out_free:
	/*
	 * Release from init in fcoe_interface_create(), on success lport
	 * should be holding a reference taken in fcoe_if_create().
	 */
	fcoe_interface_put(fcoe);
	dev_put(netdev);
	rtnl_unlock();
	mutex_unlock(&fcoe_config_mutex);

	return 0;
out_free:
	fcoe_interface_put(fcoe);
out_putdev:
	dev_put(netdev);
out_nodev:
	rtnl_unlock();
	module_put(THIS_MODULE);
out_nomod:
	mutex_unlock(&fcoe_config_mutex);
	return rc;
}
+1 −1
Original line number Diff line number Diff line
@@ -1187,7 +1187,7 @@ static void fcoe_ctlr_timeout(unsigned long arg)
			next_timer = fip->ctlr_ka_time;

		if (time_after_eq(jiffies, fip->port_ka_time)) {
			fip->port_ka_time += jiffies +
			fip->port_ka_time = jiffies +
				msecs_to_jiffies(FIP_VN_KA_PERIOD);
			fip->send_port_ka = 1;
		}
+1 −1
Original line number Diff line number Diff line
@@ -1890,7 +1890,7 @@ static struct fc_seq *fc_exch_seq_send(struct fc_lport *lport,
	fc_exch_setup_hdr(ep, fp, ep->f_ctl);
	sp->cnt++;

	if (ep->xid <= lport->lro_xid)
	if (ep->xid <= lport->lro_xid && fh->fh_r_ctl == FC_RCTL_DD_UNSOL_CMD)
		fc_fcp_ddp_setup(fr_fsp(fp), ep->xid);

	if (unlikely(lport->tt.frame_send(lport, fp)))
+0 −3
Original line number Diff line number Diff line
@@ -298,9 +298,6 @@ void fc_fcp_ddp_setup(struct fc_fcp_pkt *fsp, u16 xid)
{
	struct fc_lport *lport;

	if (!fsp)
		return;

	lport = fsp->lp;
	if ((fsp->req_flags & FC_SRB_READ) &&
	    (lport->lro_enabled) && (lport->tt.ddp_setup)) {
+2 −1
Original line number Diff line number Diff line
@@ -1800,6 +1800,7 @@ int fc_lport_bsg_request(struct fc_bsg_job *job)
	u32 did;

	job->reply->reply_payload_rcv_len = 0;
	if (rsp)
		rsp->resid_len = job->reply_payload.payload_len;

	mutex_lock(&lport->lp_mutex);
Loading