@ -9317,51 +9317,40 @@ static void ipr_wait_for_pci_err_recovery(struct ipr_ioa_cfg *ioa_cfg)
static int ipr_enable_msix ( struct ipr_ioa_cfg * ioa_cfg )
{
struct msix_entry entries [ IPR_MAX_MSIX_VECTORS ] ;
int i , err , vectors ;
int i , vectors ;
for ( i = 0 ; i < ARRAY_SIZE ( entries ) ; + + i )
entries [ i ] . entry = i ;
vectors = ipr_number_of_msix ;
while ( ( err = pci_enable_msix ( ioa_cfg - > pdev , entries , vectors ) ) > 0 )
vectors = err ;
if ( err < 0 ) {
vectors = pci_enable_msix_range ( ioa_cfg - > pdev ,
entries , 1 , ipr_number_of_msix ) ;
if ( vectors < 0 ) {
ipr_wait_for_pci_err_recovery ( ioa_cfg ) ;
return err ;
return vectors ;
}
if ( ! err ) {
for ( i = 0 ; i < vectors ; i + + )
ioa_cfg - > vectors_info [ i ] . vec = entries [ i ] . vector ;
ioa_cfg - > nvectors = vectors ;
}
for ( i = 0 ; i < vectors ; i + + )
ioa_cfg - > vectors_info [ i ] . vec = entries [ i ] . vector ;
ioa_cfg - > nvectors = vectors ;
return err ;
return 0 ;
}
static int ipr_enable_msi ( struct ipr_ioa_cfg * ioa_cfg )
{
int i , err , vectors ;
int i , vectors ;
vectors = ipr_number_of_msix ;
while ( ( err = pci_enable_msi_block ( ioa_cfg - > pdev , vectors ) ) > 0 )
vectors = err ;
if ( err < 0 ) {
vectors = pci_enable_msi_range ( ioa_cfg - > pdev , 1 , ipr_number_of_msix ) ;
if ( vectors < 0 ) {
ipr_wait_for_pci_err_recovery ( ioa_cfg ) ;
return err ;
return vectors ;
}
if ( ! err ) {
for ( i = 0 ; i < vectors ; i + + )
ioa_cfg - > vectors_info [ i ] . vec = ioa_cfg - > pdev - > irq + i ;
ioa_cfg - > nvectors = vectors ;
}
for ( i = 0 ; i < vectors ; i + + )
ioa_cfg - > vectors_info [ i ] . vec = ioa_cfg - > pdev - > irq + i ;
ioa_cfg - > nvectors = vectors ;
return err ;
return 0 ;
}
static void name_msi_vectors ( struct ipr_ioa_cfg * ioa_cfg )
@ -9426,7 +9415,7 @@ static irqreturn_t ipr_test_intr(int irq, void *devp)
* ipr_test_msi - Test for Message Signaled Interrupt ( MSI ) support .
* @ pdev : PCI device struct
*
* Description : The return value from pci_enable_msi ( ) can not always be
* Description : The return value from pci_enable_msi_range ( ) can not always be
* trusted . This routine sets up and initiates a test interrupt to determine
* if the interrupt is received via the ipr_test_intr ( ) service routine .
* If the tests fails , the driver will fall back to LSI .