Print this page
212 Atheros AR8132 / L1c Gigabit Ethernet Adapter

@@ -17,10 +17,12 @@
  * information: Portions Copyright [yyyy] [name of copyright owner]
  *
  * CDDL HEADER END
  */
 /*
+ * Copyright (c) 2012 Gary Mills
+ *
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 #ifndef _ATGE_H

@@ -31,10 +33,11 @@
 #endif
 
 #include <sys/ethernet.h>
 #include <sys/mac_provider.h>
 #include "atge_l1e_reg.h"
+#include "atge_l1c_reg.h"
 
 #define ATGE_PCI_REG_NUMBER     1
 
 #define ROUNDUP(x, a)           (((x) + (a) - 1) & ~((a) - 1))
 

@@ -46,14 +49,24 @@
 #define ATGE_MSI_TYPE           0x0004
 #define ATGE_MSIX_TYPE          0x0008
 #define ATGE_FLAG_FASTETHER     0x0010
 #define ATGE_FLAG_JUMBO         0x0020
 #define ATGE_MII_CHECK          0x0040
+#define ATGE_FLAG_ASPM_MON      0x0080
+#define ATGE_FLAG_CMB_BUG       0x0100
+#define ATGE_FLAG_SMB_BUG       0x0200
+#define ATGE_FLAG_APS           0x1000
 
 #define ATGE_CHIP_L1_DEV_ID     0x1048
 #define ATGE_CHIP_L2_DEV_ID     0x2048
 #define ATGE_CHIP_L1E_DEV_ID    0x1026
+#define ATGE_CHIP_L1CG_DEV_ID   0x1063
+#define ATGE_CHIP_L1CF_DEV_ID   0x1062
+#define ATGE_CHIP_AR8151V1_DEV_ID       0x1073
+#define ATGE_CHIP_AR8151V2_DEV_ID       0x1083
+#define ATGE_CHIP_AR8152V1_DEV_ID       0x2060
+#define ATGE_CHIP_AR8152V2_DEV_ID       0x2062
 
 #define ATGE_PROMISC            0x001
 #define ATGE_ALL_MULTICST       0x002
 
 /*

@@ -140,18 +153,21 @@
 
 /*
  * General purpose macros.
  */
 #define ATGE_MODEL(atgep)       atgep->atge_model
+#define ATGE_VID(atgep)         atgep->atge_vid
+#define ATGE_DID(atgep)         atgep->atge_did
 
 /*
  * Different type of chip models.
  */
 typedef enum {
         ATGE_CHIP_L1 = 1,
         ATGE_CHIP_L2,
         ATGE_CHIP_L1E,
+        ATGE_CHIP_L1C,
 } atge_model_t;
 
 typedef struct  atge_cards {
         uint16_t        vendor_id;      /* PCI vendor id */
         uint16_t        device_id;      /* PCI device id */

@@ -219,10 +235,24 @@
         uint32_t                atge_l1_rx_prod_cons;
         uint32_t                atge_l1_tx_prod_cons;
 } atge_l1_data_t;
 
 /*
+ * L1C specific private data.
+ */
+typedef struct  atge_l1c_data {
+        atge_ring_t             *atge_rx_ring;
+        atge_dma_t              *atge_l1c_cmb;
+        atge_dma_t              *atge_l1c_rr;
+        atge_dma_t              *atge_l1c_smb;
+        int                     atge_l1c_rr_consumers;
+        uint32_t                atge_l1c_intr_status;
+        uint32_t                atge_l1c_rx_prod_cons;
+        uint32_t                atge_l1c_tx_prod_cons;
+} atge_l1c_data_t;
+
+/*
  * TX descriptor table is same with L1, L1E and L2E chips.
  */
 #pragma pack(1)
 typedef struct  atge_tx_desc {
         uint64_t        addr;

@@ -255,10 +285,12 @@
          */
         int                     atge_unit;
         dev_info_t              *atge_dip;
         char                    atge_name[8];
         atge_model_t            atge_model;
+        uint16_t                atge_vid;
+        uint16_t                atge_did;
         int                     atge_chip_rev;
         uint8_t                 atge_revid;
 
         /*
          * Mac handle.

@@ -298,10 +330,12 @@
          */
         atge_ring_t             *atge_tx_ring;
         int                     atge_tx_resched;
         int                     atge_mtu;
         int                     atge_int_mod;
+        int                     atge_int_rx_mod; /* L1C */
+        int                     atge_int_tx_mod; /* L1C */
         int                     atge_max_frame_size;
 
 
         /*
          * Ethernet addresses.