[PATCH] A new 10GB Ethernet Driver by Chelsio Communications
[firefly-linux-kernel-4.4.55.git] / drivers / net / chelsio / cxgb2.h
1 /*****************************************************************************
2  *                                                                           *
3  * File: cxgb2.h                                                             *
4  * $Revision: 1.8 $                                                          *
5  * $Date: 2005/03/23 07:41:27 $                                              *
6  * Description:                                                              *
7  *  part of the Chelsio 10Gb Ethernet Driver.                                *
8  *                                                                           *
9  * This program is free software; you can redistribute it and/or modify      *
10  * it under the terms of the GNU General Public License, version 2, as       *
11  * published by the Free Software Foundation.                                *
12  *                                                                           *
13  * You should have received a copy of the GNU General Public License along   *
14  * with this program; if not, write to the Free Software Foundation, Inc.,   *
15  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                 *
16  *                                                                           *
17  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED    *
18  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF      *
19  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.                     *
20  *                                                                           *
21  * http://www.chelsio.com                                                    *
22  *                                                                           *
23  * Copyright (c) 2003 - 2005 Chelsio Communications, Inc.                    *
24  * All rights reserved.                                                      *
25  *                                                                           *
26  * Maintainers: maintainers@chelsio.com                                      *
27  *                                                                           *
28  * Authors: Dimitrios Michailidis   <dm@chelsio.com>                         *
29  *          Tina Yang               <tainay@chelsio.com>                     *
30  *          Felix Marti             <felix@chelsio.com>                      *
31  *          Scott Bardone           <sbardone@chelsio.com>                   *
32  *          Kurt Ottaway            <kottaway@chelsio.com>                   *
33  *          Frank DiMambro          <frank@chelsio.com>                      *
34  *                                                                           *
35  * History:                                                                  *
36  *                                                                           *
37  ****************************************************************************/
38
39 #ifndef __CXGB_LINUX_H__
40 #define __CXGB_LINUX_H__
41
42 #include <linux/netdevice.h>
43 #include <linux/skbuff.h>
44 #include <linux/version.h>
45 #include <asm/semaphore.h>
46 #include <asm/bitops.h>
47
48 /* This belongs in if_ether.h */
49 #define ETH_P_CPL5 0xf
50
51 struct cmac;
52 struct cphy;
53
54 struct port_info {
55         struct net_device *dev;
56         struct cmac *mac;
57         struct cphy *phy;
58         struct link_config link_config;
59         struct net_device_stats netstats;
60 };
61
62 struct cxgbdev;
63 struct t1_sge;
64 struct pemc3;
65 struct pemc4;
66 struct pemc5;
67 struct peulp;
68 struct petp;
69 struct pecspi;
70 struct peespi;
71 struct work_struct;
72 struct vlan_group;
73
74 enum {                                  /* adapter flags */
75         FULL_INIT_DONE        = 0x1,
76         USING_MSI             = 0x2,
77         TSO_CAPABLE           = 0x4,
78         TCP_CSUM_CAPABLE      = 0x8,
79         UDP_CSUM_CAPABLE      = 0x10,
80         VLAN_ACCEL_CAPABLE    = 0x20,
81         RX_CSUM_ENABLED       = 0x40,
82 };
83
84 struct adapter {
85         u8 *regs;
86         struct pci_dev *pdev;
87         unsigned long registered_device_map;
88         unsigned long open_device_map;
89         unsigned int flags;
90
91         const char *name;
92         int msg_enable;
93         u32 mmio_len;
94
95         struct work_struct ext_intr_handler_task;
96         struct adapter_params params;
97
98         struct vlan_group *vlan_grp;
99
100         /* Terminator modules. */
101         struct sge    *sge;
102         struct pemc3  *mc3;
103         struct pemc4  *mc4;
104         struct pemc5  *mc5;
105         struct petp   *tp;
106         struct pecspi *cspi;
107         struct peespi *espi;
108         struct peulp  *ulp;
109
110         struct port_info port[MAX_NPORTS];
111         struct work_struct stats_update_task;
112         struct timer_list stats_update_timer;
113
114         struct semaphore mib_mutex;
115         spinlock_t tpi_lock;
116         spinlock_t work_lock;
117
118         spinlock_t async_lock ____cacheline_aligned; /* guards async operations */
119         u32 slow_intr_mask;
120 };
121
122 #endif