static int ip_vs_wrr_update_svc(struct ip_vs_service *svc) { struct ip_vs_wrr_mark *mark = svc->sched_data; mark->cl = &svc->destinations; mark->mw = ip_vs_wrr_max_weight(svc); mark->di = ip_vs_wrr_gcd_weight(svc); return 0; }
static int ip_vs_wrr_init_svc(struct ip_vs_service *svc) { struct ip_vs_wrr_mark *mark; /* * Allocate the mark variable for WRR scheduling */ mark = kmalloc(sizeof(struct ip_vs_wrr_mark), GFP_ATOMIC); if (mark == NULL) { IP_VS_ERR("ip_vs_wrr_init_svc(): no memory\n"); return -ENOMEM; } mark->cl = &svc->destinations; mark->cw = 0; mark->mw = ip_vs_wrr_max_weight(svc); mark->di = ip_vs_wrr_gcd_weight(svc); svc->sched_data = mark; return 0; }