mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2026-01-05 03:12:09 -05:00
Since the early beginning of the Realtek DSA driver there is an uncovered locking issue between the standard (parent) mdio bus and the DSA (child) mdio bus. This comes from the fact that the DSA bus simply links to the parent read and write functions and calls them directly. This leads to the following lock issue. - Child bus calls phy_read/write functions and uses its internal lock - Parent bus calls phy_read/write functions and uses its internal lock It becomes clear that critical section can be accessed twice without knowing that a operation from the other bus is currently active. This can lead to critical malfunctions because the mdio driver needs a lot of internal magic to get page selection done right. Effects are: - The original page is lost after a phy_write/read_paged() call - dmesg like "Realtek RTL8218B (external) rtl838x slave mii-0:00: Expected external RTL8218B, found PHY-ID 6b23" Other DSA drivers simply use the read/write functions from the parent bus and thus avoid locking issues. Do it the same way. Fixes: |
||
|---|---|---|
| .. | ||
| base-files | ||
| dts | ||
| files/firmware/rtl838x_phy | ||
| files-6.6 | ||
| image | ||
| patches-6.6 | ||
| profiles | ||
| rtl838x | ||
| rtl839x | ||
| rtl930x | ||
| rtl931x | ||
| Makefile | ||