Print this page
212 Atheros AR8132 / L1c Gigabit Ethernet Adapter

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/atge/atge.h
          +++ new/usr/src/uts/common/io/atge/atge.h
↓ open down ↓ 11 lines elided ↑ open up ↑
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
       22 + * Copyright (c) 2012 Gary Mills
       23 + *
  22   24   * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  23   25   * Use is subject to license terms.
  24   26   */
  25   27  
  26   28  #ifndef _ATGE_H
  27   29  #define _ATGE_H
  28   30  
  29   31  #ifdef __cplusplus
  30   32          extern "C" {
  31   33  #endif
  32   34  
  33   35  #include <sys/ethernet.h>
  34   36  #include <sys/mac_provider.h>
  35   37  #include "atge_l1e_reg.h"
       38 +#include "atge_l1c_reg.h"
  36   39  
  37   40  #define ATGE_PCI_REG_NUMBER     1
  38   41  
  39   42  #define ROUNDUP(x, a)           (((x) + (a) - 1) & ~((a) - 1))
  40   43  
  41   44  /*
  42   45   * Flags.
  43   46   */
  44   47  #define ATGE_FLAG_PCIE          0x0001
  45   48  #define ATGE_FIXED_TYPE         0x0002
  46   49  #define ATGE_MSI_TYPE           0x0004
  47   50  #define ATGE_MSIX_TYPE          0x0008
  48   51  #define ATGE_FLAG_FASTETHER     0x0010
  49   52  #define ATGE_FLAG_JUMBO         0x0020
  50   53  #define ATGE_MII_CHECK          0x0040
       54 +#define ATGE_FLAG_ASPM_MON      0x0080
       55 +#define ATGE_FLAG_CMB_BUG       0x0100
       56 +#define ATGE_FLAG_SMB_BUG       0x0200
       57 +#define ATGE_FLAG_APS           0x1000
  51   58  
  52   59  #define ATGE_CHIP_L1_DEV_ID     0x1048
  53   60  #define ATGE_CHIP_L2_DEV_ID     0x2048
  54   61  #define ATGE_CHIP_L1E_DEV_ID    0x1026
       62 +#define ATGE_CHIP_L1CG_DEV_ID   0x1063
       63 +#define ATGE_CHIP_L1CF_DEV_ID   0x1062
       64 +#define ATGE_CHIP_AR8151V1_DEV_ID       0x1073
       65 +#define ATGE_CHIP_AR8151V2_DEV_ID       0x1083
       66 +#define ATGE_CHIP_AR8152V1_DEV_ID       0x2060
       67 +#define ATGE_CHIP_AR8152V2_DEV_ID       0x2062
  55   68  
  56   69  #define ATGE_PROMISC            0x001
  57   70  #define ATGE_ALL_MULTICST       0x002
  58   71  
  59   72  /*
  60   73   * Timer for one second interval.
  61   74   */
  62   75  #define ATGE_TIMER_INTERVAL     (1000 * 1000 * 1000)
  63   76  
  64   77  /*
↓ open down ↓ 70 lines elided ↑ open up ↑
 135  148  
 136  149  
 137  150  #define ATGE_ADDR_LO(x)         ((uint64_t)(x) & 0xFFFFFFFF)
 138  151  #define ATGE_ADDR_HI(x)         ((uint64_t)(x) >> 32)
 139  152  
 140  153  
 141  154  /*
 142  155   * General purpose macros.
 143  156   */
 144  157  #define ATGE_MODEL(atgep)       atgep->atge_model
      158 +#define ATGE_VID(atgep)         atgep->atge_vid
      159 +#define ATGE_DID(atgep)         atgep->atge_did
 145  160  
 146  161  /*
 147  162   * Different type of chip models.
 148  163   */
 149  164  typedef enum {
 150  165          ATGE_CHIP_L1 = 1,
 151  166          ATGE_CHIP_L2,
 152  167          ATGE_CHIP_L1E,
      168 +        ATGE_CHIP_L1C,
 153  169  } atge_model_t;
 154  170  
 155  171  typedef struct  atge_cards {
 156  172          uint16_t        vendor_id;      /* PCI vendor id */
 157  173          uint16_t        device_id;      /* PCI device id */
 158  174          char            *cardname;      /* Description of the card */
 159  175          atge_model_t    model;          /* Model of the card */
 160  176  } atge_cards_t;
 161  177  
 162  178  /*
↓ open down ↓ 51 lines elided ↑ open up ↑
 214  230          atge_dma_t              *atge_l1_cmb;
 215  231          atge_dma_t              *atge_l1_rr;
 216  232          atge_dma_t              *atge_l1_smb;
 217  233          int                     atge_l1_rr_consumers;
 218  234          uint32_t                atge_l1_intr_status;
 219  235          uint32_t                atge_l1_rx_prod_cons;
 220  236          uint32_t                atge_l1_tx_prod_cons;
 221  237  } atge_l1_data_t;
 222  238  
 223  239  /*
      240 + * L1C specific private data.
      241 + */
      242 +typedef struct  atge_l1c_data {
      243 +        atge_ring_t             *atge_rx_ring;
      244 +        atge_dma_t              *atge_l1c_cmb;
      245 +        atge_dma_t              *atge_l1c_rr;
      246 +        atge_dma_t              *atge_l1c_smb;
      247 +        int                     atge_l1c_rr_consumers;
      248 +        uint32_t                atge_l1c_intr_status;
      249 +        uint32_t                atge_l1c_rx_prod_cons;
      250 +        uint32_t                atge_l1c_tx_prod_cons;
      251 +} atge_l1c_data_t;
      252 +
      253 +/*
 224  254   * TX descriptor table is same with L1, L1E and L2E chips.
 225  255   */
 226  256  #pragma pack(1)
 227  257  typedef struct  atge_tx_desc {
 228  258          uint64_t        addr;
 229  259          uint32_t        len;
 230  260          uint32_t        flags;
 231  261  } atge_tx_desc_t;
 232  262  #pragma pack()
 233  263  
↓ open down ↓ 16 lines elided ↑ open up ↑
 250  280          kmutex_t                atge_mii_lock;
 251  281          kmutex_t                atge_mbox_lock;
 252  282  
 253  283          /*
 254  284           * Instance number and devinfo pointer.
 255  285           */
 256  286          int                     atge_unit;
 257  287          dev_info_t              *atge_dip;
 258  288          char                    atge_name[8];
 259  289          atge_model_t            atge_model;
      290 +        uint16_t                atge_vid;
      291 +        uint16_t                atge_did;
 260  292          int                     atge_chip_rev;
 261  293          uint8_t                 atge_revid;
 262  294  
 263  295          /*
 264  296           * Mac handle.
 265  297           */
 266  298          mac_handle_t            atge_mh;
 267  299  
 268  300          /*
 269  301           * MII layer handle.
↓ open down ↓ 23 lines elided ↑ open up ↑
 293  325          int                     atge_intr_size;
 294  326          int                     atge_intr_cap;
 295  327  
 296  328          /*
 297  329           * Common structures.
 298  330           */
 299  331          atge_ring_t             *atge_tx_ring;
 300  332          int                     atge_tx_resched;
 301  333          int                     atge_mtu;
 302  334          int                     atge_int_mod;
      335 +        int                     atge_int_rx_mod; /* L1C */
      336 +        int                     atge_int_tx_mod; /* L1C */
 303  337          int                     atge_max_frame_size;
 304  338  
 305  339  
 306  340          /*
 307  341           * Ethernet addresses.
 308  342           */
 309  343          ether_addr_t            atge_ether_addr;
 310  344          ether_addr_t            atge_dev_addr;
 311  345          uint64_t                atge_mchash;
 312  346          uint32_t                atge_mchash_ref_cnt[64];
↓ open down ↓ 100 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX