diff options
| author | Qiuwen Lu <[email protected]> | 2019-12-05 19:00:02 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2019-12-05 19:00:02 +0800 |
| commit | 75ee84472bd4b88e1b3588149df54702ea59a1f9 (patch) | |
| tree | 956337d9c5981a41335975a99b225d2e4127de52 | |
| parent | 7b8ad9ec419ff36038f5af4cf7b9f7e047c0d7cb (diff) | |
修正PVID的默认行为。v4.3.16-20191206
* 原实现在PVID设置时,无论报文设置的VLAN是多少,均改写成PVID;
* 现修正,当报文VLAN没有设置时,才将报文的VLAN设置成PVID。
| -rw-r--r-- | service/src/fwd.c | 8 |
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]); } } |
