diff options
| -rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 2d0f618b4a9d..5bd9e6bf6f2f 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | 44 | ||
| 45 | #include "ixgbe.h" | 45 | #include "ixgbe.h" |
| 46 | #include "ixgbe_common.h" | 46 | #include "ixgbe_common.h" |
| 47 | #include "ixgbe_dcb_82599.h" | ||
| 47 | 48 | ||
| 48 | char ixgbe_driver_name[] = "ixgbe"; | 49 | char ixgbe_driver_name[] = "ixgbe"; |
| 49 | static const char ixgbe_driver_string[] = | 50 | static const char ixgbe_driver_string[] = |
| @@ -462,19 +463,23 @@ static void ixgbe_update_tx_dca(struct ixgbe_adapter *adapter, | |||
| 462 | u32 txctrl; | 463 | u32 txctrl; |
| 463 | int cpu = get_cpu(); | 464 | int cpu = get_cpu(); |
| 464 | int q = tx_ring - adapter->tx_ring; | 465 | int q = tx_ring - adapter->tx_ring; |
| 466 | struct ixgbe_hw *hw = &adapter->hw; | ||
| 465 | 467 | ||
| 466 | if (tx_ring->cpu != cpu) { | 468 | if (tx_ring->cpu != cpu) { |
| 467 | txctrl = IXGBE_READ_REG(&adapter->hw, IXGBE_DCA_TXCTRL(q)); | ||
| 468 | if (adapter->hw.mac.type == ixgbe_mac_82598EB) { | 469 | if (adapter->hw.mac.type == ixgbe_mac_82598EB) { |
| 470 | txctrl = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL(q)); | ||
| 469 | txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK; | 471 | txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK; |
| 470 | txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu); | 472 | txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu); |
| 473 | txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN; | ||
| 474 | IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL(q), txctrl); | ||
| 471 | } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) { | 475 | } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) { |
| 476 | txctrl = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL_82599(q)); | ||
| 472 | txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK_82599; | 477 | txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK_82599; |
| 473 | txctrl |= (dca3_get_tag(&adapter->pdev->dev, cpu) << | 478 | txctrl |= (dca3_get_tag(&adapter->pdev->dev, cpu) << |
| 474 | IXGBE_DCA_TXCTRL_CPUID_SHIFT_82599); | 479 | IXGBE_DCA_TXCTRL_CPUID_SHIFT_82599); |
| 480 | txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN; | ||
| 481 | IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL_82599(q), txctrl); | ||
| 475 | } | 482 | } |
| 476 | txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN; | ||
| 477 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_DCA_TXCTRL(q), txctrl); | ||
| 478 | tx_ring->cpu = cpu; | 483 | tx_ring->cpu = cpu; |
| 479 | } | 484 | } |
| 480 | put_cpu(); | 485 | put_cpu(); |
| @@ -1963,11 +1968,25 @@ static void ixgbe_configure_tx(struct ixgbe_adapter *adapter) | |||
| 1963 | break; | 1968 | break; |
| 1964 | } | 1969 | } |
| 1965 | } | 1970 | } |
| 1971 | |||
| 1966 | if (hw->mac.type == ixgbe_mac_82599EB) { | 1972 | if (hw->mac.type == ixgbe_mac_82599EB) { |
| 1973 | u32 rttdcs; | ||
| 1974 | |||
| 1975 | /* disable the arbiter while setting MTQC */ | ||
| 1976 | rttdcs = IXGBE_READ_REG(hw, IXGBE_RTTDCS); | ||
| 1977 | rttdcs |= IXGBE_RTTDCS_ARBDIS; | ||
| 1978 | IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs); | ||
| 1979 | |||
| 1967 | /* We enable 8 traffic classes, DCB only */ | 1980 | /* We enable 8 traffic classes, DCB only */ |
| 1968 | if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) | 1981 | if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) |
| 1969 | IXGBE_WRITE_REG(hw, IXGBE_MTQC, (IXGBE_MTQC_RT_ENA | | 1982 | IXGBE_WRITE_REG(hw, IXGBE_MTQC, (IXGBE_MTQC_RT_ENA | |
| 1970 | IXGBE_MTQC_8TC_8TQ)); | 1983 | IXGBE_MTQC_8TC_8TQ)); |
| 1984 | else | ||
| 1985 | IXGBE_WRITE_REG(hw, IXGBE_MTQC, IXGBE_MTQC_64Q_1PB); | ||
| 1986 | |||
| 1987 | /* re-eable the arbiter */ | ||
| 1988 | rttdcs &= ~IXGBE_RTTDCS_ARBDIS; | ||
| 1989 | IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs); | ||
| 1971 | } | 1990 | } |
| 1972 | } | 1991 | } |
| 1973 | 1992 | ||
