OpenWrt – Diff between revs 2 and 3

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 2 Rev 3
Line 293... Line 293...
293   293  
Line 294... Line 294...
294 mutex_unlock(&bus->mdio_lock); 294 mutex_unlock(&bus->mdio_lock);
295   295  
296 return ret; -  
297 } -  
298 void -  
299 ar8xxx_phy_dbg_read(struct ar8xxx_priv *priv, int phy_addr, -  
300 u16 dbg_addr, u16 *dbg_data) -  
301 { -  
302 struct mii_bus *bus = priv->mii_bus; -  
303   -  
304 mutex_lock(&bus->mdio_lock); -  
305 bus->write(bus, phy_addr, MII_ATH_DBG_ADDR, dbg_addr); -  
306 *dbg_data = bus->read(bus, phy_addr, MII_ATH_DBG_DATA); -  
Line 307... Line 296...
307 mutex_unlock(&bus->mdio_lock); 296 return ret;
308 } 297 }
309   298  
310 void 299 void
Line 758... Line 747...
758 { 747 {
759 struct mii_bus *bus = priv->mii_bus; 748 struct mii_bus *bus = priv->mii_bus;
760 u16 r2, page; 749 u16 r2, page;
761 u16 r1_func0, r1_func1, r1_func2; 750 u16 r1_func0, r1_func1, r1_func2;
762 u32 t, val0, val1, val2; 751 u32 t, val0, val1, val2;
-   752 int i;
Line 763... Line 753...
763   753  
764 split_addr(AR8216_REG_ATU_FUNC0, &r1_func0, &r2, &page); 754 split_addr(AR8216_REG_ATU_FUNC0, &r1_func0, &r2, &page);
Line 765... Line 755...
765 r2 |= 0x10; 755 r2 |= 0x10;
Line 793... Line 783...
793   783  
794 *status = (val2 & AR8216_ATU_STATUS) >> AR8216_ATU_STATUS_S; 784 *status = (val2 & AR8216_ATU_STATUS) >> AR8216_ATU_STATUS_S;
795 if (!*status) 785 if (!*status)
Line -... Line 786...
-   786 break;
-   787  
796 break; 788 i = 0;
-   789 t = AR8216_ATU_PORT0;
-   790 while (!(val2 & t) && ++i < priv->dev.ports)
-   791 t <<= 1;
797   792  
798 a->portmap = (val2 & AR8216_ATU_PORTS) >> AR8216_ATU_PORTS_S; 793 a->port = i;
799 a->mac[0] = (val0 & AR8216_ATU_ADDR5) >> AR8216_ATU_ADDR5_S; 794 a->mac[0] = (val0 & AR8216_ATU_ADDR5) >> AR8216_ATU_ADDR5_S;
800 a->mac[1] = (val0 & AR8216_ATU_ADDR4) >> AR8216_ATU_ADDR4_S; 795 a->mac[1] = (val0 & AR8216_ATU_ADDR4) >> AR8216_ATU_ADDR4_S;
801 a->mac[2] = (val1 & AR8216_ATU_ADDR3) >> AR8216_ATU_ADDR3_S; 796 a->mac[2] = (val1 & AR8216_ATU_ADDR3) >> AR8216_ATU_ADDR3_S;
Line 1519... Line 1514...
1519 * ARL table can include multiple valid entries 1514 * ARL table can include multiple valid entries
1520 * per MAC, just with differing status codes 1515 * per MAC, just with differing status codes
1521 */ 1516 */
1522 for (j = 0; j < i; ++j) { 1517 for (j = 0; j < i; ++j) {
1523 a1 = &priv->arl_table[j]; 1518 a1 = &priv->arl_table[j];
1524 if (!memcmp(a->mac, a1->mac, sizeof(a->mac))) { 1519 if (a->port == a1->port && !memcmp(a->mac, a1->mac, sizeof(a->mac)))
1525 /* ignore ports already seen in former entry */ -  
1526 a->portmap &= ~a1->portmap; -  
1527 if (!a->portmap) -  
1528 goto duplicate; 1520 goto duplicate;
1529 } -  
1530 } 1521 }
1531 } 1522 }
Line 1532... Line 1523...
1532   1523  
Line 1541... Line 1532...
1541 AR8XXX_NUM_ARL_RECORDS); 1532 AR8XXX_NUM_ARL_RECORDS);
Line 1542... Line 1533...
1542   1533  
1543 for (j = 0; j < priv->dev.ports; ++j) { 1534 for (j = 0; j < priv->dev.ports; ++j) {
1544 for (k = 0; k < i; ++k) { 1535 for (k = 0; k < i; ++k) {
1545 a = &priv->arl_table[k]; 1536 a = &priv->arl_table[k];
1546 if (!(a->portmap & BIT(j))) 1537 if (a->port != j)
1547 continue; 1538 continue;
1548 len += snprintf(buf + len, sizeof(priv->arl_buf) - len, 1539 len += snprintf(buf + len, sizeof(priv->arl_buf) - len,
1549 "Port %d: MAC %02x:%02x:%02x:%02x:%02x:%02x\n", 1540 "Port %d: MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
1550 j, 1541 j,
Line 2111... Line 2102...
2111 } 2102 }
2112 phydev->duplex = link.duplex ? DUPLEX_FULL : DUPLEX_HALF; 2103 phydev->duplex = link.duplex ? DUPLEX_FULL : DUPLEX_HALF;
Line 2113... Line 2104...
2113   2104  
2114 phydev->state = PHY_RUNNING; 2105 phydev->state = PHY_RUNNING;
2115 netif_carrier_on(phydev->attached_dev); -  
2116 if (phydev->adjust_link) 2106 netif_carrier_on(phydev->attached_dev);
Line 2117... Line 2107...
2117 phydev->adjust_link(phydev->attached_dev); 2107 phydev->adjust_link(phydev->attached_dev);
2118   2108  
Line 2119... Line 2109...
2119 return 0; 2109 return 0;
Line 2175... Line 2165...
2175 struct ar8xxx_priv *priv; 2165 struct ar8xxx_priv *priv;
2176 struct switch_dev *swdev; 2166 struct switch_dev *swdev;
2177 int ret; 2167 int ret;
Line 2178... Line 2168...
2178   2168  
2179 /* skip PHYs at unused adresses */ 2169 /* skip PHYs at unused adresses */
2180 if (phydev->mdio.addr != 0 && phydev->mdio.addr != 3 && phydev->mdio.addr != 4) 2170 if (phydev->mdio.addr != 0 && phydev->mdio.addr != 4)
Line 2181... Line 2171...
2181 return -ENODEV; 2171 return -ENODEV;
2182   2172  
Line 2234... Line 2224...
2234 } else { 2224 } else {
2235 if (ar8xxx_has_gige(priv)) { 2225 if (ar8xxx_has_gige(priv)) {
2236 phydev->supported |= SUPPORTED_1000baseT_Full; 2226 phydev->supported |= SUPPORTED_1000baseT_Full;
2237 phydev->advertising |= ADVERTISED_1000baseT_Full; 2227 phydev->advertising |= ADVERTISED_1000baseT_Full;
2238 } 2228 }
2239 if (priv->chip->phy_rgmii_set) -  
2240 priv->chip->phy_rgmii_set(priv, phydev); -  
2241 } 2229 }
Line 2242... Line 2230...
2242   2230  
Line 2243... Line 2231...
2243 phydev->priv = priv; 2231 phydev->priv = priv;