On Thu, Jul 06, 2023 at 01:13:46PM +0200, Rafał Miłecki wrote:
From: Rafał Miłecki rafal@milecki.pl
commit f99e6d7c4ed3be2531bd576425a5bd07fb133bd7 upstream.
While bringing hardware up we should perform a full reset including the switch bit (BGMAC_BCMA_IOCTL_SW_RESET aka SICF_SWRST). It's what specification says and what reference driver does.
This seems to be critical for the BCM5358. Without this hardware doesn't get initialized properly and doesn't seem to transmit or receive any packets.
Originally bgmac was calling bgmac_chip_reset() before setting "has_robosw" property which resulted in expected behaviour. That has changed as a side effect of adding platform device support which regressed BCM5358 support.
Fixes: f6a95a24957a ("net: ethernet: bgmac: Add platform device support") Cc: Jon Mason jdmason@kudzu.us Signed-off-by: Rafał Miłecki rafal@milecki.pl Reviewed-by: Leon Romanovsky leonro@nvidia.com Reviewed-by: Florian Fainelli f.fainelli@gmail.com Link: https://lore.kernel.org/r/20230227091156.19509-1-zajec5@gmail.com Signed-off-by: Paolo Abeni pabeni@redhat.com
Upstream commit wasn't backported to 5.4 (and older) because it couldn't be cherry-picked cleanly. There was a small fuzz caused by a missing commit 8c7da63978f1 ("bgmac: configure MTU and add support for frames beyond 8192 byte size").
I've manually cherry-picked fix for BCM5358 to the linux-5.4.x.
drivers/net/ethernet/broadcom/bgmac.c | 8 ++++++-- drivers/net/ethernet/broadcom/bgmac.h | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-)
Now queued up, thanks.
greg k-h