summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2019-12-05 19:00:02 +0800
committerQiuwen Lu <[email protected]>2019-12-05 19:00:02 +0800
commit75ee84472bd4b88e1b3588149df54702ea59a1f9 (patch)
tree956337d9c5981a41335975a99b225d2e4127de52
parent7b8ad9ec419ff36038f5af4cf7b9f7e047c0d7cb (diff)
修正PVID的默认行为。v4.3.16-20191206
* 原实现在PVID设置时,无论报文设置的VLAN是多少,均改写成PVID; * 现修正,当报文VLAN没有设置时,才将报文的VLAN设置成PVID。
-rw-r--r--service/src/fwd.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/service/src/fwd.c b/service/src/fwd.c
index 3f0ecd7..8661559 100644
--- a/service/src/fwd.c
+++ b/service/src/fwd.c
@@ -175,17 +175,17 @@ void sw_forward_vp(struct sc_main * sc, struct fwd_rule * fwd_rule, unsigned int
{
if (phydev_to_info->pvidmode == MR_DEV_PVID_BY_HW_OFFLOAD)
{
- for(unsigned int i = 0; i < rx_nr_mbufs; i++)
+ for (unsigned int i = 0; i < rx_nr_mbufs; i++)
{
- mbufs[i]->vlan_tci = phydev_to_info->pvid;
+ mbufs[i]->vlan_tci = mbufs[i]->vlan_tci == 0 ? phydev_to_info->pvid : mbufs[i]->vlan_tci;
mbufs[i]->ol_flags |= PKT_TX_VLAN_PKT;
}
}
else if (phydev_to_info->pvidmode == MR_DEV_PVID_BY_SW)
{
- for(unsigned int i = 0; i < rx_nr_mbufs; i++)
+ for (unsigned int i = 0; i < rx_nr_mbufs; i++)
{
- mbufs[i]->vlan_tci = phydev_to_info->pvid;
+ mbufs[i]->vlan_tci = mbufs[i]->vlan_tci == 0 ? phydev_to_info->pvid : mbufs[i]->vlan_tci;
rte_vlan_insert(&mbufs[i]);
}
}