| 2104 | } |
| 2105 | |
| 2106 | static void |
| 2107 | ixgbe_vlan_hw_extend_enable(struct rte_eth_dev *dev) |
| 2108 | { |
| 2109 | struct ixgbe_hw *hw = |
| 2110 | IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); |
| 2111 | uint32_t ctrl; |
| 2112 | |
| 2113 | PMD_INIT_FUNC_TRACE(); |
| 2114 | |
| 2115 | /* DMATXCTRL: Geric Double VLAN Enable */ |
| 2116 | ctrl = IXGBE_READ_REG(hw, IXGBE_DMATXCTL); |
| 2117 | ctrl |= IXGBE_DMATXCTL_GDV; |
| 2118 | IXGBE_WRITE_REG(hw, IXGBE_DMATXCTL, ctrl); |
| 2119 | |
| 2120 | /* CTRL_EXT: Global Double VLAN Enable */ |
| 2121 | ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT); |
| 2122 | ctrl |= IXGBE_EXTENDED_VLAN; |
| 2123 | IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl); |
| 2124 | |
| 2125 | /* Clear pooling mode of PFVTCTL. It's required by X550. */ |
| 2126 | if (hw->mac.type == ixgbe_mac_X550 || |
| 2127 | hw->mac.type == ixgbe_mac_X550EM_x || |
| 2128 | hw->mac.type == ixgbe_mac_X550EM_a) { |
| 2129 | ctrl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); |
| 2130 | ctrl &= ~IXGBE_VT_CTL_POOLING_MODE_MASK; |
| 2131 | IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, ctrl); |
| 2132 | } |
| 2133 | |
| 2134 | /* |
| 2135 | * VET EXT field in the EXVET register = 0x8100 by default |
| 2136 | * So no need to change. Same to VT field of DMATXCTL register |
| 2137 | */ |
| 2138 | } |
| 2139 | |
| 2140 | void |
| 2141 | ixgbe_vlan_hw_strip_config(struct rte_eth_dev *dev) |
no outgoing calls
no test coverage detected