mpt3sas: Added support for high port count HBA variants.
Updated hardware description headers with MPI v2.6 and mpt3sas_pci_table[] with vendor_ids, device_ids of Cutlass and Intruder HBA which have support for 4 ports. Signed-off-by: Suganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: Chaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
8038e6456a
commit
b130b0d56f
@@ -410,7 +410,7 @@ mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
|
||||
* @ioc: per adapter object
|
||||
* @iocpp: The ioc pointer is returned in this.
|
||||
* @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device &
|
||||
* MPI25_VERSION for mpt3ctl ioctl device.
|
||||
* MPI25_VERSION | MPI26_VERSION for mpt3ctl ioctl device.
|
||||
*
|
||||
* Return (-1) means error, else ioc_number.
|
||||
*/
|
||||
@@ -419,6 +419,7 @@ _ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp,
|
||||
int mpi_version)
|
||||
{
|
||||
struct MPT3SAS_ADAPTER *ioc;
|
||||
int version = 0;
|
||||
/* global ioc lock to protect controller on list operations */
|
||||
spin_lock(&gioc_lock);
|
||||
list_for_each_entry(ioc, &mpt3sas_ioc_list, list) {
|
||||
@@ -427,8 +428,21 @@ _ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp,
|
||||
/* Check whether this ioctl command is from right
|
||||
* ioctl device or not, if not continue the search.
|
||||
*/
|
||||
if (ioc->hba_mpi_version_belonged != mpi_version)
|
||||
continue;
|
||||
version = ioc->hba_mpi_version_belonged;
|
||||
/* MPI25_VERSION and MPI26_VERSION uses same ioctl
|
||||
* device.
|
||||
*/
|
||||
if (mpi_version == (MPI25_VERSION | MPI26_VERSION)) {
|
||||
if ((version == MPI25_VERSION) ||
|
||||
(version == MPI26_VERSION))
|
||||
goto out;
|
||||
else
|
||||
continue;
|
||||
} else {
|
||||
if (version != mpi_version)
|
||||
continue;
|
||||
}
|
||||
out:
|
||||
spin_unlock(&gioc_lock);
|
||||
*iocpp = ioc;
|
||||
return ioc_number;
|
||||
@@ -1053,6 +1067,7 @@ _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
strcat(karg.driver_version, MPT2SAS_DRIVER_VERSION);
|
||||
break;
|
||||
case MPI25_VERSION:
|
||||
case MPI26_VERSION:
|
||||
karg.adapter_type = MPT3_IOCTL_INTERFACE_SAS3;
|
||||
strcat(karg.driver_version, MPT3SAS_DRIVER_VERSION);
|
||||
break;
|
||||
@@ -2203,7 +2218,7 @@ _ctl_compat_mpt_command(struct MPT3SAS_ADAPTER *ioc, unsigned cmd,
|
||||
* @arg - user space data buffer
|
||||
* @compat - handles 32 bit applications in 64bit os
|
||||
* @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device &
|
||||
* MPI25_VERSION for mpt3ctl ioctl device.
|
||||
* MPI25_VERSION | MPI26_VERSION for mpt3ctl ioctl device.
|
||||
*/
|
||||
static long
|
||||
_ctl_ioctl_main(struct file *file, unsigned int cmd, void __user *arg,
|
||||
@@ -2341,10 +2356,12 @@ _ctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
long ret;
|
||||
|
||||
/* pass MPI25_VERSION value, to indicate that this ioctl cmd
|
||||
/* pass MPI25_VERSION | MPI26_VERSION value,
|
||||
* to indicate that this ioctl cmd
|
||||
* came from mpt3ctl ioctl device.
|
||||
*/
|
||||
ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 0, MPI25_VERSION);
|
||||
ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 0,
|
||||
MPI25_VERSION | MPI26_VERSION);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2379,7 +2396,8 @@ _ctl_ioctl_compat(struct file *file, unsigned cmd, unsigned long arg)
|
||||
{
|
||||
long ret;
|
||||
|
||||
ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 1, MPI25_VERSION);
|
||||
ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 1,
|
||||
MPI25_VERSION | MPI26_VERSION);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user