diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2009-04-30 13:37:43 +0100 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2009-11-25 09:37:16 -0500 |
commit | 4a91db99d6fef4362dd47ce9e6c9f2be4c502832 (patch) | |
tree | 22e179442f7a8f8d07692d93cf4e867a80f21b27 /ethtool.c | |
parent | 6a8940ff87528e9f0129e8673373b47187c4cc43 (diff) | |
download | ethtool-4a91db99d6fef4362dd47ce9e6c9f2be4c502832.tar.gz |
ethtool: Report link partner advertising
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'ethtool.c')
-rw-r--r-- | ethtool.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -840,12 +840,13 @@ static void dump_supported(struct ethtool_cmd *ep) fprintf(stdout, "No\n"); } -static void dump_advertised(struct ethtool_cmd *ep) +static void dump_advertised(struct ethtool_cmd *ep, + const char *prefix, u_int32_t mask) { - u_int32_t mask = ep->advertising; + int indent = strlen(prefix) + 14; int did1; - fprintf(stdout, " Advertised link modes: "); + fprintf(stdout, " %s link modes: ", prefix); did1 = 0; if (mask & ADVERTISED_10baseT_Half) { did1++; fprintf(stdout, "10baseT/Half "); @@ -855,7 +856,7 @@ static void dump_advertised(struct ethtool_cmd *ep) } if (did1 && (mask & (ADVERTISED_100baseT_Half|ADVERTISED_100baseT_Full))) { fprintf(stdout, "\n"); - fprintf(stdout, " "); + fprintf(stdout, " %*s", indent, ""); } if (mask & ADVERTISED_100baseT_Half) { did1++; fprintf(stdout, "100baseT/Half "); @@ -865,7 +866,7 @@ static void dump_advertised(struct ethtool_cmd *ep) } if (did1 && (mask & (ADVERTISED_1000baseT_Half|ADVERTISED_1000baseT_Full))) { fprintf(stdout, "\n"); - fprintf(stdout, " "); + fprintf(stdout, " %*s", indent, ""); } if (mask & ADVERTISED_1000baseT_Half) { did1++; fprintf(stdout, "1000baseT/Half "); @@ -875,14 +876,14 @@ static void dump_advertised(struct ethtool_cmd *ep) } if (did1 && (mask & ADVERTISED_2500baseX_Full)) { fprintf(stdout, "\n"); - fprintf(stdout, " "); + fprintf(stdout, " %*s", indent, ""); } if (mask & ADVERTISED_2500baseX_Full) { did1++; fprintf(stdout, "2500baseX/Full "); } if (did1 && (mask & ADVERTISED_10000baseT_Full)) { fprintf(stdout, "\n"); - fprintf(stdout, " "); + fprintf(stdout, " %*s", indent, ""); } if (mask & ADVERTISED_10000baseT_Full) { did1++; fprintf(stdout, "10000baseT/Full "); @@ -891,7 +892,7 @@ static void dump_advertised(struct ethtool_cmd *ep) fprintf(stdout, "Not reported"); fprintf(stdout, "\n"); - fprintf(stdout, " Advertised auto-negotiation: "); + fprintf(stdout, " %s auto-negotiation: ", prefix); if (mask & ADVERTISED_Autoneg) fprintf(stdout, "Yes\n"); else @@ -903,7 +904,8 @@ static int dump_ecmd(struct ethtool_cmd *ep) u32 speed; dump_supported(ep); - dump_advertised(ep); + dump_advertised(ep, "Advertised", ep->advertising); + dump_advertised(ep, "Link partner advertised", ep->lp_advertising); fprintf(stdout, " Speed: "); speed = ethtool_cmd_speed(ep); |