code: func (e *Ethtool) CmdGet(ecmd *EthtoolCmd, intf string) (uint32, error) {
  	ecmd.Cmd = ETHTOOL_GSET
  
  	var name [IFNAMSIZ]byte
  	copy(name[:], []byte(intf))
  
  	ifr := ifreq{
  		ifr_name: name,
  		ifr_data: uintptr(unsafe.Pointer(ecmd)),
  	}
  
  	_, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd),
  		SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr)))
  	if ep != 0 {
  		return 0, syscall.Errno(ep)
  	}
  
  	var speedval uint32 = (uint32(ecmd.Speed_hi) << 16) |
  		(uint32(ecmd.Speed) & 0xffff)
  	if speedval == math.MaxUint16 {
  		speedval = math.MaxUint32
  	}
  
  	return speedval, nil
  }
docs: // CmdGet returns the interface settings in the receiver struct
  // and returns speed