| From 0ca3d89b4d1d848854391aa129475f036b71a1c7 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 27 Aug 2025 12:26:43 -0700 |
| Subject: xirc2ps_cs: fix register access when enabling FullDuplex |
| |
| From: Alok Tiwari <alok.a.tiwari@oracle.com> |
| |
| [ Upstream commit b79e498080b170fd94fc83bca2471f450811549b ] |
| |
| The current code incorrectly passes (XIRCREG1_ECR | FullDuplex) as |
| the register address to GetByte(), instead of fetching the register |
| value and OR-ing it with FullDuplex. This results in an invalid |
| register access. |
| |
| Fix it by reading XIRCREG1_ECR first, then or-ing with FullDuplex |
| before writing it back. |
| |
| Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") |
| Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com> |
| Reviewed-by: Simon Horman <horms@kernel.org> |
| Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> |
| Link: https://patch.msgid.link/20250827192645.658496-1-alok.a.tiwari@oracle.com |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/xircom/xirc2ps_cs.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/xircom/xirc2ps_cs.c b/drivers/net/ethernet/xircom/xirc2ps_cs.c |
| index 9f505cf02d965..2dc1cfcd7ce99 100644 |
| --- a/drivers/net/ethernet/xircom/xirc2ps_cs.c |
| +++ b/drivers/net/ethernet/xircom/xirc2ps_cs.c |
| @@ -1578,7 +1578,7 @@ do_reset(struct net_device *dev, int full) |
| msleep(40); /* wait 40 msec to let it complete */ |
| } |
| if (full_duplex) |
| - PutByte(XIRCREG1_ECR, GetByte(XIRCREG1_ECR | FullDuplex)); |
| + PutByte(XIRCREG1_ECR, GetByte(XIRCREG1_ECR) | FullDuplex); |
| } else { /* No MII */ |
| SelectPage(0); |
| value = GetByte(XIRCREG_ESR); /* read the ESR */ |
| -- |
| 2.50.1 |
| |