rethtool 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4db6e4f08553fb426f053a306cb165aaa72bdd4b
4
+ data.tar.gz: 91cc79990c7f9b4c2e74e36ca66886f7c9d8c1a0
5
+ SHA512:
6
+ metadata.gz: f15308539e56008091de3c06b2f0b54a6fe6d9defdb817249668b6f5b3414fbe4faa1243878994303fcb27c5dfab0c13075d3e6fd5e1b47c75afe735d8e130bc
7
+ data.tar.gz: 8a7775619bcaaa5075df7cb4757b8d2f5a314b2bd96e1a831154b45115611b0c9fc863c8249674a1f547db9930fa7afb2263309ea669c0a3943ed40f7bfb508c
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -19,8 +19,11 @@ class Rethtool
19
19
  SIOCETHTOOL = 0x8946
20
20
 
21
21
  # From /u/i/linux/ethtool.h
22
- ETHTOOL_CMD_GLINK = 0x0000000a
23
- ETHTOOL_CMD_GSET = 0x00000001
22
+ ETHTOOL_CMD_GLINK = 0x0000000a
23
+ ETHTOOL_CMD_GSET = 0x00000001
24
+ ETHTOOL_CMD_GDRVINFO = 0x00000003
25
+ ETHTOOL_CMD_GRINGPARAM = 0x00000010
26
+ ETHTOOL_CMD_SRINGPARAM = 0x00000011
24
27
 
25
28
  class << self
26
29
  # Issue an SIOCETHTOOL ioctl. ecmd must respond to #data (such
@@ -31,12 +34,11 @@ class Rethtool
31
34
  def ioctl(interface, ecmd)
32
35
  sock = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
33
36
 
34
- ifreq = [interface, ecmd.data].pack("a16p")
37
+ rv = ecmd.clone
38
+ ifreq = [interface, ecmd.data].pack("a16P#{rv.data.length}")
35
39
 
36
40
  sock.ioctl(SIOCETHTOOL, ifreq)
37
41
 
38
- rv = ecmd.class.new
39
- rv.data = ifreq.unpack("a16p")[1]
40
42
  rv
41
43
  end
42
44
  end
@@ -44,3 +46,4 @@ end
44
46
 
45
47
  require 'rethtool/interface_settings'
46
48
  require 'rethtool/link_status'
49
+ require 'rethtool/ring_settings'
@@ -21,3 +21,29 @@ class Rethtool::EthtoolCmd < CStruct
21
21
  uint32 :reserved2
22
22
  uint32 :reserved3
23
23
  end
24
+
25
+ class Rethtool::EthtoolCmdDriver < CStruct
26
+ uint32 :cmd
27
+ char :driver,[32]
28
+ char :version,[32]
29
+ char :fw_version,[32]
30
+ char :bus_info,[32]
31
+ char :reserved1,[32]
32
+ char :reserved2,[16]
33
+ uint32 :n_stats
34
+ uint32 :testinfo_len
35
+ uint32 :eedump_len
36
+ uint32 :regdump_len
37
+ end
38
+
39
+ class Rethtool::EthtoolCmdRing < CStruct
40
+ uint32 :cmd
41
+ uint32 :rx_max_pending
42
+ uint32 :rx_mini_max_pending
43
+ uint32 :rx_jumbo_max_pending
44
+ uint32 :tx_max_pending
45
+ uint32 :rx_pending
46
+ uint32 :rx_mini_pending
47
+ uint32 :rx_jumbo_pending
48
+ uint32 :tx_pending
49
+ end
@@ -39,9 +39,20 @@ class Rethtool::InterfaceSettings
39
39
  @interface = interface
40
40
  cmd = Rethtool::EthtoolCmd.new
41
41
  cmd.cmd = Rethtool::ETHTOOL_CMD_GSET
42
-
43
42
  @data = Rethtool.ioctl(interface, cmd)
43
+
44
+ @driver_info = Rethtool::DriverSettings.new(interface)
44
45
  end
46
+
47
+ # Returns a string with the value of the interface driver (kernel module).
48
+ def driver
49
+ @driver_info.driver
50
+ end
51
+
52
+ # Returns a string with the bus information of the interface.
53
+ def bus_info
54
+ @driver_info.bus_info
55
+ end
45
56
 
46
57
  # Return an array of the modes supported by the interface. Returns an
47
58
  # array of Mode objects.
@@ -128,11 +139,25 @@ class Rethtool::InterfaceSettings
128
139
  1 << 17 => Mode.new(1000, :full, 'KX'),
129
140
  1 << 18 => Mode.new(10000, :full, 'KX4'),
130
141
  1 << 19 => Mode.new(10000, :full, 'KR'),
131
- 1 << 20 => Mode.new(10000, :fec, 'R')
142
+ 1 << 20 => Mode.new(10000, :fec, 'R'),
143
+ 1 << 21 => Mode.new(20000, :full, 'MLD2'),
144
+ 1 << 22 => Mode.new(20000, :full, 'KR2'),
145
+ 1 << 23 => Mode.new(40000, :full, 'KR4'),
146
+ 1 << 24 => Mode.new(40000, :full, 'CR4'),
147
+ 1 << 25 => Mode.new(40000, :full, 'SR4'),
148
+ 1 << 26 => Mode.new(40000, :full, 'LR4'),
149
+ 1 << 27 => Mode.new(56000, :full, 'KR4'),
150
+ 1 << 28 => Mode.new(56000, :full, 'CR4'),
151
+ 1 << 29 => Mode.new(56000, :full, 'SR4'),
152
+ 1 << 30 => Mode.new(56000, :full, 'LR4'),
132
153
  }
133
154
 
134
155
  # Turn a uint32 of bits into a list of supported modes. Sigh.
135
156
  def modes(data)
136
157
  PossibleModes.find_all { |m| (m[0] & data) > 0 }.map { |m| m[1] }
137
158
  end
159
+
160
+ def as_str(str)
161
+ str.pack('c*').delete("\000")
162
+ end
138
163
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rethtool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Palmer
@@ -14,65 +13,57 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: cstruct
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
33
  version: '10.0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
40
  version: '10.0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bundler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
47
  version: '1.0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
54
  version: '1.0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rdoc
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
61
  version: '2.4'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
68
  version: '2.4'
78
69
  description:
@@ -94,28 +85,24 @@ files:
94
85
  homepage: http://theshed.hezmatt.org/rethtool
95
86
  licenses:
96
87
  - GPLv3
88
+ metadata: {}
97
89
  post_install_message:
98
90
  rdoc_options: []
99
91
  require_paths:
100
92
  - lib
101
93
  required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
94
  requirements:
104
- - - ! '>='
95
+ - - ">="
105
96
  - !ruby/object:Gem::Version
106
97
  version: '0'
107
- segments:
108
- - 0
109
- hash: 2868922360395750442
110
98
  required_rubygems_version: !ruby/object:Gem::Requirement
111
- none: false
112
99
  requirements:
113
- - - ! '>='
100
+ - - ">="
114
101
  - !ruby/object:Gem::Version
115
102
  version: '0'
116
103
  requirements: []
117
104
  rubyforge_project:
118
- rubygems_version: 1.8.23
105
+ rubygems_version: 2.2.2
119
106
  signing_key:
120
107
  specification_version: 3
121
108
  summary: Partial Ruby wrapper around the SIOCETHTOOL ioctl