diff options
-rw-r--r-- | drivers/net/e1000/e1000_ethtool.c | 49 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 41 |
2 files changed, 56 insertions, 34 deletions
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index f9ac9a87ffab..6a3893acfe04 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c | |||
@@ -483,10 +483,12 @@ static int e1000_get_eeprom(struct net_device *netdev, | |||
483 | last_word - first_word + 1, | 483 | last_word - first_word + 1, |
484 | eeprom_buff); | 484 | eeprom_buff); |
485 | else { | 485 | else { |
486 | for (i = 0; i < last_word - first_word + 1; i++) | 486 | for (i = 0; i < last_word - first_word + 1; i++) { |
487 | if ((ret_val = e1000_read_eeprom(hw, first_word + i, 1, | 487 | ret_val = e1000_read_eeprom(hw, first_word + i, 1, |
488 | &eeprom_buff[i]))) | 488 | &eeprom_buff[i]); |
489 | if (ret_val) | ||
489 | break; | 490 | break; |
491 | } | ||
490 | } | 492 | } |
491 | 493 | ||
492 | /* Device's eeprom is always little-endian, word addressable */ | 494 | /* Device's eeprom is always little-endian, word addressable */ |
@@ -669,9 +671,11 @@ static int e1000_set_ringparam(struct net_device *netdev, | |||
669 | 671 | ||
670 | if (netif_running(adapter->netdev)) { | 672 | if (netif_running(adapter->netdev)) { |
671 | /* Try to get new resources before deleting old */ | 673 | /* Try to get new resources before deleting old */ |
672 | if ((err = e1000_setup_all_rx_resources(adapter))) | 674 | err = e1000_setup_all_rx_resources(adapter); |
675 | if (err) | ||
673 | goto err_setup_rx; | 676 | goto err_setup_rx; |
674 | if ((err = e1000_setup_all_tx_resources(adapter))) | 677 | err = e1000_setup_all_tx_resources(adapter); |
678 | if (err) | ||
675 | goto err_setup_tx; | 679 | goto err_setup_tx; |
676 | 680 | ||
677 | /* save the new, restore the old in order to free it, | 681 | /* save the new, restore the old in order to free it, |
@@ -685,7 +689,8 @@ static int e1000_set_ringparam(struct net_device *netdev, | |||
685 | kfree(rx_old); | 689 | kfree(rx_old); |
686 | adapter->rx_ring = rxdr; | 690 | adapter->rx_ring = rxdr; |
687 | adapter->tx_ring = txdr; | 691 | adapter->tx_ring = txdr; |
688 | if ((err = e1000_up(adapter))) | 692 | err = e1000_up(adapter); |
693 | if (err) | ||
689 | goto err_setup; | 694 | goto err_setup; |
690 | } | 695 | } |
691 | 696 | ||
@@ -1057,17 +1062,17 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter) | |||
1057 | if (!txdr->count) | 1062 | if (!txdr->count) |
1058 | txdr->count = E1000_DEFAULT_TXD; | 1063 | txdr->count = E1000_DEFAULT_TXD; |
1059 | 1064 | ||
1060 | if (!(txdr->buffer_info = kcalloc(txdr->count, | 1065 | txdr->buffer_info = kcalloc(txdr->count, sizeof(struct e1000_buffer), |
1061 | sizeof(struct e1000_buffer), | 1066 | GFP_KERNEL); |
1062 | GFP_KERNEL))) { | 1067 | if (!txdr->buffer_info) { |
1063 | ret_val = 1; | 1068 | ret_val = 1; |
1064 | goto err_nomem; | 1069 | goto err_nomem; |
1065 | } | 1070 | } |
1066 | 1071 | ||
1067 | txdr->size = txdr->count * sizeof(struct e1000_tx_desc); | 1072 | txdr->size = txdr->count * sizeof(struct e1000_tx_desc); |
1068 | txdr->size = ALIGN(txdr->size, 4096); | 1073 | txdr->size = ALIGN(txdr->size, 4096); |
1069 | if (!(txdr->desc = pci_alloc_consistent(pdev, txdr->size, | 1074 | txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma); |
1070 | &txdr->dma))) { | 1075 | if (!txdr->desc) { |
1071 | ret_val = 2; | 1076 | ret_val = 2; |
1072 | goto err_nomem; | 1077 | goto err_nomem; |
1073 | } | 1078 | } |
@@ -1088,7 +1093,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter) | |||
1088 | struct sk_buff *skb; | 1093 | struct sk_buff *skb; |
1089 | unsigned int size = 1024; | 1094 | unsigned int size = 1024; |
1090 | 1095 | ||
1091 | if (!(skb = alloc_skb(size, GFP_KERNEL))) { | 1096 | skb = alloc_skb(size, GFP_KERNEL); |
1097 | if (!skb) { | ||
1092 | ret_val = 3; | 1098 | ret_val = 3; |
1093 | goto err_nomem; | 1099 | goto err_nomem; |
1094 | } | 1100 | } |
@@ -1111,15 +1117,16 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter) | |||
1111 | if (!rxdr->count) | 1117 | if (!rxdr->count) |
1112 | rxdr->count = E1000_DEFAULT_RXD; | 1118 | rxdr->count = E1000_DEFAULT_RXD; |
1113 | 1119 | ||
1114 | if (!(rxdr->buffer_info = kcalloc(rxdr->count, | 1120 | rxdr->buffer_info = kcalloc(rxdr->count, sizeof(struct e1000_buffer), |
1115 | sizeof(struct e1000_buffer), | 1121 | GFP_KERNEL); |
1116 | GFP_KERNEL))) { | 1122 | if (!rxdr->buffer_info) { |
1117 | ret_val = 4; | 1123 | ret_val = 4; |
1118 | goto err_nomem; | 1124 | goto err_nomem; |
1119 | } | 1125 | } |
1120 | 1126 | ||
1121 | rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc); | 1127 | rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc); |
1122 | if (!(rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma))) { | 1128 | rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma); |
1129 | if (!rxdr->desc) { | ||
1123 | ret_val = 5; | 1130 | ret_val = 5; |
1124 | goto err_nomem; | 1131 | goto err_nomem; |
1125 | } | 1132 | } |
@@ -1142,8 +1149,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter) | |||
1142 | struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i); | 1149 | struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i); |
1143 | struct sk_buff *skb; | 1150 | struct sk_buff *skb; |
1144 | 1151 | ||
1145 | if (!(skb = alloc_skb(E1000_RXBUFFER_2048 + NET_IP_ALIGN, | 1152 | skb = alloc_skb(E1000_RXBUFFER_2048 + NET_IP_ALIGN, GFP_KERNEL); |
1146 | GFP_KERNEL))) { | 1153 | if (!skb) { |
1147 | ret_val = 6; | 1154 | ret_val = 6; |
1148 | goto err_nomem; | 1155 | goto err_nomem; |
1149 | } | 1156 | } |
@@ -1564,9 +1571,11 @@ static int e1000_loopback_test(struct e1000_adapter *adapter, u64 *data) | |||
1564 | goto out; | 1571 | goto out; |
1565 | } | 1572 | } |
1566 | 1573 | ||
1567 | if ((*data = e1000_setup_desc_rings(adapter))) | 1574 | *data = e1000_setup_desc_rings(adapter); |
1575 | if (*data) | ||
1568 | goto out; | 1576 | goto out; |
1569 | if ((*data = e1000_setup_loopback_test(adapter))) | 1577 | *data = e1000_setup_loopback_test(adapter); |
1578 | if (*data) | ||
1570 | goto err_loopback; | 1579 | goto err_loopback; |
1571 | *data = e1000_run_loopback_test(adapter); | 1580 | *data = e1000_run_loopback_test(adapter); |
1572 | e1000_loopback_cleanup(adapter); | 1581 | e1000_loopback_cleanup(adapter); |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index cb44fded47ed..0de2006e8b97 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -898,22 +898,28 @@ static int __devinit e1000_probe(struct pci_dev *pdev, | |||
898 | u16 eeprom_apme_mask = E1000_EEPROM_APME; | 898 | u16 eeprom_apme_mask = E1000_EEPROM_APME; |
899 | DECLARE_MAC_BUF(mac); | 899 | DECLARE_MAC_BUF(mac); |
900 | 900 | ||
901 | if ((err = pci_enable_device(pdev))) | 901 | err = pci_enable_device(pdev); |
902 | if (err) | ||
902 | return err; | 903 | return err; |
903 | 904 | ||
904 | if (!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK)) && | 905 | if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK) && |
905 | !(err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))) { | 906 | !pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) { |
906 | pci_using_dac = 1; | 907 | pci_using_dac = 1; |
907 | } else { | 908 | } else { |
908 | if ((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK)) && | 909 | err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); |
909 | (err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK))) { | 910 | if (err) { |
910 | E1000_ERR("No usable DMA configuration, aborting\n"); | 911 | err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); |
911 | goto err_dma; | 912 | if (err) { |
913 | E1000_ERR("No usable DMA configuration, " | ||
914 | "aborting\n"); | ||
915 | goto err_dma; | ||
916 | } | ||
912 | } | 917 | } |
913 | pci_using_dac = 0; | 918 | pci_using_dac = 0; |
914 | } | 919 | } |
915 | 920 | ||
916 | if ((err = pci_request_regions(pdev, e1000_driver_name))) | 921 | err = pci_request_regions(pdev, e1000_driver_name); |
922 | if (err) | ||
917 | goto err_pci_reg; | 923 | goto err_pci_reg; |
918 | 924 | ||
919 | pci_set_master(pdev); | 925 | pci_set_master(pdev); |
@@ -975,7 +981,8 @@ static int __devinit e1000_probe(struct pci_dev *pdev, | |||
975 | 981 | ||
976 | /* setup the private structure */ | 982 | /* setup the private structure */ |
977 | 983 | ||
978 | if ((err = e1000_sw_init(adapter))) | 984 | err = e1000_sw_init(adapter); |
985 | if (err) | ||
979 | goto err_sw_init; | 986 | goto err_sw_init; |
980 | 987 | ||
981 | err = -EIO; | 988 | err = -EIO; |
@@ -1182,7 +1189,8 @@ static int __devinit e1000_probe(struct pci_dev *pdev, | |||
1182 | netif_stop_queue(netdev); | 1189 | netif_stop_queue(netdev); |
1183 | 1190 | ||
1184 | strcpy(netdev->name, "eth%d"); | 1191 | strcpy(netdev->name, "eth%d"); |
1185 | if ((err = register_netdev(netdev))) | 1192 | err = register_netdev(netdev); |
1193 | if (err) | ||
1186 | goto err_register; | 1194 | goto err_register; |
1187 | 1195 | ||
1188 | DPRINTK(PROBE, INFO, "Intel(R) PRO/1000 Network Connection\n"); | 1196 | DPRINTK(PROBE, INFO, "Intel(R) PRO/1000 Network Connection\n"); |
@@ -4400,7 +4408,8 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, | |||
4400 | } | 4408 | } |
4401 | 4409 | ||
4402 | for (j = 0; j < adapter->rx_ps_pages; j++) { | 4410 | for (j = 0; j < adapter->rx_ps_pages; j++) { |
4403 | if (!(length= le16_to_cpu(rx_desc->wb.upper.length[j]))) | 4411 | length = le16_to_cpu(rx_desc->wb.upper.length[j]); |
4412 | if (!length) | ||
4404 | break; | 4413 | break; |
4405 | pci_unmap_page(pdev, ps_page_dma->ps_page_dma[j], | 4414 | pci_unmap_page(pdev, ps_page_dma->ps_page_dma[j], |
4406 | PAGE_SIZE, PCI_DMA_FROMDEVICE); | 4415 | PAGE_SIZE, PCI_DMA_FROMDEVICE); |
@@ -5153,7 +5162,8 @@ static int e1000_resume(struct pci_dev *pdev) | |||
5153 | 5162 | ||
5154 | pci_set_power_state(pdev, PCI_D0); | 5163 | pci_set_power_state(pdev, PCI_D0); |
5155 | pci_restore_state(pdev); | 5164 | pci_restore_state(pdev); |
5156 | if ((err = pci_enable_device(pdev))) { | 5165 | err = pci_enable_device(pdev); |
5166 | if (err) { | ||
5157 | printk(KERN_ERR "e1000: Cannot enable PCI device from suspend\n"); | 5167 | printk(KERN_ERR "e1000: Cannot enable PCI device from suspend\n"); |
5158 | return err; | 5168 | return err; |
5159 | } | 5169 | } |
@@ -5162,8 +5172,11 @@ static int e1000_resume(struct pci_dev *pdev) | |||
5162 | pci_enable_wake(pdev, PCI_D3hot, 0); | 5172 | pci_enable_wake(pdev, PCI_D3hot, 0); |
5163 | pci_enable_wake(pdev, PCI_D3cold, 0); | 5173 | pci_enable_wake(pdev, PCI_D3cold, 0); |
5164 | 5174 | ||
5165 | if (netif_running(netdev) && (err = e1000_request_irq(adapter))) | 5175 | if (netif_running(netdev)) { |
5166 | return err; | 5176 | err = e1000_request_irq(adapter); |
5177 | if (err) | ||
5178 | return err; | ||
5179 | } | ||
5167 | 5180 | ||
5168 | e1000_power_up_phy(adapter); | 5181 | e1000_power_up_phy(adapter); |
5169 | e1000_reset(adapter); | 5182 | e1000_reset(adapter); |