(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:REMOTE_HOST) op:Equal rhs:{(SQ )} spids:[43])] spids: [43] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LIST_DEVS) op:Equal rhs:{(FALSE)} spids:[45])] spids: [45] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DEBUGFS) op: Equal rhs: { (BracedVarSub token: <VSub_Name DEBUGFS> suffix_op: (StringUnary op_id: VTest_Hyphen arg_word: {(Lit_Slash /) (sys) (Lit_Slash /) (kernel) (Lit_Slash /) (debug)} ) spids: [50 59] ) } spids: [49] ) ] spids: [49] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:PERF_RUN_ORDER) op:Equal rhs:{(32)} spids:[62])] spids: [62] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MAX_MW_SIZE) op:Equal rhs:{(0)} spids:[65])] spids: [65] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RUN_DMA_TESTS) op:Equal rhs:{(SQ )} spids:[68])] spids: [68] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DONT_CLEANUP) op:Equal rhs:{(SQ )} spids:[70])] spids: [70] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MW_SIZE) op:Equal rhs:{(65536)} spids:[72])] spids: [72] ) (FuncDef name: show_help body: (BraceGroup children: [ (C {(echo)} {(DQ ("Usage: ") ($ VSub_Number "$0") (" [OPTIONS] LOCAL_DEV REMOTE_DEV"))}) (C {(echo)} {(DQ ("Run tests on a pair of NTB endpoints."))}) (C {(echo)}) (C {(echo)} {(DQ ("If the NTB device loops back to the same host then,"))}) (C {(echo)} {(DQ ("just specifying the two PCI ids on the command line is"))}) (C {(echo)} {(DQ ("sufficient. Otherwise, if the NTB link spans two hosts"))}) (C {(echo)} {(DQ ("use the -r option to specify the hostname for the remote"))}) (C {(echo)} {(DQ ("device. SSH will then be used to test the remote side."))}) (C {(echo)} {(DQ ("An SSH key between the root users of the host would then"))}) (C {(echo)} {(DQ ("be highly recommended."))}) (C {(echo)}) (C {(echo)} {(DQ ("Options:"))}) (C {(echo)} {(DQ (" -C don't cleanup ntb modules on exit"))}) (C {(echo)} {(DQ (" -d run dma tests"))}) (C {(echo)} {(DQ (" -h show this help message"))}) (C {(echo)} {(DQ (" -l list available local and remote PCI ids"))}) (C {(echo)} {(DQ (" -r REMOTE_HOST specify the remote's hostname to connect"))}) (C {(echo)} {(DQ (" to for the test (using ssh)"))}) (C {(echo)} { (DQ (" -p NUM ntb_perf run order (default: ") ($ VSub_Name "$PERF_RUN_ORDER") (")") ) } ) (C {(echo)} {(DQ (" -w max_mw_size maxmium memory window size"))}) (C {(echo)}) ] spids: [82] ) spids: [76 81] ) (FuncDef name: parse_args body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OPTIND) op:Equal rhs:{(0)} spids:[235])] spids: [235] ) (While cond: [ (Sentence child: (C {(getopts)} {(DQ ("Cdhlm:r:p:w:"))} {(opt)}) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name "$opt"))} arms: [ (case_arm pat_list: [{(C)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DONT_CLEANUP) op: Equal rhs: {(1)} spids: [265] ) ] spids: [265] ) ] spids: [262 263 268 -1] ) (case_arm pat_list: [{(d)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RUN_DMA_TESTS) op: Equal rhs: {(1)} spids: [274] ) ] spids: [274] ) ] spids: [271 272 277 -1] ) (case_arm pat_list: [{(h)}] action: [ (Sentence child: (C {(show_help)}) terminator: <Op_Semi ";"> ) (C {(exit)} {(0)}) ] spids: [280 281 290 -1] ) (case_arm pat_list: [{(l)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LIST_DEVS) op: Equal rhs: {(TRUE)} spids: [296] ) ] spids: [296] ) ] spids: [293 294 299 -1] ) (case_arm pat_list: [{(m)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MW_SIZE) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [305] ) ] spids: [305] ) ] spids: [302 303 310 -1] ) (case_arm pat_list: [{(r)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REMOTE_HOST) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [316] ) ] spids: [316] ) ] spids: [313 314 321 -1] ) (case_arm pat_list: [{(p)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PERF_RUN_ORDER) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [327] ) ] spids: [327] ) ] spids: [324 325 332 -1] ) (case_arm pat_list: [{(w)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MAX_MW_SIZE) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [338] ) ] spids: [338] ) ] spids: [335 336 343 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\?">)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Invalid option: -") ($ VSub_Name "$OPTARG"))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [357] ) ] ) (C {(exit)} {(1)}) ] spids: [346 347 366 -1] ) ] spids: [253 259 369] ) ] spids: [250 372] ) ) ] spids: [232] ) spids: [226 231] ) (C {(parse_args)} {(DQ ($ VSub_At "$@"))}) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:OPTIND) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [385 390] ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOCAL_DEV) op: Equal rhs: {($ VSub_Number "$1")} spids: [392] ) ] spids: [392] ) (C {(shift)}) (C {(parse_args)} {(DQ ($ VSub_At "$@"))}) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:OPTIND) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [405 410] ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REMOTE_DEV) op: Equal rhs: {($ VSub_Number "$1")} spids: [412] ) ] spids: [412] ) (C {(shift)}) (C {(parse_args)} {(DQ ($ VSub_At "$@"))}) (C {(set)} {(-e)}) (FuncDef name: _modprobe body: (BraceGroup children:[(C {(modprobe)} {(DQ ($ VSub_At "$@"))})] spids:[435]) spids: [429 434] ) (FuncDef name: split_remote body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VPATH) op: Equal rhs: {($ VSub_Number "$1")} spids: [456] ) ] spids: [456] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:REMOTE) op:Equal rhs:{(SQ )} spids:[460])] spids: [460] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$VPATH"))} right: {(Lit_Other "*") (DQ (":/")) (Lit_Other "*")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REMOTE) op: Equal rhs: { (BracedVarSub token: <VSub_Name VPATH> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(":*")}) spids: [487 491] ) } spids: [486] ) ] spids: [486] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VPATH) op: Equal rhs: { (BracedVarSub token: <VSub_Name VPATH> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*:")}) spids: [495 499] ) } spids: [494] ) ] spids: [494] ) ] spids: [-1 483] ) ] spids: [-1 502] ) ] spids: [453] ) spids: [447 452] ) (FuncDef name: read_file body: (BraceGroup children: [ (C {(split_remote)} {($ VSub_Number "$1")}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$REMOTE"))} right: {(DQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(ssh)} {(DQ ($ VSub_Name "$REMOTE"))} {(cat)} {(DQ ($ VSub_Name "$VPATH"))}) ] spids: [-1 537] ) ] else_action: [(C {(cat)} {(DQ ($ VSub_Name "$VPATH"))})] spids: [553 563] ) ] spids: [513] ) spids: [507 512] ) (FuncDef name: write_file body: (BraceGroup children: [ (C {(split_remote)} {($ VSub_Number "$2")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VALUE) op: Equal rhs: {($ VSub_Number "$1")} spids: [582] ) ] spids: [582] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$REMOTE"))} right: {(DQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(ssh)} {(DQ ($ VSub_Name "$REMOTE"))} { (DQ ("echo ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$VALUE") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" > ") (EscapedLiteralPart token: <Lit_EscapedChar "\\\""> ) ($ VSub_Name "$VPATH") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } ) ] spids: [-1 603] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$VALUE"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$VPATH"))} spids: [633] ) ] ) ] spids: [624 640] ) ] spids: [574] ) spids: [568 573] ) (FuncDef name: link_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC) op: Equal rhs: {($ VSub_Number "$1")} spids: [654] ) ] spids: [654] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM) op: Equal rhs: {($ VSub_Number "$2")} spids: [658] ) ] spids: [658] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:EXP) op:Equal rhs:{(0)} spids:[662])] spids: [662] ) (C {(echo)} { (DQ ("Running link tests on: ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$LOC")})]) left_token: <Left_CommandSub "$("> spids: [671 675] ) (" / ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$REM")})]) left_token: <Left_CommandSub "$("> spids: [677 681] ) ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(write_file)} {(DQ (N))} {(DQ ($ VSub_Name "$LOC") (/link))}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [701] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ (" Unsupported"))}) (ControlFlow token:<ControlFlow_Return return>) ] spids: [-1 706] ) ] spids: [-1 719] ) (C {(write_file)} {(DQ (N))} {(DQ ($ VSub_Name "$LOC") (/link_event))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (CommandSubPart command_list: (CommandList children: [(C {(read_file)} {(DQ ($ VSub_Name "$REM") (/link))})] ) left_token: <Left_CommandSub "$("> spids: [740 747] ) } right: {(DQ (N))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ("Expected remote link to be down in ") ($ VSub_Name "$REM") (/link))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[769])] ) (C {(exit)} {(-1)}) ] spids: [-1 758] ) ] spids: [-1 778] ) (C {(write_file)} {(DQ (Y))} {(DQ ($ VSub_Name "$LOC") (/link))}) (C {(write_file)} {(DQ (Y))} {(DQ ($ VSub_Name "$LOC") (/link_event))}) (C {(echo)} {(DQ (" Passed"))}) ] spids: [651] ) spids: [645 650] ) (FuncDef name: doorbell_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC) op: Equal rhs: {($ VSub_Number "$1")} spids: [825] ) ] spids: [825] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM) op: Equal rhs: {($ VSub_Number "$2")} spids: [829] ) ] spids: [829] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:EXP) op:Equal rhs:{(0)} spids:[833])] spids: [833] ) (C {(echo)} { (DQ ("Running db tests on: ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$LOC")})]) left_token: <Left_CommandSub "$("> spids: [842 846] ) (" / ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$REM")})]) left_token: <Left_CommandSub "$("> spids: [848 852] ) ) } ) (C {(write_file)} {(DQ ("c 0xFFFFFFFF"))} {(DQ ($ VSub_Name "$REM") (/db))}) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 8)}) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (AndOr children: [ (C {(let)} {(Lit_VarLike "DB=") (CommandSubPart command_list: (CommandList children: [(C {(read_file)} {(DQ ($ VSub_Name "$REM") (/db))})] ) left_token: <Left_CommandSub "$("> spids: [897 904] ) } ) (C {(true)}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$DB"))} right: {(DQ ($ VSub_Name "$EXP"))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("Doorbell doesn't match expected value ") ($ VSub_Name "$EXP") (" ") ) } {(DQ ("in ") ($ VSub_Name "$REM") (/db))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [947] ) ] ) (C {(exit)} {(-1)}) ] spids: [-1 928] ) ] spids: [-1 956] ) (AndOr children: [ (C {(let)} {(DQ ("MASK=1 << (") ($ VSub_Name "$i") ("-1)"))}) (C {(true)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(let)} {(DQ ("EXP=") ($ VSub_Name "$EXP") (" | ") ($ VSub_Name "$MASK"))}) (C {(true)}) ] op_id: Op_DPipe ) (C {(write_file)} {(DQ ("s ") ($ VSub_Name "$MASK"))} {(DQ ($ VSub_Name "$LOC") (/peer_db))} ) ] spids: [891 1000] ) ) (C {(echo)} {(DQ (" Passed"))}) ] spids: [822] ) spids: [816 821] ) (FuncDef name: read_spad body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VPATH) op: Equal rhs: {($ VSub_Number "$1")} spids: [1022] ) ] spids: [1022] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IDX) op: Equal rhs: {($ VSub_Number "$2")} spids: [1026] ) ] spids: [1026] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ROW) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(read_file)} {(DQ ($ VSub_Name "$VPATH"))}) (C {(grep)} {(-e)} {(DQ ("^") ($ VSub_Name "$IDX"))}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [1033 1050] ) } ] ) } spids: [1031] ) ] spids: [1031] ) (AndOr children: [ (C {(let)} {(Lit_VarLike "VAL=") (BracedVarSub token: <VSub_Name ROW> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1057 1062] ) } ) (C {(true)}) ] op_id: Op_DPipe ) (C {(echo)} {($ VSub_Name "$VAL")}) ] spids: [1019] ) spids: [1013 1018] ) (FuncDef name: scratchpad_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC) op: Equal rhs: {($ VSub_Number "$1")} spids: [1085] ) ] spids: [1085] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM) op: Equal rhs: {($ VSub_Number "$2")} spids: [1089] ) ] spids: [1089] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CNT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(read_file)} {(DQ ($ VSub_Name "$LOC") (/spad))}) (C {(wc)} {(-l)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [1094 1107] ) } spids: [1093] ) ] spids: [1093] ) (C {(echo)} { (DQ ("Running spad tests on: ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$LOC")})]) left_token: <Left_CommandSub "$("> spids: [1115 1119] ) (" / ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$REM")})]) left_token: <Left_CommandSub "$("> spids: [1121 1125] ) ) } ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithWord w:{($ VSub_Name "$CNT")}) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VAL) op: Equal rhs: {($ VSub_Name "$RANDOM")} spids: [1156] ) ] spids: [1156] ) (C {(write_file)} {(DQ ($ VSub_Name "$i") (" ") ($ VSub_Name "$VAL"))} {(DQ ($ VSub_Name "$LOC") (/peer_spad))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RVAL) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(read_spad)} {(DQ ($ VSub_Name "$REM") (/spad))} {($ VSub_Name "$i")} ) ] ) left_token: <Left_CommandSub "$("> spids: [1175 1184] ) } spids: [1174] ) ] spids: [1174] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$VAL"))} right: {(DQ ($ VSub_Name "$RVAL"))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("Scratchpad doesn't match expected value ") ($ VSub_Name "$VAL") (" ") ) } { (DQ ("in ") ($ VSub_Name "$REM") ("/spad, got ") ($ VSub_Name "$RVAL")) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [1225] ) ] ) (C {(exit)} {(-1)}) ] spids: [-1 1205] ) ] spids: [-1 1234] ) ] spids: [1153 1238] ) ) (C {(echo)} {(DQ (" Passed"))}) ] spids: [1082] ) spids: [1076 1081] ) (FuncDef name: write_mw body: (BraceGroup children: [ (C {(split_remote)} {($ VSub_Number "$2")}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$REMOTE"))} right: {(DQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (AndOr children: [ (SimpleCommand words: [ {(ssh)} {(DQ ($ VSub_Name "$REMOTE"))} {(dd)} {(Lit_VarLike "if=") (/dev/urandom)} {(DQ ("of=") ($ VSub_Name "$VPATH"))} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [1303] ) ] ) (C {(true)}) ] op_id: Op_DPipe ) ] spids: [-1 1282] ) ] else_action: [ (AndOr children: [ (SimpleCommand words: [ {(dd)} {(Lit_VarLike "if=") (/dev/urandom)} {(DQ ("of=") ($ VSub_Name "$VPATH"))} ] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1325])] ) (C {(true)}) ] op_id: Op_DPipe ) ] spids: [1312 1334] ) ] spids: [1257] ) spids: [1251 1256] ) (FuncDef name: mw_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IDX) op: Equal rhs: {($ VSub_Number "$1")} spids: [1348] ) ] spids: [1348] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC) op: Equal rhs: {($ VSub_Number "$2")} spids: [1352] ) ] spids: [1352] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM) op: Equal rhs: {($ VSub_Number "$3")} spids: [1356] ) ] spids: [1356] ) (C {(echo)} { (DQ ("Running ") ($ VSub_Name "$IDX") (" tests on: ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$LOC")})]) left_token: <Left_CommandSub "$("> spids: [1367 1371] ) (" / ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$REM")})]) left_token: <Left_CommandSub "$("> spids: [1373 1377] ) ) } ) (C {(write_mw)} {(DQ ($ VSub_Name "$LOC") (/) ($ VSub_Name "$IDX"))}) (C {(split_remote)} {(DQ ($ VSub_Name "$LOC") (/) ($ VSub_Name "$IDX"))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$REMOTE"))} right: {(DQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:A) op: Equal rhs: {($ VSub_Name "$VPATH")} spids: [1420] ) ] spids: [1420] ) ] spids: [-1 1417] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:A) op: Equal rhs: {(/tmp/ntb_test.) ($ VSub_Dollar "$$") (.A)} spids: [1427] ) ] spids: [1427] ) (SimpleCommand words: [{(ssh)} {(DQ ($ VSub_Name "$REMOTE"))} {(cat)} {(DQ ($ VSub_Name "$VPATH"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$A"))} spids: [1445] ) ] ) ] spids: [1424 1452] ) (C {(split_remote)} {(DQ ($ VSub_Name "$REM") (/peer_) ($ VSub_Name "$IDX"))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$REMOTE"))} right: {(DQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:B) op: Equal rhs: {($ VSub_Name "$VPATH")} spids: [1484] ) ] spids: [1484] ) ] spids: [-1 1481] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:B) op: Equal rhs: {(/tmp/ntb_test.) ($ VSub_Dollar "$$") (.B)} spids: [1491] ) ] spids: [1491] ) (SimpleCommand words: [{(ssh)} {(DQ ($ VSub_Name "$REMOTE"))} {(cat)} {(DQ ($ VSub_Name "$VPATH"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$B"))} spids: [1509] ) ] ) ] spids: [1488 1516] ) (C {(cmp)} {(-n)} {($ VSub_Name "$MW_SIZE")} {(DQ ($ VSub_Name "$A"))} {(DQ ($ VSub_Name "$B"))} ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_QMark "$?")} right: {(0)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Memory window ") ($ VSub_Name "$MW") (" did not match!"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1559])] ) ] spids: [-1 1548] ) ] spids: [-1 1563] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$A"))} right: {(DQ ("/tmp/*"))} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(rm)} {(DQ ($ VSub_Name "$A"))})] spids: [-1 1584] ) ] spids: [-1 1594] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$B"))} right: {(DQ ("/tmp/*"))} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(rm)} {(DQ ($ VSub_Name "$B"))})] spids: [-1 1615] ) ] spids: [-1 1625] ) (C {(echo)} {(DQ (" Passed"))}) ] spids: [1345] ) spids: [1339 1344] ) (FuncDef name: pingpong_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC) op: Equal rhs: {($ VSub_Number "$1")} spids: [1647] ) ] spids: [1647] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM) op: Equal rhs: {($ VSub_Number "$2")} spids: [1651] ) ] spids: [1651] ) (C {(echo)} { (DQ ("Running ping pong tests on: ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$LOC")})]) left_token: <Left_CommandSub "$("> spids: [1660 1664] ) (" / ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$REM")})]) left_token: <Left_CommandSub "$("> spids: [1666 1670] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC_START) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(read_file)} {($ VSub_Name "$LOC") (/count)})] ) left_token: <Left_CommandSub "$("> spids: [1676 1681] ) } spids: [1675] ) ] spids: [1675] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM_START) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(read_file)} {($ VSub_Name "$REM") (/count)})] ) left_token: <Left_CommandSub "$("> spids: [1685 1690] ) } spids: [1684] ) ] spids: [1684] ) (C {(sleep)} {(7)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOC_END) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(read_file)} {($ VSub_Name "$LOC") (/count)})] ) left_token: <Left_CommandSub "$("> spids: [1701 1706] ) } spids: [1700] ) ] spids: [1700] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REM_END) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(read_file)} {($ VSub_Name "$REM") (/count)})] ) left_token: <Left_CommandSub "$("> spids: [1710 1715] ) } spids: [1709] ) ] spids: [1709] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$LOC_START")} right: {($ VSub_Name "$LOC_END")} ) ) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$REM_START")} right: {($ VSub_Name "$REM_END")} ) ) ] op_id: Op_DPipe ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Ping pong counter not incrementing!"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1753])] ) (C {(exit)} {(1)}) ] spids: [-1 1744] ) ] spids: [-1 1762] ) (C {(echo)} {(DQ (" Passed"))}) ] spids: [1644] ) spids: [1638 1643] ) (FuncDef name: perf_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:USE_DMA) op: Equal rhs: {($ VSub_Number "$1")} spids: [1784] ) ] spids: [1784] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$USE_DMA")} right: {(DQ (1))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WITH) op: Equal rhs: {(DQ (with))} spids: [1807] ) ] spids: [1807] ) ] spids: [-1 1804] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WITH) op: Equal rhs: {(DQ (without))} spids: [1816] ) ] spids: [1816] ) ] spids: [1813 1822] ) (C {(_modprobe)} {(ntb_perf)} {(Lit_VarLike "run_order=") ($ VSub_Name "$PERF_RUN_ORDER")} {(Lit_VarLike "max_mw_size=") ($ VSub_Name "$MAX_MW_SIZE")} {(Lit_VarLike "use_dma=") ($ VSub_Name "$USE_DMA")} ) (C {(echo)} {(DQ ("Running local perf test ") ($ VSub_Name "$WITH") (" DMA"))}) (C {(write_file)} {(DQ )} {($ VSub_Name "$LOCAL_PERF") (/run)}) (C {(echo)} {(-n)} {(DQ (" "))}) (C {(read_file)} {($ VSub_Name "$LOCAL_PERF") (/run)}) (C {(echo)} {(DQ (" Passed"))}) (C {(echo)} {(DQ ("Running remote perf test ") ($ VSub_Name "$WITH") (" DMA"))}) (C {(write_file)} {(DQ )} {($ VSub_Name "$REMOTE_PERF") (/run)}) (C {(echo)} {(-n)} {(DQ (" "))}) (C {(read_file)} {($ VSub_Name "$LOCAL_PERF") (/run)}) (C {(echo)} {(DQ (" Passed"))}) (C {(_modprobe)} {(-r)} {(ntb_perf)}) ] spids: [1781] ) spids: [1775 1780] ) (FuncDef name: ntb_tool_tests body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOCAL_TOOL) op: Equal rhs: {($ VSub_Name "$DEBUGFS") (/ntb_tool/) ($ VSub_Name "$LOCAL_DEV")} spids: [1943] ) ] spids: [1943] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REMOTE_TOOL) op: Equal rhs: {($ VSub_Name "$REMOTE_HOST") (Lit_Other ":") ($ VSub_Name "$DEBUGFS") (/ntb_tool/) ($ VSub_Name "$REMOTE_DEV") } spids: [1949] ) ] spids: [1949] ) (C {(echo)} {(DQ ("Starting ntb_tool tests..."))}) (C {(_modprobe)} {(ntb_tool)}) (C {(write_file)} {(Y)} {($ VSub_Name "$LOCAL_TOOL") (/link_event)}) (C {(write_file)} {(Y)} {($ VSub_Name "$REMOTE_TOOL") (/link_event)}) (C {(link_test)} {($ VSub_Name "$LOCAL_TOOL")} {($ VSub_Name "$REMOTE_TOOL")}) (C {(link_test)} {($ VSub_Name "$REMOTE_TOOL")} {($ VSub_Name "$LOCAL_TOOL")}) (ForEach iter_name: PEER_TRANS iter_words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(ls)} {($ VSub_Name "$LOCAL_TOOL") (/peer_trans) (Lit_Other "*")}) ] ) left_token: <Left_CommandSub "$("> spids: [2010 2016] ) } ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name "$PEER_TRANS")})] ) left_token: <Left_CommandSub "$("> spids: [2023 2027] ) } spids: [2022] ) ] spids: [2022] ) (C {(write_file)} {($ VSub_Name "$MW_SIZE")} {($ VSub_Name "$LOCAL_TOOL") (/) ($ VSub_Name "$PT")} ) (C {(write_file)} {($ VSub_Name "$MW_SIZE")} {($ VSub_Name "$REMOTE_TOOL") (/) ($ VSub_Name "$PT")} ) ] spids: [2019 2048] ) spids: [2009 2017] ) (C {(doorbell_test)} {($ VSub_Name "$LOCAL_TOOL")} {($ VSub_Name "$REMOTE_TOOL")}) (C {(doorbell_test)} {($ VSub_Name "$REMOTE_TOOL")} {($ VSub_Name "$LOCAL_TOOL")}) (C {(scratchpad_test)} {($ VSub_Name "$LOCAL_TOOL")} {($ VSub_Name "$REMOTE_TOOL")}) (C {(scratchpad_test)} {($ VSub_Name "$REMOTE_TOOL")} {($ VSub_Name "$LOCAL_TOOL")}) (ForEach iter_name: MW iter_words: [ { (CommandSubPart command_list: (CommandList children: [(C {(ls)} {($ VSub_Name "$LOCAL_TOOL") (/mw) (Lit_Other "*")})] ) left_token: <Left_CommandSub "$("> spids: [2087 2093] ) } ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MW) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name "$MW")})] ) left_token: <Left_CommandSub "$("> spids: [2100 2104] ) } spids: [2099] ) ] spids: [2099] ) (C {(mw_test)} {($ VSub_Name "$MW")} {($ VSub_Name "$LOCAL_TOOL")} {($ VSub_Name "$REMOTE_TOOL")} ) (C {(mw_test)} {($ VSub_Name "$MW")} {($ VSub_Name "$REMOTE_TOOL")} {($ VSub_Name "$LOCAL_TOOL")} ) ] spids: [2096 2126] ) spids: [2086 2094] ) (C {(_modprobe)} {(-r)} {(ntb_tool)}) ] spids: [1940] ) spids: [1934 1939] ) (FuncDef name: ntb_pingpong_tests body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOCAL_PP) op: Equal rhs: {($ VSub_Name "$DEBUGFS") (/ntb_pingpong/) ($ VSub_Name "$LOCAL_DEV")} spids: [2148] ) ] spids: [2148] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REMOTE_PP) op: Equal rhs: {($ VSub_Name "$REMOTE_HOST") (Lit_Other ":") ($ VSub_Name "$DEBUGFS") (/ntb_pingpong/) ($ VSub_Name "$REMOTE_DEV") } spids: [2154] ) ] spids: [2154] ) (C {(echo)} {(DQ ("Starting ntb_pingpong tests..."))}) (C {(_modprobe)} {(ntb_pingpong)}) (C {(pingpong_test)} {($ VSub_Name "$LOCAL_PP")} {($ VSub_Name "$REMOTE_PP")}) (C {(_modprobe)} {(-r)} {(ntb_pingpong)}) ] spids: [2145] ) spids: [2139 2144] ) (FuncDef name: ntb_perf_tests body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOCAL_PERF) op: Equal rhs: {($ VSub_Name "$DEBUGFS") (/ntb_perf/) ($ VSub_Name "$LOCAL_DEV")} spids: [2203] ) ] spids: [2203] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REMOTE_PERF) op: Equal rhs: {($ VSub_Name "$REMOTE_HOST") (Lit_Other ":") ($ VSub_Name "$DEBUGFS") (/ntb_perf/) ($ VSub_Name "$REMOTE_DEV") } spids: [2209] ) ] spids: [2209] ) (C {(echo)} {(DQ ("Starting ntb_perf tests..."))}) (C {(perf_test)} {(0)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(WordTest w:{($ VSub_Name "$RUN_DMA_TESTS")})) terminator: <Op_Semi ";"> ) ] action: [(C {(perf_test)} {(1)})] spids: [-1 2241] ) ] spids: [-1 2249] ) ] spids: [2200] ) spids: [2194 2199] ) (FuncDef name: cleanup body: (BraceGroup children: [ (C {(set)} {(Lit_Other "+") (e)}) (SimpleCommand words: [{(_modprobe)} {(-r)} {(ntb_tool)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2275])] ) (SimpleCommand words: [{(_modprobe)} {(-r)} {(ntb_perf)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2286])] ) (SimpleCommand words: [{(_modprobe)} {(-r)} {(ntb_pingpong)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2297])] ) (SimpleCommand words: [{(_modprobe)} {(-r)} {(ntb_transport)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2308])] ) (C {(set)} {(-e)}) ] spids: [2260] ) spids: [2254 2259] ) (C {(cleanup)}) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [(DBracket expr:(WordTest w:{($ VSub_Dollar "$$") (DONT_CLEANUP)}))] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(trap)} {(cleanup)} {(EXIT)})] spids: [-1 2335] ) ] spids: [-1 2344] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (CommandSubPart command_list: (CommandList children:[(C {(id)} {(-u)})]) left_token: <Left_CommandSub "$("> spids: [2352 2356] ) ) } {(KW_Bang "!") (Lit_Other "=")} {(DQ (0))} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ("This script must be run as root"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2378])] ) (C {(exit)} {(1)}) ] spids: [-1 2369] ) ] spids: [-1 2386] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$LIST_DEVS"))} right: {(TRUE)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("Local Devices:"))}) (C {(ls)} {(-1)} {(/sys/bus/ntb/devices)}) (C {(echo)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$REMOTE_HOST"))} right: {(DQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("Remote Devices:"))}) (C {(ssh)} {($ VSub_Name "$REMOTE_HOST")} {(ls)} {(-1)} {(/sys/bus/ntb/devices)}) ] spids: [-1 2441] ) ] spids: [-1 2462] ) (C {(exit)} {(0)}) ] spids: [-1 2404] ) ] spids: [-1 2470] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$LOCAL_DEV"))} right: {(DQ )} ) ) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$REMOTE_DEV"))} right: {(DQ )} ) ) ] op_id: Op_DPipe ) terminator: <Op_Semi ";"> ) ] action: [(C {(show_help)}) (C {(exit)} {(1)})] spids: [-1 2504] ) ] spids: [-1 2514] ) (C {(ntb_tool_tests)}) (C {(echo)}) (C {(ntb_pingpong_tests)}) (C {(echo)}) (C {(ntb_perf_tests)}) (C {(echo)}) ] )