On Thu, 26 Apr 2012 14:43:13 -0700 Albert Chu <ch...@llnl.gov> wrote:
> Make inputs to CACongestionSetting more like MAD packet, allowing > multiple SLs to be configured at one time. > > Signed-off-by: Albert Chu <ch...@llnl.gov> Thanks applied, Ira > --- > man/ibccconfig.8 | 4 +- > src/ibccconfig.c | 61 ++++++++++++++++++++++++----------------------------- > 2 files changed, 30 insertions(+), 35 deletions(-) > > diff --git a/man/ibccconfig.8 b/man/ibccconfig.8 > index a0bea2d..38af5fd 100644 > --- a/man/ibccconfig.8 > +++ b/man/ibccconfig.8 > @@ -24,7 +24,7 @@ Current supported operations and their parameters: > CongestionKeyInfo (CK) <lid|guid> <cckey> <cckeyprotectbit> > <cckeyleaseperiod> <cckeyviolations> > SwitchCongestionSetting (SS) <lid|guid> <controlmap> <victimmask> > <creditmask> <threshold> <packetsize> <csthreshold> <csreturndelay> > <markingrate> > SwitchPortCongestionSetting (SP) <lid|guid> <portnum> <valid> > <control_type> <threshold> <packet_size> <cong_parm_marking_rate> > - CACongestionSetting (CS) <lid|guid> <port_control> <control_map> <sl> > <ccti_timer> <ccti_increase> <trigger_threshold> <ccti_min> > + CACongestionSetting (CS) <lid|guid> <port_control> <control_map> > <ccti_timer> <ccti_increase> <trigger_threshold> <ccti_min> > CongestionControlTable (CT) <lid|guid> <cctilimit> <index> <cctentry> > <cctentry> ... > > .TP > @@ -75,7 +75,7 @@ attempted to be fulfilled, and will fail if it is not > possible. > .PP > ibccconfig SwitchCongestionSetting 2 0x1F 0x1FFFFFFFFF 0x0 0xF 8 0 0:0 1 > # Configure Switch Congestion Settings > .PP > -ibccconfig CACongestionSetting 1 0 0x3 0 150 1 0 0 # Configure CA > Congestion Settings > +ibccconfig CACongestionSetting 1 0 0x3 150 1 0 0 # Configure CA > Congestion Settings > .PP > ibccconfig CongestionControlTable 1 63 0 0:0 0:1 ... # Configure > first block of Congestion Control Table > .PP > diff --git a/src/ibccconfig.c b/src/ibccconfig.c > index c81b7fa..4ae5386 100644 > --- a/src/ibccconfig.c > +++ b/src/ibccconfig.c > @@ -80,7 +80,7 @@ static const match_rec_t match_tbl[] = { > {"SwitchPortCongestionSetting", "SP", switch_port_congestion_setting, 1, > "<valid> <control_type> <threshold> <packet_size> > <cong_parm_marking_rate>"}, > {"CACongestionSetting", "CS", ca_congestion_setting, 0, > - "<port_control> <control_map> <sl> <ccti_timer> <ccti_increase> " > + "<port_control> <control_map> <ccti_timer> <ccti_increase> " > "<trigger_threshold> <ccti_min>"}, > {"CongestionControlTable", "CT", congestion_control_table, 0, > "<cctilimit> <index> <cctentry> <cctentry> ..."}, > @@ -436,15 +436,14 @@ static char *ca_congestion_setting(ib_portid_t * dest, > char **argv, int argc) > uint8_t payload[IB_CC_DATA_SZ] = { 0 }; > uint32_t port_control; > uint32_t control_map; > - uint32_t sl; > uint32_t ccti_timer; > uint32_t ccti_increase; > uint32_t trigger_threshold; > uint32_t ccti_min; > - uint8_t *ptr; > char *errstr; > + int i; > > - if (argc != 7) > + if (argc != 6) > return "invalid number of parameters for CACongestionSetting"; > > if ((errstr = parseint(argv[0], &port_control, 0))) > @@ -453,29 +452,18 @@ static char *ca_congestion_setting(ib_portid_t * dest, > char **argv, int argc) > if ((errstr = parseint(argv[1], &control_map, 0))) > return errstr; > > - if ((errstr = parseint(argv[2], &sl, 0))) > - return errstr; > - > - if ((errstr = parseint(argv[3], &ccti_timer, 0))) > + if ((errstr = parseint(argv[2], &ccti_timer, 0))) > return errstr; > > - if ((errstr = parseint(argv[4], &ccti_increase, 0))) > + if ((errstr = parseint(argv[3], &ccti_increase, 0))) > return errstr; > > - if ((errstr = parseint(argv[5], &trigger_threshold, 0))) > + if ((errstr = parseint(argv[4], &trigger_threshold, 0))) > return errstr; > > - if ((errstr = parseint(argv[6], &ccti_min, 0))) > + if ((errstr = parseint(argv[5], &ccti_min, 0))) > return errstr; > > - if (sl > 15) > - return "invalid SL specified"; > - > - /* We are modifying only 1 SL at a time, so get the current config */ > - if (!cc_query_status_via(payload, dest, > IB_CC_ATTR_CA_CONGESTION_SETTING, > - 0, 0, NULL, srcport, cckey)) > - return "ca congestion setting query failed"; > - > mad_encode_field(payload, > IB_CC_CA_CONGESTION_SETTING_PORT_CONTROL_F, > &port_control); > @@ -484,23 +472,30 @@ static char *ca_congestion_setting(ib_portid_t * dest, > char **argv, int argc) > IB_CC_CA_CONGESTION_SETTING_CONTROL_MAP_F, > &control_map); > > - ptr = payload + 2 + 2 + sl * 8; > + for (i = 0; i < 16; i++) { > + uint8_t *ptr; > > - mad_encode_field(ptr, > - IB_CC_CA_CONGESTION_ENTRY_CCTI_TIMER_F, > - &ccti_timer); > + if (!(control_map & (0x1 << i))) > + continue; > > - mad_encode_field(ptr, > - IB_CC_CA_CONGESTION_ENTRY_CCTI_INCREASE_F, > - &ccti_increase); > + ptr = payload + 2 + 2 + i * 8; > > - mad_encode_field(ptr, > - IB_CC_CA_CONGESTION_ENTRY_TRIGGER_THRESHOLD_F, > - &trigger_threshold); > + mad_encode_field(ptr, > + IB_CC_CA_CONGESTION_ENTRY_CCTI_TIMER_F, > + &ccti_timer); > > - mad_encode_field(ptr, > - IB_CC_CA_CONGESTION_ENTRY_CCTI_MIN_F, > - &ccti_min); > + mad_encode_field(ptr, > + IB_CC_CA_CONGESTION_ENTRY_CCTI_INCREASE_F, > + &ccti_increase); > + > + mad_encode_field(ptr, > + IB_CC_CA_CONGESTION_ENTRY_TRIGGER_THRESHOLD_F, > + &trigger_threshold); > + > + mad_encode_field(ptr, > + IB_CC_CA_CONGESTION_ENTRY_CCTI_MIN_F, > + &ccti_min); > + } > > if (!cc_config_status_via(payload, rcv, dest, > IB_CC_ATTR_CA_CONGESTION_SETTING, > 0, 0, NULL, srcport, cckey)) > @@ -598,7 +593,7 @@ int main(int argc, char **argv) > }; > const char *usage_examples[] = { > "SwitchCongestionSetting 2 0x1F 0x1FFFFFFFFF 0x0 0xF 8 0 0:0 > 1\t# Configure Switch Congestion Settings", > - "CACongestionSetting 1 0 0x3 0 150 1 0 0\t\t# Configure CA > Congestion Settings", > + "CACongestionSetting 1 0 0x3 150 1 0 0\t\t# Configure CA > Congestion Settings", > "CongestionControlTable 1 63 0 0:0 0:1 ...\t# Configure first > block of Congestion Control Table", > "CongestionControlTable 1 127 0 0:64 0:65 ...\t# Configure > second block of Congestion Control Table", > NULL > -- > 1.7.1 > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Ira Weiny Member of Technical Staff Lawrence Livermore National Lab 925-423-8008 wei...@llnl.gov -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html