Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ethtool.h
Go to the documentation of this file.
1 /*
2  * ethtool.h: Defines for Linux ethtool.
3  *
4  * Copyright (C) 1998 David S. Miller ([email protected])
5  * Copyright 2001 Jeff Garzik <[email protected]>
6  * Portions Copyright 2001 Sun Microsystems ([email protected])
7  * Portions Copyright 2002 Intel ([email protected],
10  * Portions Copyright (C) Sun Microsystems 2008
11  */
12 #ifndef _LINUX_ETHTOOL_H
13 #define _LINUX_ETHTOOL_H
14 
15 #include <linux/compat.h>
16 #include <uapi/linux/ethtool.h>
17 
18 #ifdef CONFIG_COMPAT
19 
20 struct compat_ethtool_rx_flow_spec {
21  u32 flow_type;
22  union ethtool_flow_union h_u;
23  struct ethtool_flow_ext h_ext;
24  union ethtool_flow_union m_u;
25  struct ethtool_flow_ext m_ext;
26  compat_u64 ring_cookie;
27  u32 location;
28 };
29 
30 struct compat_ethtool_rxnfc {
31  u32 cmd;
32  u32 flow_type;
34  struct compat_ethtool_rx_flow_spec fs;
35  u32 rule_cnt;
36  u32 rule_locs[0];
37 };
38 
39 #endif /* CONFIG_COMPAT */
40 
41 #include <linux/rculist.h>
42 
43 extern int __ethtool_get_settings(struct net_device *dev,
44  struct ethtool_cmd *cmd);
45 
60 };
61 
62 struct net_device;
63 
64 /* Some generic methods drivers may use in their ethtool_ops */
66 int ethtool_op_get_ts_info(struct net_device *dev, struct ethtool_ts_info *eti);
67 
75 static inline u32 ethtool_rxfh_indir_default(u32 index, u32 n_rx_rings)
76 {
77  return index % n_rx_rings;
78 }
79 
190 struct ethtool_ops {
191  int (*get_settings)(struct net_device *, struct ethtool_cmd *);
192  int (*set_settings)(struct net_device *, struct ethtool_cmd *);
193  void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
195  void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
196  void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
197  int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
200  int (*nway_reset)(struct net_device *);
201  u32 (*get_link)(struct net_device *);
203  int (*get_eeprom)(struct net_device *,
204  struct ethtool_eeprom *, u8 *);
205  int (*set_eeprom)(struct net_device *,
206  struct ethtool_eeprom *, u8 *);
207  int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
208  int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
210  struct ethtool_ringparam *);
212  struct ethtool_ringparam *);
214  struct ethtool_pauseparam*);
216  struct ethtool_pauseparam*);
217  void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
218  void (*get_strings)(struct net_device *, u32 stringset, u8 *);
221  struct ethtool_stats *, u64 *);
222  int (*begin)(struct net_device *);
223  void (*complete)(struct net_device *);
227  int (*get_rxnfc)(struct net_device *,
228  struct ethtool_rxnfc *, u32 *rule_locs);
229  int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
230  int (*flash_device)(struct net_device *, struct ethtool_flash *);
231  int (*reset)(struct net_device *, u32 *);
233  int (*get_rxfh_indir)(struct net_device *, u32 *);
234  int (*set_rxfh_indir)(struct net_device *, const u32 *);
236  int (*set_channels)(struct net_device *, struct ethtool_channels *);
237  int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
239  struct ethtool_dump *, void *);
240  int (*set_dump)(struct net_device *, struct ethtool_dump *);
241  int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
243  struct ethtool_modinfo *);
245  struct ethtool_eeprom *, u8 *);
246  int (*get_eee)(struct net_device *, struct ethtool_eee *);
247  int (*set_eee)(struct net_device *, struct ethtool_eee *);
248 
249 
250 };
251 #endif /* _LINUX_ETHTOOL_H */