summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vnet/ethernet/packet.h6
-rw-r--r--test/test_dhcp.py2
-rw-r--r--test/test_qos.py21
3 files changed, 21 insertions, 8 deletions
diff --git a/src/vnet/ethernet/packet.h b/src/vnet/ethernet/packet.h
index d70960b0f7b..13d7dafabfc 100644
--- a/src/vnet/ethernet/packet.h
+++ b/src/vnet/ethernet/packet.h
@@ -142,8 +142,8 @@ ethernet_vlan_header_set_priority_net_order (ethernet_vlan_header_t * h,
{
u8 *bytes = (u8 *) (&h->priority_cfi_and_id);
- bytes[0] &= 0x1f;
- bytes[0] |= (prio & 0x7) << 5;
+ bytes[0] &= 0x0f;
+ bytes[0] |= (prio & 0xf) << 4;
}
always_inline u8
@@ -151,7 +151,7 @@ ethernet_vlan_header_get_priority_net_order (ethernet_vlan_header_t * h)
{
u8 *bytes = (u8 *) (&h->priority_cfi_and_id);
- return (bytes[0] >> 5);
+ return (bytes[0] >> 4);
}
/* VLAN with ethertype first and vlan id second */
diff --git a/test/test_dhcp.py b/test/test_dhcp.py
index 16b0f470b0a..175f6493eb7 100644
--- a/test/test_dhcp.py
+++ b/test/test_dhcp.py
@@ -1653,7 +1653,7 @@ class TestDHCP(VppTestCase):
rx = self.pg3.get_capture(1)
self.assertEqual(rx[0][Dot1Q].vlan, 100)
- self.assertEqual(rx[0][Dot1Q].prio, 4)
+ self.assertEqual(rx[0][Dot1Q].prio, 2)
self.verify_orig_dhcp_discover(rx[0], self.pg3, hostname,
dscp=vdscp.IP_API_DSCP_EF)
diff --git a/test/test_qos.py b/test/test_qos.py
index 149a9ebbe6e..ef4e495fbea 100644
--- a/test/test_qos.py
+++ b/test/test_qos.py
@@ -515,15 +515,27 @@ class TestQOS(VppTestCase):
UDP(sport=1234, dport=1234) /
Raw(scapy.compat.chb(100) * NUM_PKTS))
+ p_v3 = (Ether(src=self.pg0.remote_mac, dst=self.pg0.local_mac) /
+ Dot1Q(vlan=11, prio=1, id=1) /
+ IP(src="1.1.1.1", dst="10.0.0.2", tos=2) /
+ UDP(sport=1234, dport=1234) /
+ Raw(scapy.compat.chb(100) * NUM_PKTS))
+
rx = self.send_and_expect(self.pg1, p_v2 * NUM_PKTS, self.pg0)
for p in rx:
- self.assertEqual(p[Dot1Q].prio, 6)
+ self.assertEqual(p[Dot1Q].prio, 7)
+ self.assertEqual(p[Dot1Q].id, 0)
+
+ rx = self.send_and_expect(self.pg0, p_v3 * NUM_PKTS, self.pg1)
+
+ for p in rx:
+ self.assertEqual(p[IP].tos, 252)
rx = self.send_and_expect(self.pg0, p_v1 * NUM_PKTS, self.pg1)
for p in rx:
- self.assertEqual(p[IP].tos, 254)
+ self.assertEqual(p[IP].tos, 253)
p_v1 = (Ether(src=self.pg0.remote_mac, dst=self.pg0.local_mac) /
Dot1Q(vlan=11, prio=2) /
@@ -539,12 +551,13 @@ class TestQOS(VppTestCase):
rx = self.send_and_expect(self.pg1, p_v2 * NUM_PKTS, self.pg0)
for p in rx:
- self.assertEqual(p[Dot1Q].prio, 6)
+ self.assertEqual(p[Dot1Q].prio, 7)
+ self.assertEqual(p[Dot1Q].id, 0)
rx = self.send_and_expect(self.pg0, p_v1 * NUM_PKTS, self.pg1)
for p in rx:
- self.assertEqual(p[IPv6].tc, 253)
+ self.assertEqual(p[IPv6].tc, 251)
#
# cleanup