Packet priority is part of the rx tag. It defaults to 0, but adding DCB support to the switch driver will break the tag driver by setting it to non-zero. Signed-off-by: David Yang --- net/dsa/tag_yt921x.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/dsa/tag_yt921x.c b/net/dsa/tag_yt921x.c index 6bbfd42dc5df..b93715a057c7 100644 --- a/net/dsa/tag_yt921x.c +++ b/net/dsa/tag_yt921x.c @@ -17,7 +17,8 @@ * 2: Rx Port * 15b: Rx Port Valid * 14b-11b: Rx Port - * 10b-0b: Cmd? + * 10b-8b: Priority + * 7b-0b: Cmd * 2: Tx Port(s) * 15b: Tx Port(s) Valid * 10b-0b: Tx Port(s) Mask @@ -33,7 +34,8 @@ #define YT921X_TAG_PORT_EN BIT(15) #define YT921X_TAG_RX_PORT_M GENMASK(14, 11) -#define YT921X_TAG_RX_CMD_M GENMASK(10, 0) +#define YT921X_TAG_RX_PRIO_M GENMASK(10, 8) +#define YT921X_TAG_RX_CMD_M GENMASK(7, 0) #define YT921X_TAG_RX_CMD(x) FIELD_PREP(YT921X_TAG_RX_CMD_M, (x)) #define YT921X_TAG_RX_CMD_FORWARDED 0x80 #define YT921X_TAG_RX_CMD_UNK_UCAST 0xb2 @@ -98,6 +100,8 @@ yt921x_tag_rcv(struct sk_buff *skb, struct net_device *netdev) return NULL; } + skb->priority = FIELD_GET(YT921X_TAG_RX_PRIO_M, rx); + cmd = FIELD_GET(YT921X_TAG_RX_CMD_M, rx); switch (cmd) { case YT921X_TAG_RX_CMD_FORWARDED: -- 2.51.0