Dear Linux folks,
The driver e1000e has several parameters [1]:
$ modinfo e1000e
filename:
/lib/modules/6.6.35.mx64.477/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
[…]
alias: pci:v00008086d0000105Esv*sd*bc*sc*i*
depends:
retpoline: Y
intree: Y
name: e1000e
vermagic: 6.6.35.mx64.477 SMP preempt mod_unload modversions
parm: debug:Debug level (0=none,...,16=all) (int)
parm: copybreak:Maximum size of packet that is copied to
a new buffer on receive (uint)
parm: TxIntDelay:Transmit Interrupt Delay (array of int)
parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay
(array of int)
parm: RxIntDelay:Receive Interrupt Delay (array of int)
parm: RxAbsIntDelay:Receive Absolute Interrupt Delay
(array of int)
parm: InterruptThrottleRate:Interrupt Throttling Rate
(array of int)
parm: IntMode:Interrupt Mode (array of int)
parm: SmartPowerDownEnable:Enable PHY smart power down
(array of int)
parm: KumeranLockLoss:Enable Kumeran lock loss workaround
(array of int)
parm: WriteProtectNVM:Write-protect NVM [WARNING:
disabling this can lead to corrupted NVM] (array of int)
parm: CrcStripping:Enable CRC Stripping, disable if your
BMC needs the CRC (array of int)
Unfortunately, only `copybreak` seems to be exposed via sysfs:
$ ls /sys/module/e1000e/parameters/
copybreak
Adding `e1000e.debug=16` to the Linux command line in GRUB also does not
seem to help – at least no additional messages are logged by Linux.
The StackExchange thread *Debugging why NIC link comes up/down
constantly* [2] makes the same observations. Regarding the reason,
LinuxQuestions.org has the answer [3], that the permissions are set to
0, so the parameters are not exposed:
From `drivers/net/ethernet/intel/e1000e/param.c`:
```
/* All parameters are treated the same, as an integer array of values.
* This macro just reduces the need to repeat the same declaration code
* over and over (plus this helps to avoid typo bugs).
*/
#define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET }
#define E1000_PARAM(X, desc) \
static int X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
static unsigned int num_##X; \
module_param_array_named(X, X, int, &num_##X, 0); \
MODULE_PARM_DESC(X, desc);
[…]
and from `drivers/net/ethernet/intel/e1000e/netdev.c`:
static int debug = -1;
module_param(debug, int, 0);
MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
Could you please share the reason, why these are hidden from sysfs, not
allowing them to be changed at runtime?
Kind regards,
Paul
[1]:
https://www.kernel.org/doc/html/latest/networking/device_drivers/ethernet/intel/e1000.html#command-line-parameters
[2]:
https://unix.stackexchange.com/questions/662578/debugging-why-nic-link-comes-up-down-constantly
[3]: https://www.linuxquestions.org/questions/showthread.php?p=6305802