Message ID | 33dc77c8c6006b5ac067e6c6f485df60@imap.linux.ibm.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
> @@ -548,6 +550,37 @@ void rs_configure(void) > (void) fscanf(f, "%hu", &restart_onintr); > fclose(f); > } > + > + if ((f = fopen(RS_CONF_DIR "/comp_vector", "r"))) { > + char vbuf[256]; > + char *vptr; > + vptr = fgets(vbuf, sizeof(vbuf), f); > + fclose(f); > + if (vptr) { > + char *tok, *save, *tmp, *str, *tok2; > + int lvect, uvect, vect; > + > + for (str = vptr; ; str = NULL) { > + tok = strtok_r(str, ",", &save); > + if (tok == NULL) { > + break; > + } > + if (!(tmp = strpbrk(tok, "-"))) { > + lvect = uvect = atoi(tok); > + } else { > + tok2 = tmp + 1; > + *tmp = '\0'; > + lvect = atoi(tok); > + uvect = atoi(tok2); > + } > + lvect = (lvect < 0) ? 0 : ((lvect > 63) ? 63 : > lvect); > + uvect = (uvect < 0) ? 0 : ((uvect > 63) ? 63 : > uvect); > + for (vect = lvect; vect <= uvect; vect++) { > + comp_vector_mask |= ((uint64_t)1 << vect); > + } > + } > + } > + } Please isolate this functionality into its own function. - Sean -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2014-09-08 21:24, Hefty, Sean wrote: >> @@ -548,6 +550,37 @@ void rs_configure(void) >> (void) fscanf(f, "%hu", &restart_onintr); >> fclose(f); >> } >> + >> + if ((f = fopen(RS_CONF_DIR "/comp_vector", "r"))) { >> + char vbuf[256]; >> + char *vptr; >> + vptr = fgets(vbuf, sizeof(vbuf), f); >> + fclose(f); >> + if (vptr) { >> + char *tok, *save, *tmp, *str, *tok2; >> + int lvect, uvect, vect; >> + >> + for (str = vptr; ; str = NULL) { >> + tok = strtok_r(str, ",", &save); >> + if (tok == NULL) { >> + break; >> + } >> + if (!(tmp = strpbrk(tok, "-"))) { >> + lvect = uvect = atoi(tok); >> + } else { >> + tok2 = tmp + 1; >> + *tmp = '\0'; >> + lvect = atoi(tok); >> + uvect = atoi(tok2); >> + } >> + lvect = (lvect < 0) ? 0 : ((lvect > 63) ? 63 : >> lvect); >> + uvect = (uvect < 0) ? 0 : ((uvect > 63) ? 63 : >> uvect); >> + for (vect = lvect; vect <= uvect; vect++) { >> + comp_vector_mask |= ((uint64_t)1 << vect); >> + } >> + } >> + } >> + } > > Please isolate this functionality into its own function. > > - Sean Hi Sean, I will make this into a separate function in the revised patch that is being worked out. Thank You. - Sreedhar > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" > in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2014-09-09 18:02, Sreedhar Kodali wrote: > On 2014-09-08 21:24, Hefty, Sean wrote: >>> @@ -548,6 +550,37 @@ void rs_configure(void) >>> (void) fscanf(f, "%hu", &restart_onintr); >>> fclose(f); >>> } >>> + >>> + if ((f = fopen(RS_CONF_DIR "/comp_vector", "r"))) { >>> + char vbuf[256]; >>> + char *vptr; >>> + vptr = fgets(vbuf, sizeof(vbuf), f); >>> + fclose(f); >>> + if (vptr) { >>> + char *tok, *save, *tmp, *str, *tok2; >>> + int lvect, uvect, vect; >>> + >>> + for (str = vptr; ; str = NULL) { >>> + tok = strtok_r(str, ",", &save); >>> + if (tok == NULL) { >>> + break; >>> + } >>> + if (!(tmp = strpbrk(tok, "-"))) { >>> + lvect = uvect = atoi(tok); >>> + } else { >>> + tok2 = tmp + 1; >>> + *tmp = '\0'; >>> + lvect = atoi(tok); >>> + uvect = atoi(tok2); >>> + } >>> + lvect = (lvect < 0) ? 0 : ((lvect > 63) ? 63 : >>> lvect); >>> + uvect = (uvect < 0) ? 0 : ((uvect > 63) ? 63 : >>> uvect); >>> + for (vect = lvect; vect <= uvect; vect++) { >>> + comp_vector_mask |= ((uint64_t)1 << vect); >>> + } >>> + } >>> + } >>> + } >> >> Please isolate this functionality into its own function. >> >> - Sean > > Hi Sean, > > I will make this into a separate function in the revised patch that is > being worked out. > > Thank You. > > - Sreedhar > Hi Sean, Sent the revised patch v4 with your suggestions incorporated. Kindly have a look at them. Thank You. - Sreedhar >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-rdma" >> in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" > in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/src/rsocket.c b/src/rsocket.c index b70d56a..ffea0ca 100644 --- a/src/rsocket.c +++ b/src/rsocket.c @@ -116,6 +116,8 @@ static uint32_t def_mem = (1 << 17); static uint32_t def_wmem = (1 << 17); static uint32_t polling_time = 10; static uint16_t restart_onintr = 0; +static uint16_t next_comp_vector = 0; +static uint64_t comp_vector_mask = 0; /* * Immediate data format is determined by the upper bits @@ -548,6 +550,37 @@ void rs_configure(void) (void) fscanf(f, "%hu", &restart_onintr); fclose(f); } + + if ((f = fopen(RS_CONF_DIR "/comp_vector", "r"))) { + char vbuf[256]; + char *vptr; + vptr = fgets(vbuf, sizeof(vbuf), f); + fclose(f); + if (vptr) { + char *tok, *save, *tmp, *str, *tok2; + int lvect, uvect, vect; + + for (str = vptr; ; str = NULL) { + tok = strtok_r(str, ",", &save); + if (tok == NULL) { + break; + } + if (!(tmp = strpbrk(tok, "-"))) { + lvect = uvect = atoi(tok); + } else { + tok2 = tmp + 1; + *tmp = '\0'; + lvect = atoi(tok); + uvect = atoi(tok2); + } + lvect = (lvect < 0) ? 0 : ((lvect > 63) ? 63 : lvect); + uvect = (uvect < 0) ? 0 : ((uvect > 63) ? 63 : uvect); + for (vect = lvect; vect <= uvect; vect++) { + comp_vector_mask |= ((uint64_t)1 << vect); + } + } + } + } init = 1; out: pthread_mutex_unlock(&mut); @@ -762,12 +795,27 @@ static int ds_init_bufs(struct ds_qp *qp) */ static int rs_create_cq(struct rsocket *rs, struct rdma_cm_id *cm_id) { + int vector = 0; + cm_id->recv_cq_channel = ibv_create_comp_channel(cm_id->verbs); if (!cm_id->recv_cq_channel) return -1; + if (comp_vector_mask) { + int found = 0; + while (found == 0) { + if (comp_vector_mask & ((uint64_t) 1 << next_comp_vector)) { + found = 1; + vector = next_comp_vector; + } + if (++next_comp_vector == 64) { + next_comp_vector = 0; + } + } + } + cm_id->recv_cq = ibv_create_cq(cm_id->verbs, rs->sq_size + rs->rq_size, - cm_id, cm_id->recv_cq_channel, 0); + cm_id, cm_id->recv_cq_channel, vector); if (!cm_id->recv_cq) goto err1;