mptfc.c (cdd38c5f1ce4398ec58fec95904b75824daab7b5) | mptfc.c (1897c5c7597566264cff4827fd4f02e243f773ca) |
---|---|
1/* 2 * linux/drivers/message/fusion/mptfc.c 3 * For use with LSI PCI chip/adapter(s) 4 * running LSI Fusion MPT (Message Passing Technology) firmware. 5 * 6 * Copyright (c) 1999-2008 LSI Corporation 7 * (mailto:DL-MPTFusionLinux@lsi.com) 8 * --- 317 unchanged lines hidden (view full) --- 326 327 if ((rc = mpt_config(ioc, &cfg)) != 0) 328 break; 329 330 if (hdr.PageLength <= 0) 331 break; 332 333 data_sz = hdr.PageLength * 4; | 1/* 2 * linux/drivers/message/fusion/mptfc.c 3 * For use with LSI PCI chip/adapter(s) 4 * running LSI Fusion MPT (Message Passing Technology) firmware. 5 * 6 * Copyright (c) 1999-2008 LSI Corporation 7 * (mailto:DL-MPTFusionLinux@lsi.com) 8 * --- 317 unchanged lines hidden (view full) --- 326 327 if ((rc = mpt_config(ioc, &cfg)) != 0) 328 break; 329 330 if (hdr.PageLength <= 0) 331 break; 332 333 data_sz = hdr.PageLength * 4; |
334 ppage0_alloc = pci_alloc_consistent(ioc->pcidev, data_sz, 335 &page0_dma); | 334 ppage0_alloc = dma_alloc_coherent(&ioc->pcidev->dev, data_sz, 335 &page0_dma, GFP_KERNEL); |
336 rc = -ENOMEM; 337 if (!ppage0_alloc) 338 break; 339 340 cfg.physAddr = page0_dma; 341 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; 342 343 if ((rc = mpt_config(ioc, &cfg)) == 0) { --- 18 unchanged lines hidden (view full) --- 362 ppage0_alloc->MaxRxFrameSize = 363 le16_to_cpu(ppage0_alloc->MaxRxFrameSize); 364 365 port_id = ppage0_alloc->PortIdentifier; 366 num_targ++; 367 *p_p0 = *ppage0_alloc; /* save data */ 368 *p_pp0++ = p_p0++; /* save addr */ 369 } | 336 rc = -ENOMEM; 337 if (!ppage0_alloc) 338 break; 339 340 cfg.physAddr = page0_dma; 341 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; 342 343 if ((rc = mpt_config(ioc, &cfg)) == 0) { --- 18 unchanged lines hidden (view full) --- 362 ppage0_alloc->MaxRxFrameSize = 363 le16_to_cpu(ppage0_alloc->MaxRxFrameSize); 364 365 port_id = ppage0_alloc->PortIdentifier; 366 num_targ++; 367 *p_p0 = *ppage0_alloc; /* save data */ 368 *p_pp0++ = p_p0++; /* save addr */ 369 } |
370 pci_free_consistent(ioc->pcidev, data_sz, 371 (u8 *) ppage0_alloc, page0_dma); | 370 dma_free_coherent(&ioc->pcidev->dev, data_sz, 371 ppage0_alloc, page0_dma); |
372 if (rc != 0) 373 break; 374 375 } while (port_id <= 0xff0000); 376 377 if (num_targ) { 378 /* sort array */ 379 if (num_targ > 1) --- 378 unchanged lines hidden (view full) --- 758 if ((rc = mpt_config(ioc, &cfg)) != 0) 759 return rc; 760 761 if (hdr.PageLength == 0) 762 return 0; 763 764 data_sz = hdr.PageLength * 4; 765 rc = -ENOMEM; | 372 if (rc != 0) 373 break; 374 375 } while (port_id <= 0xff0000); 376 377 if (num_targ) { 378 /* sort array */ 379 if (num_targ > 1) --- 378 unchanged lines hidden (view full) --- 758 if ((rc = mpt_config(ioc, &cfg)) != 0) 759 return rc; 760 761 if (hdr.PageLength == 0) 762 return 0; 763 764 data_sz = hdr.PageLength * 4; 765 rc = -ENOMEM; |
766 ppage0_alloc = pci_alloc_consistent(ioc->pcidev, data_sz, &page0_dma); | 766 ppage0_alloc = dma_alloc_coherent(&ioc->pcidev->dev, data_sz, 767 &page0_dma, GFP_KERNEL); |
767 if (ppage0_alloc) { 768 769 try_again: 770 memset((u8 *)ppage0_alloc, 0, data_sz); 771 cfg.physAddr = page0_dma; 772 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; 773 774 if ((rc = mpt_config(ioc, &cfg)) == 0) { --- 37 unchanged lines hidden (view full) --- 812 } 813 printk(MYIOC_s_INFO_FMT "Firmware discovery not" 814 " complete.\n", 815 ioc->name); 816 } 817 mptfc_display_port_link_speed(ioc, portnum, pp0dest); 818 } 819 | 768 if (ppage0_alloc) { 769 770 try_again: 771 memset((u8 *)ppage0_alloc, 0, data_sz); 772 cfg.physAddr = page0_dma; 773 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; 774 775 if ((rc = mpt_config(ioc, &cfg)) == 0) { --- 37 unchanged lines hidden (view full) --- 813 } 814 printk(MYIOC_s_INFO_FMT "Firmware discovery not" 815 " complete.\n", 816 ioc->name); 817 } 818 mptfc_display_port_link_speed(ioc, portnum, pp0dest); 819 } 820 |
820 pci_free_consistent(ioc->pcidev, data_sz, (u8 *) ppage0_alloc, page0_dma); | 821 dma_free_coherent(&ioc->pcidev->dev, data_sz, ppage0_alloc, 822 page0_dma); |
821 } 822 823 return rc; 824} 825 826static int 827mptfc_WriteFcPortPage1(MPT_ADAPTER *ioc, int portnum) 828{ --- 70 unchanged lines hidden (view full) --- 899 900start_over: 901 902 if (ioc->fc_data.fc_port_page1[portnum].data == NULL) { 903 data_sz = hdr.PageLength * 4; 904 if (data_sz < sizeof(FCPortPage1_t)) 905 data_sz = sizeof(FCPortPage1_t); 906 | 823 } 824 825 return rc; 826} 827 828static int 829mptfc_WriteFcPortPage1(MPT_ADAPTER *ioc, int portnum) 830{ --- 70 unchanged lines hidden (view full) --- 901 902start_over: 903 904 if (ioc->fc_data.fc_port_page1[portnum].data == NULL) { 905 data_sz = hdr.PageLength * 4; 906 if (data_sz < sizeof(FCPortPage1_t)) 907 data_sz = sizeof(FCPortPage1_t); 908 |
907 page1_alloc = pci_alloc_consistent(ioc->pcidev, 908 data_sz, 909 &page1_dma); | 909 page1_alloc = dma_alloc_coherent(&ioc->pcidev->dev, data_sz, 910 &page1_dma, GFP_KERNEL); |
910 if (!page1_alloc) 911 return -ENOMEM; 912 } 913 else { 914 page1_alloc = ioc->fc_data.fc_port_page1[portnum].data; 915 page1_dma = ioc->fc_data.fc_port_page1[portnum].dma; 916 data_sz = ioc->fc_data.fc_port_page1[portnum].pg_sz; 917 if (hdr.PageLength * 4 > data_sz) { 918 ioc->fc_data.fc_port_page1[portnum].data = NULL; | 911 if (!page1_alloc) 912 return -ENOMEM; 913 } 914 else { 915 page1_alloc = ioc->fc_data.fc_port_page1[portnum].data; 916 page1_dma = ioc->fc_data.fc_port_page1[portnum].dma; 917 data_sz = ioc->fc_data.fc_port_page1[portnum].pg_sz; 918 if (hdr.PageLength * 4 > data_sz) { 919 ioc->fc_data.fc_port_page1[portnum].data = NULL; |
919 pci_free_consistent(ioc->pcidev, data_sz, (u8 *) 920 page1_alloc, page1_dma); | 920 dma_free_coherent(&ioc->pcidev->dev, data_sz, 921 page1_alloc, page1_dma); |
921 goto start_over; 922 } 923 } 924 925 cfg.physAddr = page1_dma; 926 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; 927 928 if ((rc = mpt_config(ioc, &cfg)) == 0) { 929 ioc->fc_data.fc_port_page1[portnum].data = page1_alloc; 930 ioc->fc_data.fc_port_page1[portnum].pg_sz = data_sz; 931 ioc->fc_data.fc_port_page1[portnum].dma = page1_dma; 932 } 933 else { 934 ioc->fc_data.fc_port_page1[portnum].data = NULL; | 922 goto start_over; 923 } 924 } 925 926 cfg.physAddr = page1_dma; 927 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; 928 929 if ((rc = mpt_config(ioc, &cfg)) == 0) { 930 ioc->fc_data.fc_port_page1[portnum].data = page1_alloc; 931 ioc->fc_data.fc_port_page1[portnum].pg_sz = data_sz; 932 ioc->fc_data.fc_port_page1[portnum].dma = page1_dma; 933 } 934 else { 935 ioc->fc_data.fc_port_page1[portnum].data = NULL; |
935 pci_free_consistent(ioc->pcidev, data_sz, (u8 *) 936 page1_alloc, page1_dma); | 936 dma_free_coherent(&ioc->pcidev->dev, data_sz, page1_alloc, 937 page1_dma); |
937 } 938 939 return rc; 940} 941 942static void 943mptfc_SetFcPortPage1_defaults(MPT_ADAPTER *ioc) 944{ --- 564 unchanged lines hidden (view full) --- 1509 1510 list_for_each_entry_safe(p, n, &ioc->fc_rports, list) { 1511 list_del(&p->list); 1512 kfree(p); 1513 } 1514 1515 for (ii=0; ii<ioc->facts.NumberOfPorts; ii++) { 1516 if (ioc->fc_data.fc_port_page1[ii].data) { | 938 } 939 940 return rc; 941} 942 943static void 944mptfc_SetFcPortPage1_defaults(MPT_ADAPTER *ioc) 945{ --- 564 unchanged lines hidden (view full) --- 1510 1511 list_for_each_entry_safe(p, n, &ioc->fc_rports, list) { 1512 list_del(&p->list); 1513 kfree(p); 1514 } 1515 1516 for (ii=0; ii<ioc->facts.NumberOfPorts; ii++) { 1517 if (ioc->fc_data.fc_port_page1[ii].data) { |
1517 pci_free_consistent(ioc->pcidev, 1518 ioc->fc_data.fc_port_page1[ii].pg_sz, 1519 (u8 *) ioc->fc_data.fc_port_page1[ii].data, 1520 ioc->fc_data.fc_port_page1[ii].dma); | 1518 dma_free_coherent(&ioc->pcidev->dev, 1519 ioc->fc_data.fc_port_page1[ii].pg_sz, 1520 ioc->fc_data.fc_port_page1[ii].data, 1521 ioc->fc_data.fc_port_page1[ii].dma); |
1521 ioc->fc_data.fc_port_page1[ii].data = NULL; 1522 } 1523 } 1524 1525 scsi_remove_host(ioc->sh); 1526 1527 mptscsih_remove(pdev); 1528} --- 23 unchanged lines hidden --- | 1522 ioc->fc_data.fc_port_page1[ii].data = NULL; 1523 } 1524 } 1525 1526 scsi_remove_host(ioc->sh); 1527 1528 mptscsih_remove(pdev); 1529} --- 23 unchanged lines hidden --- |