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>
Sun, 17 Jul 2022 08:06:51 +0000 (10:06 +0200)
commit1773264a0c6da099af7f36046f95f0126d6de1eb
tree13468c3cf402cd029ab1e7181fca3534edd45635
parent0b35a08a057848d909156604c4391a5d9f1d97e5
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>
target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c
target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.h