]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: mpt3sas: Fix for incorrect numbers for MSIX vectors enabled when non RDPQ card...
authorSuganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
Wed, 26 Oct 2016 08:04:33 +0000 (13:34 +0530)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 6 Mar 2017 21:24:09 +0000 (13:24 -0800)
Orabug: 25535122

No. of MSIX vectors supported = min (Total no. of CPU cores,
MSIX vectors supported by card)

when RDPQ is disabled "max_msix_vectors" module parameter which was
declared as global was set to '8' and hence if there are more than one card
in system among which if RDPQ disabled card is enumerated first then only 8
MSIX vectors was getting enabled for all the cards(including RDPQ enabled
card,which can support more than 8 MSIX vectors).

Used local variable instead of global variable ,if RDPQ is disabled this
local variable is set to '8' else it is set to "max_msix_vectors" (by
default this is set to -1, whose value can be set by user during driver
load time).So now regardless of whether RDPQ disabled card is enumerated
first or RDPQ enabled card is enumerated first , MSIX vectors enabled
depends on the cards capability.

Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit bb3506612346c2e54bb71717d9b8cf7a7d188ead)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/scsi/mpt3sas/mpt3sas_base.c

index 9a47aa1c40c6fc20e120cb2475f20d453c2b8fc9..80fabfb460a72362cd0ecdf891617f2950fdeb59 100644 (file)
@@ -1959,7 +1959,7 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)
 {
        struct msix_entry *entries, *a;
        int r;
-       int i;
+       int i, local_max_msix_vectors;
        u8 try_msix = 0;
 
        if (msix_disable == -1 || msix_disable == 0)
@@ -1979,13 +1979,15 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)
          ioc->cpu_count, max_msix_vectors);
 
        if (!ioc->rdpq_array_enable && max_msix_vectors == -1)
-               max_msix_vectors = 8;
+               local_max_msix_vectors = 8;
+       else
+               local_max_msix_vectors = max_msix_vectors;
 
-       if (max_msix_vectors > 0) {
-               ioc->reply_queue_count = min_t(int, max_msix_vectors,
+       if (local_max_msix_vectors > 0) {
+               ioc->reply_queue_count = min_t(int, local_max_msix_vectors,
                        ioc->reply_queue_count);
                ioc->msix_vector_count = ioc->reply_queue_count;
-       } else if (max_msix_vectors == 0)
+       } else if (local_max_msix_vectors == 0)
                goto try_ioapic;
 
        if (ioc->msix_vector_count < ioc->cpu_count)