Jelajahi Sumber

kernel: rtl8306: fix port link status

In case the link changes from down to up, the register is only updated
on read. If the link failed/was down, this bit will be 0 until after
reading this bit again.

Fixes a reported link down by swconfig alebit the link is up (query for
the link again will show the correct link status)

Signed-off-by: Mathias Kresin <[email protected]>
Mathias Kresin 8 tahun lalu
induk
melakukan
096dff8fcd
1 mengubah file dengan 4 tambahan dan 0 penghapusan
  1. 4 0
      target/linux/generic/files/drivers/net/phy/rtl8306.c

+ 4 - 0
target/linux/generic/files/drivers/net/phy/rtl8306.c

@@ -592,7 +592,11 @@ rtl_get_port_link(struct switch_dev *dev, int port, struct switch_port_link *lin
 	if (port >= RTL8306_NUM_PORTS)
 		return -EINVAL;
 
+	/* in case the link changes from down to up, the register is only updated on read */
 	link->link = rtl_get(dev, RTL_PORT_REG(port, LINK));
+	if (!link->link)
+		link->link = rtl_get(dev, RTL_PORT_REG(port, LINK));
+
 	if (!link->link)
 		return 0;