Setting 100baseTX full-duplex persistently on LAGG members
You may have seen that I noted in https://forum.pfsense.org/index.php?topic=89085.0 that I have some LAGG interfaces and the upstream colo provider requires we set them at 100baseTX full-duplex. There's no GUI facility to do this on a LAGG and no GUI facility to do this on the LAGG members since they don't have their own config page.
I can do it on the command line manually with
ifconfig igb0 media 100baseTX mediaopt full-duplex
ifconfig bce0 media 100baseTX mediaopt full-duplex
but that doesn't survive a reboot.
I attempted to do it by creating /etc/rc.conf.local containing:
ifconfig_igb0="media 100baseTX mediaopt full-duplex"
ifconfig_bce0="media 100baseTX mediaopt full-duplex"
But that doesn't seem to set it, when run manually or at boot time.
I also removed each NIC from the LAGG, create a new interface with that NIC, set it at 100baseTX full-duplex, removed the interface and re-added the NIC to the LAGG, that appeared to work but again didn't survive a reboot. I also noticed that I couldn't do it on a NIC that isn't currently connected to the network (one of the NICs in the LAGG is disconnected).
Without being full-duplex, throughput is noticeably slow and CARP VIPs on the LAGGs are unstable due to packet errors and collisions.
I also notice that whatever the status of the interface speed and duplex, the LAGG reports itself as "media: Ethernet autoselect"
Can anybody advise on how to set this so that is persists after a reboot?
Thanks for that. I backed up the config for all areas, edited the file in Notepad++ and added:
<shellcmd>ifconfig igb0 media 100baseTX mediaopt full-duplex</shellcmd> <shellcmd>ifconfig bce0 media 100baseTX mediaopt full-duplex</shellcmd>
I didn't touch anything else. Restored the config, the firewall rebooted and wouldn't get past the bootloader, throwing the error:
boot t/config: -S9600 -DNo t/config
It took me about 90 mins to figure this out, but it seems like the restore process added:
It occurred to me that /boot/loader.conf wasn't getting passed so I passed it manually and the firewall came up.
Any case, when it came up, I noticed the serial console was now enabled in the GUI. I disabled it and /boot.config was empty again. Config restore bug? I didn't touch it myself…
Firewall reboots fine now and my interface came up in 100baseTX full-duplex mode, so thanks for your help. I include the above in case others encounter the same issue.
Download a package called shellcmd. Add your command in there and it will Survive a reboot.