Giriş
ethtool ağ kartını kontrol etmek için kullanılıyor.
-k seçeneği
Tüm ayarların durumunu görmek için kullanılır.
Pause flowcontrol için kullanılır. Şöyle yaparız.
1500 byte'tan daha büyük paketlerin donanımda veya yazılımda bölünmesini kontrol eder. Bu seçenek genelde şöyledir.
ethtool ağ kartını kontrol etmek için kullanılıyor.
-k seçeneği
Tüm ayarların durumunu görmek için kullanılır.
ethtool -k eth0
-A pause parametrelerini değiştirirPause flowcontrol için kullanılır. Şöyle yaparız.
gso - generic segmentation offload ve generic receive offload#pause on
ethtool -A eth0 tx on rx on
#auto-negotiation is on
ethtool -A eth0 autoneg on
#restart auto-negotiation
ethtool -r eth0
1500 byte'tan daha büyük paketlerin donanımda veya yazılımda bölünmesini kontrol eder. Bu seçenek genelde şöyledir.
generic-segmentation-offload: on
generic-receive-offload: on
Yazılımda bölme yapmak için şöyle yaparız.ethtool -K eth0 gso off gro off
Şöyle yaparız.
Örnek
ethtool -K <iface> gso off &&
ethtool -K <iface> tso off &&
ethtool -K <iface> gro off
Kod içinde GSO değerinin on/off olduğu şöyle kontrol edilir.struct ethtool_value eval;
eval.cmd = ETHTOOL_GGSO;
ifr->ifr_data = (caddr_t)&eval;
err = ioctl(fd, SIOCETHTOOL, ifr);
if (err)
perror("Cannot get device generic segmentation offload settings");
else {
gso = eval.data;
allfail = 0;
}
lro - large receive OffloadÖrnek
Şöyle yaparız.
tso - tcp segmentation offload
Örnek ver.
tx ve rx checksum
IP Checksum hesaplamasının donanımda veya yazılımda yapılmasını kontrol eder. Bu seçenek genelde şöyledir.
statistics anlamına gelir. LRO sayacını görmek için şöyle yaparız.
change anlamına gelir. Şöyle yaparız.
Yukarıdak kod örneklerinin açıklaması şöyle. ethtool_value yapısı için şu satırı dahil ederiz.
eval nesnesi ifreq nesnesinin ifr_data alanına atanır.
ethtool -K <interface_name> lro on
Örnek
Şöyle yaparız.
// Turn LRO off
ethtool -K eth2 lro off
echo -e “ethtool -K eth2 lro off” >> /etc/rc.local
// Check the result
cat /etc/rc.local
ethtool -k eth2 | grep large-receive-offload
Örnek ver.
tx ve rx checksum
IP Checksum hesaplamasının donanımda veya yazılımda yapılmasını kontrol eder. Bu seçenek genelde şöyledir.
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
Yazılımda yapılması için şöyle yaparız.$ ethtool --offload eth0 rx off tx off
-S seçeneğistatistics anlamına gelir. LRO sayacını görmek için şöyle yaparız.
ethtool -S <interface_name> | grep lro
-s seçeneğichange anlamına gelir. Şöyle yaparız.
# ethtool -s eth1 speed 1000 duplex full
KodlamaYukarıdak kod örneklerinin açıklaması şöyle. ethtool_value yapısı için şu satırı dahil ederiz.
include <linux/ethtool.h>
Bu yapının cmd ve data isimli iki alanı var. cmd alanına komutu yazarız. data alanı 1 = on 0=off değerini alır.eval nesnesi ifreq nesnesinin ifr_data alanına atanır.
struct ifreq ifr;
struct ethtool_cmd edata;
strncpy(ifr.ifr_name, "eth0", sizeof(ifr.ifr_name));
ifr.ifr_data = &edata;
Bazı kodlarda şu şekilde cast görülebilir.ifr.ifr_data = (caddr_t)&edata;
Hiç yorum yok:
Yorum Gönder