MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ixgbe_vlan_hw_extend_enable

Function ixgbe_vlan_hw_extend_enable

dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:2106–2138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2104}
2105
2106static void
2107ixgbe_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
2140void
2141ixgbe_vlan_hw_strip_config(struct rte_eth_dev *dev)

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected