Documentation
¶
Overview ¶
The ethtool package aims to provide a library that provides easy access to the Linux SIOCETHTOOL ioctl operations. It can be used to retrieve information from a network device such as statistics, driver related information or even the peer of a VETH interface.
Package ethtool aims to provide a library giving a simple access to the Linux SIOCETHTOOL ioctl operations. It can be used to retrieve informations from a network device like statistics, driver related informations or even the peer of a VETH interface.
Package ethtool aims to provide a library giving a simple access to the Linux SIOCETHTOOL ioctl operations. It can be used to retrieve informations from a network device like statistics, driver related informations or even the peer of a VETH interface.
Index ¶
- Constants
- func BusInfo(intf string) (string, error)
- func CmdGetMapped(intf string) (map[string]uint64, error)
- func DriverName(intf string) (string, error)
- func MsglvlGet(intf string) (uint32, error)
- func MsglvlSet(intf string, valset uint32) (uint32, uint32, error)
- func PermAddr(intf string) (string, error)
- func Stats(intf string) (map[string]uint64, error)
- type Channels
- type Coalesce
- type DrvInfo
- type Ethtool
- func (e *Ethtool) BusInfo(intf string) (string, error)
- func (e *Ethtool) Change(intf string, config map[string]bool) error
- func (e *Ethtool) Close()
- func (e *Ethtool) CmdGet(ecmd *EthtoolCmd, intf string) (uint32, error)
- func (e *Ethtool) CmdGetMapped(intf string) (map[string]uint64, error)
- func (e *Ethtool) CmdSet(ecmd *EthtoolCmd, intf string) (uint32, error)
- func (e *Ethtool) DriverInfo(intf string) (DrvInfo, error)
- func (e *Ethtool) DriverName(intf string) (string, error)
- func (e *Ethtool) FeatureNames(intf string) (map[string]uint, error)
- func (e *Ethtool) Features(intf string) (map[string]bool, error)
- func (e *Ethtool) GetChannels(intf string) (Channels, error)
- func (e *Ethtool) GetCoalesce(intf string) (Coalesce, error)
- func (e *Ethtool) GetTimestampingInformation(intf string) (TimestampingInformation, error)
- func (e *Ethtool) LinkState(intf string) (uint32, error)
- func (e *Ethtool) ModuleEeprom(intf string) ([]byte, error)
- func (e *Ethtool) ModuleEepromHex(intf string) (string, error)
- func (e *Ethtool) MsglvlGet(intf string) (uint32, error)
- func (e *Ethtool) MsglvlSet(intf string, valset uint32) (uint32, uint32, error)
- func (e *Ethtool) PermAddr(intf string) (string, error)
- func (e *Ethtool) SetChannels(intf string, channels Channels) (Channels, error)
- func (e *Ethtool) Stats(intf string) (map[string]uint64, error)
- type EthtoolCmd
- type TimestampingInformation
Constants ¶
const ( ETH_GSTRING_LEN = 32 ETH_SS_STATS = 1 ETH_SS_FEATURES = 4 // CMD supported ETHTOOL_GDRVINFO = 0x00000003 /* Get driver info. */ ETHTOOL_GSTRINGS = 0x0000001b /* get specified string set */ ETHTOOL_GSTATS = 0x0000001d /* get NIC-specific statistics */ // other CMDs from ethtool-copy.h of ethtool-3.5 package ETHTOOL_GSET = 0x00000001 /* Get settings. */ ETHTOOL_SSET = 0x00000002 /* Set settings. */ ETHTOOL_GMSGLVL = 0x00000007 /* Get driver message level */ ETHTOOL_SMSGLVL = 0x00000008 /* Set driver msg level. */ ETHTOOL_GCHANNELS = 0x0000003c /* Get no of channels */ ETHTOOL_SCHANNELS = 0x0000003d /* Set no of channels */ ETHTOOL_GCOALESCE = 0x0000000e /* Get coalesce config */ /* Get link status for host, i.e. whether the interface *and* the * physical port (if there is one) are up (ethtool_value). */ ETHTOOL_GLINK = 0x0000000a ETHTOOL_GMODULEINFO = 0x00000042 /* Get plug-in module information */ ETHTOOL_GMODULEEEPROM = 0x00000043 /* Get plug-in module eeprom */ ETHTOOL_GPERMADDR = 0x00000020 /* Get permanent hardware address */ ETHTOOL_GFEATURES = 0x0000003a /* Get device offload settings */ ETHTOOL_SFEATURES = 0x0000003b /* Change device offload settings */ ETHTOOL_GFLAGS = 0x00000025 /* Get flags bitmap(ethtool_value) */ ETHTOOL_GSSET_INFO = 0x00000037 /* Get string set info */ ETHTOOL_GET_TS_INFO = 0x00000041 /* Get time stamping and PHC info */ )
ethtool stats related constants.
const ( MAX_GSTRINGS = 32768 MAX_FEATURE_BLOCKS = (MAX_GSTRINGS + 32 - 1) / 32 EEPROM_LEN = 640 PERMADDR_LEN = 32 )
MAX_GSTRINGS maximum number of stats entries that ethtool can retrieve currently.
const ( SOF_TIMESTAMPING_TX_HARDWARE = (1 << 0) SOF_TIMESTAMPING_TX_SOFTWARE = (1 << 1) SOF_TIMESTAMPING_RX_HARDWARE = (1 << 2) SOF_TIMESTAMPING_RX_SOFTWARE = (1 << 3) SOF_TIMESTAMPING_SOFTWARE = (1 << 4) SOF_TIMESTAMPING_SYS_HARDWARE = (1 << 5) SOF_TIMESTAMPING_RAW_HARDWARE = (1 << 6) SOF_TIMESTAMPING_OPT_ID = (1 << 7) SOF_TIMESTAMPING_TX_SCHED = (1 << 8) SOF_TIMESTAMPING_TX_ACK = (1 << 9) SOF_TIMESTAMPING_OPT_CMSG = (1 << 10) SOF_TIMESTAMPING_OPT_TSONLY = (1 << 11) SOF_TIMESTAMPING_OPT_STATS = (1 << 12) SOF_TIMESTAMPING_OPT_PKTINFO = (1 << 13) SOF_TIMESTAMPING_OPT_TX_SWHW = (1 << 14) SOF_TIMESTAMPING_BIND_PHC = (1 << 15) )
const ( /* * No outgoing packet will need hardware time stamping; * should a packet arrive which asks for it, no hardware * time stamping will be done. */ HWTSTAMP_TX_OFF = iota /* * Enables hardware time stamping for outgoing packets; * the sender of the packet decides which are to be * time stamped by setting %SOF_TIMESTAMPING_TX_SOFTWARE * before sending the packet. */ HWTSTAMP_TX_ON /* * Enables time stamping for outgoing packets just as * HWTSTAMP_TX_ON does, but also enables time stamp insertion * directly into Sync packets. In this case, transmitted Sync * packets will not received a time stamp via the socket error * queue. */ HWTSTAMP_TX_ONESTEP_SYNC /* * Same as HWTSTAMP_TX_ONESTEP_SYNC, but also enables time * stamp insertion directly into PDelay_Resp packets. In this * case, neither transmitted Sync nor PDelay_Resp packets will * receive a time stamp via the socket error queue. */ HWTSTAMP_TX_ONESTEP_P2P )
const ( HWTSTAMP_FILTER_NONE = iota /* time stamp no incoming packet at all */ HWTSTAMP_FILTER_ALL /* time stamp any incoming packet */ HWTSTAMP_FILTER_SOME /* return value: time stamp all packets requested plus some others */ HWTSTAMP_FILTER_PTP_V1_L4_EVENT /* PTP v1, UDP, any kind of event packet */ HWTSTAMP_FILTER_PTP_V1_L4_SYNC /* PTP v1, UDP, Sync packet */ HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ /* PTP v1, UDP, Delay_req packet */ HWTSTAMP_FILTER_PTP_V2_L4_EVENT /* PTP v2, UDP, any kind of event packet */ HWTSTAMP_FILTER_PTP_V2_L4_SYNC /* PTP v2, UDP, Sync packet */ HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ /* PTP v2, UDP, Delay_req packet */ HWTSTAMP_FILTER_PTP_V2_L2_EVENT /* 802.AS1, Ethernet, any kind of event packet */ HWTSTAMP_FILTER_PTP_V2_L2_SYNC /* 802.AS1, Ethernet, Sync packet */ HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ /* 802.AS1, Ethernet, Delay_req packet */ HWTSTAMP_FILTER_PTP_V2_EVENT /* PTP v2/802.AS1, any layer, any kind of event packet */ HWTSTAMP_FILTER_PTP_V2_SYNC /* PTP v2/802.AS1, any layer, Sync packet */ HWTSTAMP_FILTER_PTP_V2_DELAY_REQ /* PTP v2/802.AS1, any layer, Delay_req packet */ HWTSTAMP_FILTER_NTP_ALL /* NTP, UDP, all versions and packet modes */ )
const (
IFNAMSIZ = 16
)
Maximum size of an interface name
const (
SIOCETHTOOL = 0x8946
)
ioctl ethtool request
Variables ¶
This section is empty.
Functions ¶
func DriverName ¶
DriverName returns the driver name of the given interface name.
Types ¶
type Channels ¶
type Channels struct {
Cmd uint32
MaxRx uint32
MaxTx uint32
MaxOther uint32
MaxCombined uint32
RxCount uint32
TxCount uint32
OtherCount uint32
CombinedCount uint32
}
Channels contains the number of channels for a given interface.
type Coalesce ¶
type Coalesce struct {
Cmd uint32
RxCoalesceUsecs uint32
RxMaxCoalescedFrames uint32
RxCoalesceUsecsIrq uint32
RxMaxCoalescedFramesIrq uint32
TxCoalesceUsecs uint32
TxMaxCoalescedFrames uint32
TxCoalesceUsecsIrq uint32
TxMaxCoalescedFramesIrq uint32
StatsBlockCoalesceUsecs uint32
UseAdaptiveRxCoalesce uint32
UseAdaptiveTxCoalesce uint32
PktRateLow uint32
RxCoalesceUsecsLow uint32
RxMaxCoalescedFramesLow uint32
TxCoalesceUsecsLow uint32
TxMaxCoalescedFramesLow uint32
PktRateHigh uint32
RxCoalesceUsecsHigh uint32
RxMaxCoalescedFramesHigh uint32
TxCoalesceUsecsHigh uint32
TxMaxCoalescedFramesHigh uint32
RateSampleInterval uint32
}
Coalesce is a coalesce config for an interface
type DrvInfo ¶
type DrvInfo struct {
Cmd uint32
Driver string
Version string
FwVersion string
BusInfo string
EromVersion string
Reserved2 string
NPrivFlags uint32
NStats uint32
TestInfoLen uint32
EedumpLen uint32
RegdumpLen uint32
}
DrvInfo contains driver information ethtool.h v3.5: struct ethtool_drvinfo
type Ethtool ¶
type Ethtool struct {
// contains filtered or unexported fields
}
func (*Ethtool) CmdGet ¶
func (e *Ethtool) CmdGet(ecmd *EthtoolCmd, intf string) (uint32, error)
CmdGet returns the interface settings in the receiver struct and returns speed
func (*Ethtool) CmdGetMapped ¶
CmdGetMapped returns the interface settings in a map
func (*Ethtool) CmdSet ¶
func (e *Ethtool) CmdSet(ecmd *EthtoolCmd, intf string) (uint32, error)
CmdSet sets and returns the settings in the receiver struct and returns speed
func (*Ethtool) DriverInfo ¶
DriverInfo returns driver information of the given interface name.
func (*Ethtool) DriverName ¶
DriverName returns the driver name of the given interface name.
func (*Ethtool) FeatureNames ¶
FeatureNames shows supported features by their name.
func (*Ethtool) GetChannels ¶
GetChannels returns the number of channels for the given interface name.
func (*Ethtool) GetCoalesce ¶
GetCoalesce returns the coalesce config for the given interface name.
func (*Ethtool) GetTimestampingInformation ¶ added in v0.3.0
func (e *Ethtool) GetTimestampingInformation(intf string) (TimestampingInformation, error)
GetTimestampingInformation returns the PTP timestamping information for the given interface name.
func (*Ethtool) ModuleEeprom ¶
ModuleEeprom returns Eeprom information of the given interface name.
func (*Ethtool) ModuleEepromHex ¶
ModuleEeprom returns Eeprom information of the given interface name.
func (*Ethtool) MsglvlSet ¶
MsglvlSet returns the read-msglvl, post-set-msglvl of the given interface.
func (*Ethtool) SetChannels ¶
SetChannels sets the number of channels for the given interface name and returns the new number of channels.
type EthtoolCmd ¶
type EthtoolCmd struct {
Cmd uint32
Supported uint32
Advertising uint32
Speed uint16
Duplex uint8
Port uint8
Phy_address uint8
Transceiver uint8
Autoneg uint8
Mdio_support uint8
Maxtxpkt uint32
Maxrxpkt uint32
Speed_hi uint16
Eth_tp_mdix uint8
Reserved2 uint8
Lp_advertising uint32
Reserved [2]uint32
}