Skip to content

Commit b6649d0

Browse files
jan-atompatrislav1
authored andcommitted
Add a quirk to support Vadatech MCHs (ignore req seq numbers)
1 parent 92af430 commit b6649d0

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ pip3 install mmcterm
1111
## Usage
1212

1313
```
14-
mmcterm [-h] [-v] [-c CHANNEL] [-t INTERVAL] [-l] [-d] [-i] [-m MAX_PKT_SIZE] mch_addr mmc_addr
14+
mmcterm [-h] [-v] [-c CHANNEL] [-t INTERVAL] [-l] [-d] [-i] [-m MAX_PKT_SIZE] [--vadatech-quirk] mch_addr mmc_addr
1515
1616
DESY MMC Serial over IPMB console
1717
1818
positional arguments:
1919
mch_addr IP address or hostname of MCH
2020
mmc_addr IPMB-L address of MMC or "AMCn" (n=1..12)
2121
22-
optional arguments:
22+
options:
2323
-h, --help show this help message and exit
2424
-v, --version show program's version number and exit
2525
-c CHANNEL, --channel CHANNEL
@@ -31,6 +31,7 @@ optional arguments:
3131
-i, --ipmitool make pyipmi use ipmitool instead of native rmcp
3232
-m MAX_PKT_SIZE, --max-pkt-size MAX_PKT_SIZE
3333
max IPMB packet size to use (Higher numbers give better performance, but can break depending on MCH model)
34+
--vadatech-quirk Enable ipmi library quirk for Vadatech support (ignore req seq numbers)
3435
```
3536

3637
## Channels

mmcterm/mmcterm.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,20 @@ class IpmiCode(Enum):
4040

4141

4242
class IpmiConn:
43-
def __init__(self, mmc_addr, mch_url, ipmitool_mode=False):
43+
def __init__(self, mmc_addr, mch_url, ipmitool_mode=False, vadatech_quirk=False):
4444
if ipmitool_mode:
4545
interface = pyipmi.interfaces.create_interface(
4646
"ipmitool", interface_type="lan"
4747
)
4848
else:
49+
quirks_cfg = {}
50+
if vadatech_quirk:
51+
# Vadatech MCH is changing request sequence numbers on-the-fly,
52+
# we need to let the ipmi library know to ignore the sequence numbers
53+
quirks_cfg["rmcp_ignore_rq_seq"] = True
54+
4955
interface = pyipmi.interfaces.create_interface(
50-
"rmcp", keep_alive_interval=0
56+
"rmcp", keep_alive_interval=0, quirks_cfg=quirks_cfg
5157
)
5258

5359
session, target = self.mtca_mch_bridge_amc(mch_url, mmc_addr)
@@ -527,14 +533,19 @@ def main():
527533
help="max IPMB packet size to use"
528534
" (Higher numbers give better performance, but can break depending on MCH model)",
529535
)
536+
parser.add_argument(
537+
"--vadatech-quirk",
538+
action="store_true",
539+
help="Enable ipmi library quirk for Vadatech support (ignore req seq numbers)",
540+
)
530541
args = parser.parse_args()
531542

532543
if args.debug:
533544
pyipmi.logger.set_log_level(logging.DEBUG)
534545
pyipmi.logger.add_log_handler(logging.StreamHandler())
535546

536547
try:
537-
conn = IpmiConn(args.mmc_addr, args.mch_addr, ipmitool_mode=args.ipmitool)
548+
conn = IpmiConn(args.mmc_addr, args.mch_addr, ipmitool_mode=args.ipmitool, vadatech_quirk=args.vadatech_quirk)
538549
except Exception as e:
539550
print(e)
540551
sys.exit(1)

0 commit comments

Comments
 (0)