00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "../drivers.h"
00010 #if __minix_vmd
00011 #include "config.h"
00012 #endif
00013
00014 #include "mii.h"
00015
00016
00017
00018
00019 PUBLIC void mii_print_stat_speed(stat, extstat)
00020 u16_t stat;
00021 u16_t extstat;
00022 {
00023 int fs, ft;
00024
00025 fs= 1;
00026 if (stat & MII_STATUS_EXT_STAT)
00027 {
00028 if (extstat & (MII_ESTAT_1000XFD | MII_ESTAT_1000XHD |
00029 MII_ESTAT_1000TFD | MII_ESTAT_1000THD))
00030 {
00031 printf("1000 Mbps: ");
00032 fs= 0;
00033 ft= 1;
00034 if (extstat & (MII_ESTAT_1000XFD | MII_ESTAT_1000XHD))
00035 {
00036 ft= 0;
00037 printf("X-");
00038 switch(extstat &
00039 (MII_ESTAT_1000XFD|MII_ESTAT_1000XHD))
00040 {
00041 case MII_ESTAT_1000XFD: printf("FD"); break;
00042 case MII_ESTAT_1000XHD: printf("HD"); break;
00043 default: printf("FD/HD"); break;
00044 }
00045 }
00046 if (extstat & (MII_ESTAT_1000TFD | MII_ESTAT_1000THD))
00047 {
00048 if (!ft)
00049 printf(", ");
00050 ft= 0;
00051 printf("T-");
00052 switch(extstat &
00053 (MII_ESTAT_1000TFD|MII_ESTAT_1000THD))
00054 {
00055 case MII_ESTAT_1000TFD: printf("FD"); break;
00056 case MII_ESTAT_1000THD: printf("HD"); break;
00057 default: printf("FD/HD"); break;
00058 }
00059 }
00060 }
00061 }
00062 if (stat & (MII_STATUS_100T4 |
00063 MII_STATUS_100XFD | MII_STATUS_100XHD |
00064 MII_STATUS_100T2FD | MII_STATUS_100T2HD))
00065 {
00066 if (!fs)
00067 printf(", ");
00068 fs= 0;
00069 printf("100 Mbps: ");
00070 ft= 1;
00071 if (stat & MII_STATUS_100T4)
00072 {
00073 printf("T4");
00074 ft= 0;
00075 }
00076 if (stat & (MII_STATUS_100XFD | MII_STATUS_100XHD))
00077 {
00078 if (!ft)
00079 printf(", ");
00080 ft= 0;
00081 printf("TX-");
00082 switch(stat & (MII_STATUS_100XFD|MII_STATUS_100XHD))
00083 {
00084 case MII_STATUS_100XFD: printf("FD"); break;
00085 case MII_STATUS_100XHD: printf("HD"); break;
00086 default: printf("FD/HD"); break;
00087 }
00088 }
00089 if (stat & (MII_STATUS_100T2FD | MII_STATUS_100T2HD))
00090 {
00091 if (!ft)
00092 printf(", ");
00093 ft= 0;
00094 printf("T2-");
00095 switch(stat & (MII_STATUS_100T2FD|MII_STATUS_100T2HD))
00096 {
00097 case MII_STATUS_100T2FD: printf("FD"); break;
00098 case MII_STATUS_100T2HD: printf("HD"); break;
00099 default: printf("FD/HD"); break;
00100 }
00101 }
00102 }
00103 if (stat & (MII_STATUS_10FD | MII_STATUS_10HD))
00104 {
00105 if (!fs)
00106 printf(", ");
00107 printf("10 Mbps: ");
00108 fs= 0;
00109 printf("T-");
00110 switch(stat & (MII_STATUS_10FD|MII_STATUS_10HD))
00111 {
00112 case MII_STATUS_10FD: printf("FD"); break;
00113 case MII_STATUS_10HD: printf("HD"); break;
00114 default: printf("FD/HD"); break;
00115 }
00116 }
00117 }
00118
00119
00120
00121
00122 PUBLIC void mii_print_techab(techab)
00123 u16_t techab;
00124 {
00125 int fs, ft;
00126
00127 if ((techab & MII_ANA_SEL_M) != MII_ANA_SEL_802_3)
00128 {
00129 printf("strange selector 0x%x, value 0x%x",
00130 techab & MII_ANA_SEL_M,
00131 (techab & MII_ANA_TAF_M) >> MII_ANA_TAF_S);
00132 return;
00133 }
00134 fs= 1;
00135 if (techab & (MII_ANA_100T4 | MII_ANA_100TXFD | MII_ANA_100TXHD))
00136 {
00137 printf("100 Mbps: ");
00138 fs= 0;
00139 ft= 1;
00140 if (techab & MII_ANA_100T4)
00141 {
00142 printf("T4");
00143 ft= 0;
00144 }
00145 if (techab & (MII_ANA_100TXFD | MII_ANA_100TXHD))
00146 {
00147 if (!ft)
00148 printf(", ");
00149 ft= 0;
00150 printf("TX-");
00151 switch(techab & (MII_ANA_100TXFD|MII_ANA_100TXHD))
00152 {
00153 case MII_ANA_100TXFD: printf("FD"); break;
00154 case MII_ANA_100TXHD: printf("HD"); break;
00155 default: printf("FD/HD"); break;
00156 }
00157 }
00158 }
00159 if (techab & (MII_ANA_10TFD | MII_ANA_10THD))
00160 {
00161 if (!fs)
00162 printf(", ");
00163 printf("10 Mbps: ");
00164 fs= 0;
00165 printf("T-");
00166 switch(techab & (MII_ANA_10TFD|MII_ANA_10THD))
00167 {
00168 case MII_ANA_10TFD: printf("FD"); break;
00169 case MII_ANA_10THD: printf("HD"); break;
00170 default: printf("FD/HD"); break;
00171 }
00172 }
00173 if (techab & MII_ANA_PAUSE_SYM)
00174 {
00175 if (!fs)
00176 printf(", ");
00177 fs= 0;
00178 printf("pause(SYM)");
00179 }
00180 if (techab & MII_ANA_PAUSE_ASYM)
00181 {
00182 if (!fs)
00183 printf(", ");
00184 fs= 0;
00185 printf("pause(ASYM)");
00186 }
00187 if (techab & MII_ANA_TAF_RES)
00188 {
00189 if (!fs)
00190 printf(", ");
00191 fs= 0;
00192 printf("0x%x", (techab & MII_ANA_TAF_RES) >> MII_ANA_TAF_S);
00193 }
00194 }
00195
00196
00197
00198