aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb/igb_main.c
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2010-03-22 10:08:06 -0400
committerDavid S. Miller <davem@davemloft.net>2010-03-22 21:30:05 -0400
commitd2ba2ed8fe3aa796a671a6922119d7171bb49515 (patch)
tree8265da058e55fb264bdd94b1e41ed6ac9d8cbf03 /drivers/net/igb/igb_main.c
parent52a1dd4d15cc28da5d3e9bfb1526c314d65fdff8 (diff)
igb: add support for Intel I350 Gigabit Network Connection
This patch adds support for the the I350 Gigabit network connection which is the follow-on part to the 82580. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> CC: James Hearn <james.r.hearn@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/igb/igb_main.c')
-rw-r--r--drivers/net/igb/igb_main.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 3664915e3f7d..2501c5d580b8 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -61,6 +61,10 @@ static const struct e1000_info *igb_info_tbl[] = {
61}; 61};
62 62
63static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = { 63static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = {
64 { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_COPPER), board_82575 },
65 { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_FIBER), board_82575 },
66 { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_SERDES), board_82575 },
67 { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_SGMII), board_82575 },
64 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_COPPER), board_82575 }, 68 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_COPPER), board_82575 },
65 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_FIBER), board_82575 }, 69 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_FIBER), board_82575 },
66 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_SERDES), board_82575 }, 70 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_SERDES), board_82575 },
@@ -327,6 +331,7 @@ static void igb_cache_ring_register(struct igb_adapter *adapter)
327 } 331 }
328 case e1000_82575: 332 case e1000_82575:
329 case e1000_82580: 333 case e1000_82580:
334 case e1000_i350:
330 default: 335 default:
331 for (; i < adapter->num_rx_queues; i++) 336 for (; i < adapter->num_rx_queues; i++)
332 adapter->rx_ring[i]->reg_idx = rbase_offset + i; 337 adapter->rx_ring[i]->reg_idx = rbase_offset + i;
@@ -470,6 +475,7 @@ static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector)
470 q_vector->eims_value = 1 << msix_vector; 475 q_vector->eims_value = 1 << msix_vector;
471 break; 476 break;
472 case e1000_82580: 477 case e1000_82580:
478 case e1000_i350:
473 /* 82580 uses the same table-based approach as 82576 but has fewer 479 /* 82580 uses the same table-based approach as 82576 but has fewer
474 entries as a result we carry over for queues greater than 4. */ 480 entries as a result we carry over for queues greater than 4. */
475 if (rx_queue > IGB_N0_QUEUE) { 481 if (rx_queue > IGB_N0_QUEUE) {
@@ -550,6 +556,7 @@ static void igb_configure_msix(struct igb_adapter *adapter)
550 556
551 case e1000_82576: 557 case e1000_82576:
552 case e1000_82580: 558 case e1000_82580:
559 case e1000_i350:
553 /* Turn on MSI-X capability first, or our settings 560 /* Turn on MSI-X capability first, or our settings
554 * won't stick. And it will take days to debug. */ 561 * won't stick. And it will take days to debug. */
555 wr32(E1000_GPIE, E1000_GPIE_MSIX_MODE | 562 wr32(E1000_GPIE, E1000_GPIE_MSIX_MODE |
@@ -1256,6 +1263,7 @@ void igb_reset(struct igb_adapter *adapter)
1256 * To take effect CTRL.RST is required. 1263 * To take effect CTRL.RST is required.
1257 */ 1264 */
1258 switch (mac->type) { 1265 switch (mac->type) {
1266 case e1000_i350:
1259 case e1000_82580: 1267 case e1000_82580:
1260 pba = rd32(E1000_RXPBS); 1268 pba = rd32(E1000_RXPBS);
1261 pba = igb_rxpbs_adjust_82580(pba); 1269 pba = igb_rxpbs_adjust_82580(pba);
@@ -1828,6 +1836,7 @@ static void igb_init_hw_timer(struct igb_adapter *adapter)
1828 struct e1000_hw *hw = &adapter->hw; 1836 struct e1000_hw *hw = &adapter->hw;
1829 1837
1830 switch (hw->mac.type) { 1838 switch (hw->mac.type) {
1839 case e1000_i350:
1831 case e1000_82580: 1840 case e1000_82580:
1832 memset(&adapter->cycles, 0, sizeof(adapter->cycles)); 1841 memset(&adapter->cycles, 0, sizeof(adapter->cycles));
1833 adapter->cycles.read = igb_read_clock; 1842 adapter->cycles.read = igb_read_clock;
@@ -2341,6 +2350,7 @@ static void igb_setup_mrqc(struct igb_adapter *adapter)
2341 if (adapter->vfs_allocated_count) { 2350 if (adapter->vfs_allocated_count) {
2342 /* 82575 and 82576 supports 2 RSS queues for VMDq */ 2351 /* 82575 and 82576 supports 2 RSS queues for VMDq */
2343 switch (hw->mac.type) { 2352 switch (hw->mac.type) {
2353 case e1000_i350:
2344 case e1000_82580: 2354 case e1000_82580:
2345 num_rx_queues = 1; 2355 num_rx_queues = 1;
2346 shift = 0; 2356 shift = 0;
@@ -6152,6 +6162,8 @@ static void igb_vmm_control(struct igb_adapter *adapter)
6152 reg = rd32(E1000_RPLOLR); 6162 reg = rd32(E1000_RPLOLR);
6153 reg |= E1000_RPLOLR_STRVLAN; 6163 reg |= E1000_RPLOLR_STRVLAN;
6154 wr32(E1000_RPLOLR, reg); 6164 wr32(E1000_RPLOLR, reg);
6165 case e1000_i350:
6166 /* none of the above registers are supported by i350 */
6155 break; 6167 break;
6156 } 6168 }
6157 6169