Re: [RFC net-next v2 5/5] net: phy: nxp-c45-tja11xx: implement mdo_insert_tx_tag

Radu Pirea (OSS)
2023-09-01T14:22:56Z

On 01.09.2023 16:57, Sabrina Dubroca wrote:
> 2023-09-01, 14:58:12 +0300, Radu Pirea (OSS) wrote:
>> On 01.09.2023 13:07, Sabrina Dubroca wrote:
>>>> (the interface was up before)
>>>> [root@alarm ~]# ip link add link end0 macsec0 type macsec encrypt on
>>>> offload phy
>>>> [root@alarm ~]# ip link set end0 down
>>>> [root@alarm ~]# ip macsec add macsec0 rx port 1 address
>>>> 00:01:be:be:ef:33
>>>> RTNETLINK answers: Operation not supported
>>>
>>> Where does that EOPNOTSUPP come from? nxp_c45_mdo_add_rxsc from this
>>> version of the code can't return that, and macsec_add_rxsc also
>>> shouldn't at this point.
>>
>> This is the source of -EOPNOTSUPP
>> https://elixir.bootlin.com/linux/latest/source/drivers/net/macsec.c#L1928
>
> Could you check which part of macsec_get_ops is failing? Since
> macsec_newlink with "offload phy" worked, macsec_check_offload
> shouldn't fail, so why does macsec_get_ops return NULL?
> real_dev->phydev was NULL'ed?

This check logical and returns false:
https://elixir.bootlin.com/linux/latest/source/drivers/net/macsec.c#L343

real_dev->phydev was nulled.
The call stack is next:
fec_enet_close -> phy_disconnect -> phy_detach ->
https://elixir.bootlin.com/linux/latest/source/drivers/net/phy/phy_device.c#L1815

--
Radu P.