> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of
> Emil Tantilov
> Sent: Thursday, August 14, 2025 4:43 PM
> To: [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> [email protected]; Hay, Joshua A <[email protected]>; Loktionov,
> Aleksandr <[email protected]>; [email protected];
> [email protected]; [email protected]; Nguyen, Anthony L
> <[email protected]>; Kitszel, Przemyslaw
> <[email protected]>; [email protected]; [email protected];
> [email protected]
> Subject: [Intel-wired-lan] [PATCH iwl-net v3] idpf: set mac type when adding
> and removing MAC filters
>
> On control planes that allow changing the MAC address of the interface, the
> driver must provide a MAC type to avoid errors such as:
>
> idpf 0000:0a:00.0: Transaction failed (op 535) idpf 0000:0a:00.0: Received
> invalid MAC filter payload (op 535) (len 0) idpf 0000:0a:00.0: Transaction
> failed (op 536)
>
> These errors occur during driver load or when changing the MAC via:
> ip link set <iface> address <mac>
>
> Add logic to set the MAC type when sending ADD/DEL (opcodes 535/536) to
> the control plane. Since only one primary MAC is supported per vport, the
> driver only needs to send an ADD opcode when setting it. Remove the old
> address by calling __idpf_del_mac_filter(), which skips the message and just
> clears the entry from the internal list. This avoids an error on DEL as it
> attempts
> to remove an address already cleared by the preceding ADD opcode.
>
> Fixes: ce1b75d0635c ("idpf: add ptypes and MAC filter support")
> Reported-by: Jian Liu <[email protected]>
> Signed-off-by: Emil Tantilov <[email protected]>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> Reviewed-by: Paul Menzel <[email protected]>
> ---
> Changelog:
> v3:
> - Update the commit message to clarify the change in logic from ADD/DEL
> to just ADD in idpf_set_mac() is to avoid another case where the control
> plane will
> return an error.
> - s/old_address/old_mac_address/g
> - Refactored idpf_set_mac_type() to use ternary operator for setting
> the MAC type based on whether the address is primary or not.
>
> v2:
> - Make sure to clear the primary MAC from the internal list, following
> successful change.
> - Update the description to include the error on 536 opcode and
> mention the removal of the old address.
>
> v1:
> https://lore.kernel.org/intel-wired-lan/20250806192130.3197-1-
> [email protected]/
> ---
> 2.37.3
Tested-by: Samuel Salin <[email protected]>