{
int q;
- for (q = 0; q < DLB2_MAX_NUM_PORTS_ALL; q++) {
- dlb2->ev_ports[q].cos_id = port_cos[q];
- dlb2->cos_ports[port_cos[q]]++;
- }
+ for (q = 0; q < DLB2_MAX_NUM_PORTS_ALL; q++)
+ if (port_cos[q] != DLB2_COS_DEFAULT) {
+ dlb2->ev_ports[q].cos_id = port_cos[q];
+ dlb2->cos_ports[port_cos[q]]++;
+ }
}
static void
struct dlb2_cos_bw *cos_bw)
{
int q;
+
+
+ /* If cos_bw not set, then split evenly */
+ if (cos_bw->val[0] == 0 && cos_bw->val[1] == 0 &&
+ cos_bw->val[2] == 0 && cos_bw->val[3] == 0) {
+ cos_bw->val[0] = 25;
+ cos_bw->val[1] = 25;
+ cos_bw->val[2] = 25;
+ cos_bw->val[3] = 25;
+ }
+
for (q = 0; q < DLB2_COS_NUM_VALS; q++)
dlb2->cos_bw[q] = cos_bw->val[q];
}
/* command line override may take one of the following 3 forms:
- * port_cos=all:<cos_id> ... all ports
* port_cos=port-port:<cos_id> ... a range of ports
* port_cos=port:<cos_id> ... just one port
*/
- if (sscanf(value, "all:%d", &cos_id) == 1) {
- first = 0;
- last = DLB2_MAX_NUM_LDB_PORTS - 1;
- } else if (sscanf(value, "%d-%d:%d", &first, &last, &cos_id) == 3) {
+ if (sscanf(value, "%d-%d:%d", &first, &last, &cos_id) == 3) {
/* we have everything we need */
} else if (sscanf(value, "%d:%d", &first, &cos_id) == 2) {
last = first;
} else {
- DLB2_LOG_ERR("Error parsing ldb port port_cos devarg. Should be all:val, port-port:val, or port:val\n");
+ DLB2_LOG_ERR("Error parsing ldb port port_cos devarg. Should be port-port:val, or port:val\n");
return -EINVAL;
}
/* format must be %d,%d,%d,%d */
- if (sscanf(value, "%d,%d,%d,%d", &cos_bw->val[0], &cos_bw->val[1],
+ if (sscanf(value, "%d:%d:%d:%d", &cos_bw->val[0], &cos_bw->val[1],
&cos_bw->val[2], &cos_bw->val[3]) != 4) {
- DLB2_LOG_ERR("Error parsing cos bandwidth devarg. Should be bw0,bw1,bw2,bw3 where all values combined are <= 100\n");
+ DLB2_LOG_ERR("Error parsing cos bandwidth devarg. Should be bw0:bw1:bw2:bw3 where all values combined are <= 100\n");
return -EINVAL;
}
if (cos_bw->val[0] + cos_bw->val[1] + cos_bw->val[2] + cos_bw->val[3] > 100) {
- DLB2_LOG_ERR("Error parsing cos bandwidth devarg. Should be bw0,bw1,bw2,bw3 where all values combined are <= 100\n");
+ DLB2_LOG_ERR("Error parsing cos bandwidth devarg. Should be bw0:bw1:bw2:bw3 where all values combined are <= 100\n");
return -EINVAL;
}
/* LDB ports */
- /* tally of ports with non default COS */
- cos_ports = dlb2->cos_ports[1] + dlb2->cos_ports[2] +
- dlb2->cos_ports[3];
+ /* tally of COS ports from cmd line */
+ cos_ports = dlb2->cos_ports[0] + dlb2->cos_ports[1] +
+ dlb2->cos_ports[2] + dlb2->cos_ports[3];
if (cos_ports > resources_asked->num_ldb_ports) {
DLB2_LOG_ERR("dlb2: num_ldb_ports < nonzero cos_ports\n");
evdev_dlb2_default_info.max_event_port_enqueue_depth =
dlb2->max_enq_depth;
+ dlb2_init_queue_depth_thresholds(dlb2,
+ dlb2_args->qid_depth_thresholds.val);
+
+ dlb2_init_cq_weight(dlb2,
+ dlb2_args->cq_weight.limit);
+
+ dlb2_init_port_cos(dlb2,
+ dlb2_args->port_cos.cos_id);
+
+ dlb2_init_cos_bw(dlb2,
+ &dlb2_args->cos_bw);
err = dlb2_iface_open(&dlb2->qm_instance, name);
if (err < 0) {
dlb2_entry_points_init(dev);
- dlb2_init_queue_depth_thresholds(dlb2,
- dlb2_args->qid_depth_thresholds.val);
-
- dlb2_init_cq_weight(dlb2,
- dlb2_args->cq_weight.limit);
-
- dlb2_init_port_cos(dlb2,
- dlb2_args->port_cos.cos_id);
-
- dlb2_init_cos_bw(dlb2,
- &dlb2_args->cos_bw);
-
return 0;
}