Changeset 19250


Ignore:
Timestamp:
2010-01-20T21:36:30+01:00 (7 years ago)
Author:
juhosg
Message:

rtl8366_smi: simplify rtl8366_attr_get_port_link function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/drivers/net/phy/rtl8366_smi.c

    r19249 r19250  
    12761276} 
    12771277 
     1278static const char *rtl8366_speed_str(unsigned speed) 
     1279{ 
     1280        switch (speed) { 
     1281        case 0: 
     1282                return "10baseT"; 
     1283        case 1: 
     1284                return "100baseT"; 
     1285        case 2: 
     1286                return "1000baseT"; 
     1287        } 
     1288 
     1289        return "unknown"; 
     1290} 
     1291 
    12781292static int rtl8366_attr_get_port_link(struct switch_dev *dev, 
    12791293                                      const struct switch_attr *attr, 
    12801294                                      struct switch_val *val) 
    12811295{ 
     1296        struct rtl8366_smi *smi = sw_to_rtl8366(dev); 
    12821297        u32 len = 0, data = 0; 
    1283         int speed, duplex, link, txpause, rxpause, nway; 
    1284         struct rtl8366_smi *smi = sw_to_rtl8366(dev); 
    1285         char *buf = smi->buf; 
    12861298 
    12871299        if (val->port_vlan >= RTL8366_NUM_PORTS) 
    12881300                return -EINVAL; 
    12891301 
    1290         memset(buf, '\0', sizeof(smi->buf)); 
     1302        memset(smi->buf, '\0', sizeof(smi->buf)); 
    12911303        rtl8366_smi_read_reg(smi, RTL8366S_PORT_LINK_STATUS_BASE + 
    1292                              (val->port_vlan >> 1), 
    1293                              &data); 
    1294  
    1295         if (val->port_vlan & 0x1) 
     1304                             (val->port_vlan / 2), &data); 
     1305 
     1306        if (val->port_vlan % 2) 
    12961307                data = data >> 8; 
    12971308 
    1298         speed = (data & RTL8366S_PORT_STATUS_SPEED_MASK); 
    1299         duplex = (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) >> 2; 
    1300         link = (data & RTL8366S_PORT_STATUS_LINK_MASK) >> 4; 
    1301         txpause = (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) >> 5; 
    1302         rxpause = (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) >> 6; 
    1303         nway = (data & RTL8366S_PORT_STATUS_AN_MASK) >> 7; 
    1304  
    1305         len += snprintf(buf + len, sizeof(smi->buf) - len, "Port %d: ", 
    1306                         val->port_vlan); 
    1307  
    1308         if (link) 
    1309                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1310                                 "Link UP, Speed: "); 
    1311         else 
    1312                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1313                                 "Link DOWN, Speed: "); 
    1314  
    1315         if (speed == 0) 
    1316                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1317                                 "10Base-TX "); 
    1318         else if (speed == 1) 
    1319                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1320                                 "100Base-TX "); 
    1321         else if (speed == 2) 
    1322                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1323                                 "1000Base-TX "); 
    1324  
    1325         if (duplex) 
    1326                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1327                                 "Full-Duplex, "); 
    1328         else 
    1329                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1330                                 "Half-Duplex, "); 
    1331  
    1332         if (txpause) 
    1333                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1334                                 "TX-Pause "); 
    1335         if (rxpause) 
    1336                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1337                                 "RX-Pause "); 
    1338         if (nway) 
    1339                 len += snprintf(buf + len, sizeof(smi->buf) - len, 
    1340                                 "nway "); 
    1341  
    1342         val->value.s = buf; 
     1309        len = snprintf(smi->buf, sizeof(smi->buf), 
     1310                        "port:%d link:%s speed:%s %s-duplex %s%s%s", 
     1311                        val->port_vlan, 
     1312                        (data & RTL8366S_PORT_STATUS_LINK_MASK) ? "up" : "down", 
     1313                        rtl8366_speed_str(data & 
     1314                                          RTL8366S_PORT_STATUS_SPEED_MASK), 
     1315                        (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) ? 
     1316                                "full" : "half", 
     1317                        (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) ? 
     1318                                "tx-pause ": "", 
     1319                        (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) ? 
     1320                                "rx-pause " : "", 
     1321                        (data & RTL8366S_PORT_STATUS_AN_MASK) ? "nway ": ""); 
     1322 
     1323        val->value.s = smi->buf; 
    13431324        val->len = len; 
    13441325 
Note: See TracChangeset for help on using the changeset viewer.