realtek: correct egress frame port verification
authorSander Vanheule <sander@svanheule.net>
Sun, 19 Jun 2022 08:29:35 +0000 (10:29 +0200)
committerSander Vanheule <sander@svanheule.net>
Thu, 21 Jul 2022 18:59:51 +0000 (20:59 +0200)
commit396dc89ee74c833ba3f687b586a1718c13f17900
treeef98ccc167c8c8d686f0432db113fb6a04cb56ae
parentf8a44c22d469049edb9593322cd4111e7ea40b9b
realtek: correct egress frame port verification

Destination switch ports for outgoing frame can range from 0 to
CPU_PORT-1.

Refactor the code to only generate egress frame CPU headers when a valid
destination port number is available, and make the code a bit more
consistent between different switch generations. Change the dest_port
argument's type to 'unsigned int', since only positive values are valid.

This fixes the issue where egress frames on switch port 0 did not
receive a VLAN tag, because they are sent out without a CPU header.
Also fixes a potential issue with invalid (negative) egress port numbers
on RTL93xx switches.

Reported-by: Arınç ÜNAL <arinc.unal@xeront.com>
Suggested-by: Birger Koblitz <mail@birger-koblitz.de>
Tested-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
(cherry picked from commit 1773264a0c6da099af7f36046f95f0126d6de1eb)
target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c
target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.h