Что означают особенности устройств Ethe rnet в ethtool? Как изменить функции в C программе? - PullRequest
0 голосов
/ 14 февраля 2020

Как мы знаем, мы можем использовать ethtool -k для получения функций устройств Ethel rnet, и мы можем использовать ethtool -K для изменения статуса featueres.

Я хочу изменить некоторые функции устройств Ethe rnet в моей программе C.
Я хочу использовать ioctl с ETHTOOL_SFEATURES, чтобы сделать это:

#define ETHTOOL_SFEATURES   0x0000003b /* Change device offload settings */

Я думаю, возможно, мне нужно передать аргумент struct ethtool_sfeatures в ioctl:

/**
 * struct ethtool_set_features_block - block with request for 32 features
 * @valid: mask of features to be changed
 * @requested: values of features to be changed
 */
struct ethtool_set_features_block {
    __u32   valid;
    __u32   requested;
};

/**
 * struct ethtool_sfeatures - command to request change in device's features
 * @cmd: command number = %ETHTOOL_SFEATURES
 * @size: array size of the features[] array
 * @features: feature change masks
 */
struct ethtool_sfeatures {
    __u32   cmd;
    __u32   size;
    struct ethtool_set_features_block features[0];
};

Но я не знаю, каким должен быть действительный аргумент ethtool_set_features_block, и я не знаю, что означает маска в комментариях.
Я пытался скомпилировать ethtool с помощью -g и отладить, когда я использую ethtool -K для изменения функции, и я могу получить маску, но я хочу знать, будет ли маска отличаться на другом компьютере или на другом Ethe rnet устройства?
Может быть, мне следует каждый раз пытаться получить маску функций, прежде чем менять ее, чтобы не использовать маску, которая может быть неправильной?

...