The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/drivers/fxp/mii.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2 ibm/mii.c
    3 
    4 Created:        Nov 2004 by Philip Homburg <philip@f-mnx.phicoh.com>
    5 
    6 Media Independent (Ethernet) Interface functions
    7 */
    8 
    9 #include "../drivers.h"
   10 #if __minix_vmd
   11 #include "config.h"
   12 #endif
   13 
   14 #include "mii.h"
   15 
   16 /*===========================================================================*
   17  *                              mii_print_stat_speed                         *
   18  *===========================================================================*/
   19 PUBLIC void mii_print_stat_speed(stat, extstat)
   20 u16_t stat;
   21 u16_t extstat;
   22 {
   23         int fs, ft;
   24 
   25         fs= 1;
   26         if (stat & MII_STATUS_EXT_STAT)
   27         {
   28                 if (extstat & (MII_ESTAT_1000XFD | MII_ESTAT_1000XHD |
   29                         MII_ESTAT_1000TFD | MII_ESTAT_1000THD))
   30                 {
   31                         printf("1000 Mbps: ");
   32                         fs= 0;
   33                         ft= 1;
   34                         if (extstat & (MII_ESTAT_1000XFD | MII_ESTAT_1000XHD))
   35                         {
   36                                 ft= 0;
   37                                 printf("X-");
   38                                 switch(extstat &
   39                                         (MII_ESTAT_1000XFD|MII_ESTAT_1000XHD))
   40                                 {
   41                                 case MII_ESTAT_1000XFD: printf("FD"); break;
   42                                 case MII_ESTAT_1000XHD: printf("HD"); break;
   43                                 default:                printf("FD/HD"); break;
   44                                 }
   45                         }
   46                         if (extstat & (MII_ESTAT_1000TFD | MII_ESTAT_1000THD))
   47                         {
   48                                 if (!ft)
   49                                         printf(", ");
   50                                 ft= 0;
   51                                 printf("T-");
   52                                 switch(extstat &
   53                                         (MII_ESTAT_1000TFD|MII_ESTAT_1000THD))
   54                                 {
   55                                 case MII_ESTAT_1000TFD: printf("FD"); break;
   56                                 case MII_ESTAT_1000THD: printf("HD"); break;
   57                                 default:                printf("FD/HD"); break;
   58                                 }
   59                         }
   60                 }
   61         }
   62         if (stat & (MII_STATUS_100T4 |
   63                 MII_STATUS_100XFD | MII_STATUS_100XHD |
   64                 MII_STATUS_100T2FD | MII_STATUS_100T2HD))
   65         {
   66                 if (!fs)
   67                         printf(", ");
   68                 fs= 0;
   69                 printf("100 Mbps: ");
   70                 ft= 1;
   71                 if (stat & MII_STATUS_100T4)
   72                 {
   73                         printf("T4");
   74                         ft= 0;
   75                 }
   76                 if (stat & (MII_STATUS_100XFD | MII_STATUS_100XHD))
   77                 {
   78                         if (!ft)
   79                                 printf(", ");
   80                         ft= 0;
   81                         printf("TX-");
   82                         switch(stat & (MII_STATUS_100XFD|MII_STATUS_100XHD))
   83                         {
   84                         case MII_STATUS_100XFD: printf("FD"); break;
   85                         case MII_STATUS_100XHD: printf("HD"); break;
   86                         default:                printf("FD/HD"); break;
   87                         }
   88                 }
   89                 if (stat & (MII_STATUS_100T2FD | MII_STATUS_100T2HD))
   90                 {
   91                         if (!ft)
   92                                 printf(", ");
   93                         ft= 0;
   94                         printf("T2-");
   95                         switch(stat & (MII_STATUS_100T2FD|MII_STATUS_100T2HD))
   96                         {
   97                         case MII_STATUS_100T2FD:        printf("FD"); break;
   98                         case MII_STATUS_100T2HD:        printf("HD"); break;
   99                         default:                printf("FD/HD"); break;
  100                         }
  101                 }
  102         }
  103         if (stat & (MII_STATUS_10FD | MII_STATUS_10HD))
  104         {
  105                 if (!fs)
  106                         printf(", ");
  107                 printf("10 Mbps: ");
  108                 fs= 0;
  109                 printf("T-");
  110                 switch(stat & (MII_STATUS_10FD|MII_STATUS_10HD))
  111                 {
  112                 case MII_STATUS_10FD:   printf("FD"); break;
  113                 case MII_STATUS_10HD:   printf("HD"); break;
  114                 default:                printf("FD/HD"); break;
  115                 }
  116         }
  117 }
  118 
  119 /*===========================================================================*
  120  *                              mii_print_techab                             *
  121  *===========================================================================*/
  122 PUBLIC void mii_print_techab(techab)
  123 u16_t techab;
  124 {
  125         int fs, ft;
  126 
  127         if ((techab & MII_ANA_SEL_M) != MII_ANA_SEL_802_3)
  128         {
  129                 printf("strange selector 0x%x, value 0x%x",
  130                         techab & MII_ANA_SEL_M,
  131                         (techab & MII_ANA_TAF_M) >> MII_ANA_TAF_S);
  132                 return;
  133         }
  134         fs= 1;
  135         if (techab & (MII_ANA_100T4 | MII_ANA_100TXFD | MII_ANA_100TXHD))
  136         {
  137                 printf("100 Mbps: ");
  138                 fs= 0;
  139                 ft= 1;
  140                 if (techab & MII_ANA_100T4)
  141                 {
  142                         printf("T4");
  143                         ft= 0;
  144                 }
  145                 if (techab & (MII_ANA_100TXFD | MII_ANA_100TXHD))
  146                 {
  147                         if (!ft)
  148                                 printf(", ");
  149                         ft= 0;
  150                         printf("TX-");
  151                         switch(techab & (MII_ANA_100TXFD|MII_ANA_100TXHD))
  152                         {
  153                         case MII_ANA_100TXFD:   printf("FD"); break;
  154                         case MII_ANA_100TXHD:   printf("HD"); break;
  155                         default:                printf("FD/HD"); break;
  156                         }
  157                 }
  158         }
  159         if (techab & (MII_ANA_10TFD | MII_ANA_10THD))
  160         {
  161                 if (!fs)
  162                         printf(", ");
  163                 printf("10 Mbps: ");
  164                 fs= 0;
  165                 printf("T-");
  166                 switch(techab & (MII_ANA_10TFD|MII_ANA_10THD))
  167                 {
  168                 case MII_ANA_10TFD:     printf("FD"); break;
  169                 case MII_ANA_10THD:     printf("HD"); break;
  170                 default:                printf("FD/HD"); break;
  171                 }
  172         }
  173         if (techab & MII_ANA_PAUSE_SYM)
  174         {
  175                 if (!fs)
  176                         printf(", ");
  177                 fs= 0;
  178                 printf("pause(SYM)");
  179         }
  180         if (techab & MII_ANA_PAUSE_ASYM)
  181         {
  182                 if (!fs)
  183                         printf(", ");
  184                 fs= 0;
  185                 printf("pause(ASYM)");
  186         }
  187         if (techab & MII_ANA_TAF_RES)
  188         {
  189                 if (!fs)
  190                         printf(", ");
  191                 fs= 0;
  192                 printf("0x%x", (techab & MII_ANA_TAF_RES) >> MII_ANA_TAF_S);
  193         }
  194 }
  195 
  196 /*
  197  * $PchId: mii.c,v 1.2 2005/01/31 22:17:26 philip Exp $
  198  */

Cache object: d5f05b96f8ad88255b07e3bf6356e610


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.