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

Commit 77ae174d authored by James Bottomley's avatar James Bottomley
Browse files

Merge remote-tracking branch 'scsi-queue/drivers-for-3.16' into for-linus

parents 5616b0a4 8faeb529
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -5517,10 +5517,11 @@ S: Maintained
F:	arch/arm/mach-lpc32xx/
F:	arch/arm/mach-lpc32xx/


LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
M:	Nagalakshmi Nandigama <Nagalakshmi.Nandigama@lsi.com>
M:	Nagalakshmi Nandigama <nagalakshmi.nandigama@avagotech.com>
M:	Sreekanth Reddy <Sreekanth.Reddy@lsi.com>
M:	Praveen Krishnamoorthy <praveen.krishnamoorthy@avagotech.com>
M:	support@lsi.com
M:	Sreekanth Reddy <sreekanth.reddy@avagotech.com>
L:	DL-MPTFusionLinux@lsi.com
M:	Abhijit Mahajan <abhijit.mahajan@avagotech.com>
L:	MPT-FusionLinux.pdl@avagotech.com
L:	linux-scsi@vger.kernel.org
L:	linux-scsi@vger.kernel.org
W:	http://www.lsilogic.com/support
W:	http://www.lsilogic.com/support
S:	Supported
S:	Supported
+2 −0
Original line number Original line Diff line number Diff line
@@ -4198,6 +4198,8 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
		kfree(phba->ep_array);
		kfree(phba->ep_array);
		phba->ep_array = NULL;
		phba->ep_array = NULL;
		ret = -ENOMEM;
		ret = -ENOMEM;

		goto free_memory;
	}
	}


	for (i = 0; i < phba->params.cxns_per_ctrl; i++) {
	for (i = 0; i < phba->params.cxns_per_ctrl; i++) {
+1 −3
Original line number Original line Diff line number Diff line
@@ -1008,10 +1008,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
		BE2_IPV6 : BE2_IPV4 ;
		BE2_IPV6 : BE2_IPV4 ;


	rc = mgmt_get_if_info(phba, ip_type, &if_info);
	rc = mgmt_get_if_info(phba, ip_type, &if_info);
	if (rc) {
	if (rc)
		kfree(if_info);
		return rc;
		return rc;
	}


	if (boot_proto == ISCSI_BOOTPROTO_DHCP) {
	if (boot_proto == ISCSI_BOOTPROTO_DHCP) {
		if (if_info->dhcp_state) {
		if (if_info->dhcp_state) {
+4 −12
Original line number Original line Diff line number Diff line
@@ -516,23 +516,17 @@ static void bnx2fc_recv_frame(struct sk_buff *skb)
	skb_pull(skb, sizeof(struct fcoe_hdr));
	skb_pull(skb, sizeof(struct fcoe_hdr));
	fr_len = skb->len - sizeof(struct fcoe_crc_eof);
	fr_len = skb->len - sizeof(struct fcoe_crc_eof);


	stats = per_cpu_ptr(lport->stats, get_cpu());
	stats->RxFrames++;
	stats->RxWords += fr_len / FCOE_WORD_TO_BYTE;

	fp = (struct fc_frame *)skb;
	fp = (struct fc_frame *)skb;
	fc_frame_init(fp);
	fc_frame_init(fp);
	fr_dev(fp) = lport;
	fr_dev(fp) = lport;
	fr_sof(fp) = hp->fcoe_sof;
	fr_sof(fp) = hp->fcoe_sof;
	if (skb_copy_bits(skb, fr_len, &crc_eof, sizeof(crc_eof))) {
	if (skb_copy_bits(skb, fr_len, &crc_eof, sizeof(crc_eof))) {
		put_cpu();
		kfree_skb(skb);
		kfree_skb(skb);
		return;
		return;
	}
	}
	fr_eof(fp) = crc_eof.fcoe_eof;
	fr_eof(fp) = crc_eof.fcoe_eof;
	fr_crc(fp) = crc_eof.fcoe_crc32;
	fr_crc(fp) = crc_eof.fcoe_crc32;
	if (pskb_trim(skb, fr_len)) {
	if (pskb_trim(skb, fr_len)) {
		put_cpu();
		kfree_skb(skb);
		kfree_skb(skb);
		return;
		return;
	}
	}
@@ -544,7 +538,6 @@ static void bnx2fc_recv_frame(struct sk_buff *skb)
		port = lport_priv(vn_port);
		port = lport_priv(vn_port);
		if (!ether_addr_equal(port->data_src_addr, dest_mac)) {
		if (!ether_addr_equal(port->data_src_addr, dest_mac)) {
			BNX2FC_HBA_DBG(lport, "fpma mismatch\n");
			BNX2FC_HBA_DBG(lport, "fpma mismatch\n");
			put_cpu();
			kfree_skb(skb);
			kfree_skb(skb);
			return;
			return;
		}
		}
@@ -552,7 +545,6 @@ static void bnx2fc_recv_frame(struct sk_buff *skb)
	if (fh->fh_r_ctl == FC_RCTL_DD_SOL_DATA &&
	if (fh->fh_r_ctl == FC_RCTL_DD_SOL_DATA &&
	    fh->fh_type == FC_TYPE_FCP) {
	    fh->fh_type == FC_TYPE_FCP) {
		/* Drop FCP data. We dont this in L2 path */
		/* Drop FCP data. We dont this in L2 path */
		put_cpu();
		kfree_skb(skb);
		kfree_skb(skb);
		return;
		return;
	}
	}
@@ -562,7 +554,6 @@ static void bnx2fc_recv_frame(struct sk_buff *skb)
		case ELS_LOGO:
		case ELS_LOGO:
			if (ntoh24(fh->fh_s_id) == FC_FID_FLOGI) {
			if (ntoh24(fh->fh_s_id) == FC_FID_FLOGI) {
				/* drop non-FIP LOGO */
				/* drop non-FIP LOGO */
				put_cpu();
				kfree_skb(skb);
				kfree_skb(skb);
				return;
				return;
			}
			}
@@ -572,22 +563,23 @@ static void bnx2fc_recv_frame(struct sk_buff *skb)


	if (fh->fh_r_ctl == FC_RCTL_BA_ABTS) {
	if (fh->fh_r_ctl == FC_RCTL_BA_ABTS) {
		/* Drop incoming ABTS */
		/* Drop incoming ABTS */
		put_cpu();
		kfree_skb(skb);
		kfree_skb(skb);
		return;
		return;
	}
	}


	stats = per_cpu_ptr(lport->stats, smp_processor_id());
	stats->RxFrames++;
	stats->RxWords += fr_len / FCOE_WORD_TO_BYTE;

	if (le32_to_cpu(fr_crc(fp)) !=
	if (le32_to_cpu(fr_crc(fp)) !=
			~crc32(~0, skb->data, fr_len)) {
			~crc32(~0, skb->data, fr_len)) {
		if (stats->InvalidCRCCount < 5)
		if (stats->InvalidCRCCount < 5)
			printk(KERN_WARNING PFX "dropping frame with "
			printk(KERN_WARNING PFX "dropping frame with "
			       "CRC error\n");
			       "CRC error\n");
		stats->InvalidCRCCount++;
		stats->InvalidCRCCount++;
		put_cpu();
		kfree_skb(skb);
		kfree_skb(skb);
		return;
		return;
	}
	}
	put_cpu();
	fc_exch_recv(lport, fp);
	fc_exch_recv(lport, fp);
}
}


+2 −0
Original line number Original line Diff line number Diff line
@@ -282,6 +282,8 @@ struct bnx2fc_cmd_mgr *bnx2fc_cmd_mgr_alloc(struct bnx2fc_hba *hba)
				       arr_sz, GFP_KERNEL);
				       arr_sz, GFP_KERNEL);
	if (!cmgr->free_list_lock) {
	if (!cmgr->free_list_lock) {
		printk(KERN_ERR PFX "failed to alloc free_list_lock\n");
		printk(KERN_ERR PFX "failed to alloc free_list_lock\n");
		kfree(cmgr->free_list);
		cmgr->free_list = NULL;
		goto mem_err;
		goto mem_err;
	}
	}


Loading