src/dpdk/drivers/net/i40e/i40e_ethdev.c
static int
i40e_vsi_config_outer_vlan_stripping(struct i40e_vsi *vsi, bool on)
{
	struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
	int ret = I40E_SUCCESS;
	uint32_t reg;

	if (vsi->vsi_id >= I40E_MAX_NUM_VSIS) {
		PMD_DRV_LOG(ERR, "VSI ID exceeds the maximum");
		return -EINVAL;
	}

	/* Configure for outer VLAN RX stripping */
	reg = I40E_READ_REG(hw, I40E_VSI_TSR(vsi->vsi_id));

	if (on)
		reg |= I40E_VSI_TSR_QINQ_STRIP;
	else
		reg &= ~I40E_VSI_TSR_QINQ_STRIP;

	ret = i40e_aq_debug_write_register(hw,
						   I40E_VSI_TSR(vsi->vsi_id),
						   reg, NULL);
	if (ret < 0) {
		PMD_DRV_LOG(ERR, "Failed to update VSI_TSR[%d]",
				    vsi->vsi_id);
		return I40E_ERR_CONFIG;
	}

	return ret;
}
/* Configure outer vlan stripping on or off in QinQ mode */
Configure outer vlan stripping on or off in QinQ mode
Configure outer vlan stripping on or off in QinQ mode
static int
i40e_vsi_config_outer_vlan_stripping(struct i40e_vsi *vsi, bool on)
{
	struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
	int ret = I40E_SUCCESS;
	uint32_t reg;
	if (vsi->vsi_id >= I40E_MAX_NUM_VSIS) {
		PMD_DRV_LOG(ERR, "VSI ID exceeds the maximum");
		return -EINVAL;
	}
	reg = I40E_READ_REG(hw, I40E_VSI_TSR(vsi->vsi_id));
	if (on)
		reg |= I40E_VSI_TSR_QINQ_STRIP;
	else
		reg &= ~I40E_VSI_TSR_QINQ_STRIP;
	ret = i40e_aq_debug_write_register(hw,
						   I40E_VSI_TSR(vsi->vsi_id),
						   reg, NULL);
	if (ret < 0) {
		PMD_DRV_LOG(ERR, "Failed to update VSI_TSR[%d]",
				    vsi->vsi_id);
		return I40E_ERR_CONFIG;
	}
	return ret;
}
static int i40e_vsi_config_outer_vlan_stripping ( struct i40e_vsi * vsi , bool on ) { struct i40e_hw * hw = I40E_VSI_TO_HW ( vsi ) ; int ret = I40E_SUCCESS ; uint32_t reg ; if ( vsi -> vsi_id >= I40E_MAX_NUM_VSIS ) { PMD_DRV_LOG ( ERR , " " ) ; return - EINVAL ; } reg = I40E_READ_REG ( hw , I40E_VSI_TSR ( vsi -> vsi_id ) ) ; if ( on ) reg |= I40E_VSI_TSR_QINQ_STRIP ; else reg &= ~ I40E_VSI_TSR_QINQ_STRIP ; ret = i40e_aq_debug_write_register ( hw , I40E_VSI_TSR ( vsi -> vsi_id ) , reg , NULL ) ; if ( ret < 0 ) { PMD_DRV_LOG ( ERR , " " , vsi -> vsi_id ) ; return I40E_ERR_CONFIG ; } return ret ; }
Configure outer vlan stripping on or off in QinQ mode
Configure outer vlan stripping on or off in QinQ mode
/* Configure for outer VLAN RX stripping */