X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=examples%2Fvm_power_manager%2Fguest_cli%2Fvm_power_cli_guest.c;h=0db1b804f8cf04c81ea57b0c6b6cbb2e984745c1;hb=2db818aa86a7649259a548711a5ce1e1edbe11ef;hp=43bdeacefc5ed98d207c58e9a1011b3ab442a4d8;hpb=ca33590b6af032bff57d9cc70455660466a654b2;p=deb_dpdk.git diff --git a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c index 43bdeace..0db1b804 100644 --- a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c +++ b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c @@ -33,6 +33,71 @@ struct cmd_quit_result { cmdline_fixed_string_t quit; }; +union PFID { + struct ether_addr addr; + uint64_t pfid; +}; + +static struct channel_packet policy; + +struct channel_packet * +get_policy(void) +{ + return &policy; +} + +int +set_policy_mac(int port, int idx) +{ + struct channel_packet *policy; + union PFID pfid; + + /* Use port MAC address as the vfid */ + rte_eth_macaddr_get(port, &pfid.addr); + + printf("Port %u MAC: %02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 ":" + "%02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 "\n", + port, + pfid.addr.addr_bytes[0], pfid.addr.addr_bytes[1], + pfid.addr.addr_bytes[2], pfid.addr.addr_bytes[3], + pfid.addr.addr_bytes[4], pfid.addr.addr_bytes[5]); + policy = get_policy(); + policy->vfid[idx] = pfid.pfid; + return 0; +} + +void +set_policy_defaults(struct channel_packet *pkt) +{ + set_policy_mac(0, 0); + pkt->nb_mac_to_monitor = 1; + + pkt->t_boost_status.tbEnabled = false; + + pkt->vcpu_to_control[0] = 0; + pkt->vcpu_to_control[1] = 1; + pkt->num_vcpu = 2; + /* Dummy Population. */ + pkt->traffic_policy.min_packet_thresh = 96000; + pkt->traffic_policy.avg_max_packet_thresh = 1800000; + pkt->traffic_policy.max_max_packet_thresh = 2000000; + + pkt->timer_policy.busy_hours[0] = 3; + pkt->timer_policy.busy_hours[1] = 4; + pkt->timer_policy.busy_hours[2] = 5; + pkt->timer_policy.quiet_hours[0] = 11; + pkt->timer_policy.quiet_hours[1] = 12; + pkt->timer_policy.quiet_hours[2] = 13; + + pkt->timer_policy.hours_to_use_traffic_profile[0] = 8; + pkt->timer_policy.hours_to_use_traffic_profile[1] = 10; + + pkt->workload = LOW; + pkt->policy_to_use = TIME; + pkt->command = PKT_POLICY; + strcpy(pkt->vm_name, "ubuntu2"); +} + static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result, __attribute__((unused)) struct cmdline *cl, __attribute__((unused)) void *data) @@ -118,54 +183,12 @@ struct cmd_send_policy_result { cmdline_fixed_string_t cmd; }; -union PFID { - struct ether_addr addr; - uint64_t pfid; -}; - static inline int -send_policy(void) +send_policy(struct channel_packet *pkt) { - struct channel_packet pkt; int ret; - union PFID pfid; - /* Use port MAC address as the vfid */ - rte_eth_macaddr_get(0, &pfid.addr); - printf("Port %u MAC: %02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 ":" - "%02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 "\n", - 1, - pfid.addr.addr_bytes[0], pfid.addr.addr_bytes[1], - pfid.addr.addr_bytes[2], pfid.addr.addr_bytes[3], - pfid.addr.addr_bytes[4], pfid.addr.addr_bytes[5]); - pkt.vfid[0] = pfid.pfid; - - pkt.nb_mac_to_monitor = 1; - pkt.t_boost_status.tbEnabled = false; - - pkt.vcpu_to_control[0] = 0; - pkt.vcpu_to_control[1] = 1; - pkt.num_vcpu = 2; - /* Dummy Population. */ - pkt.traffic_policy.min_packet_thresh = 96000; - pkt.traffic_policy.avg_max_packet_thresh = 1800000; - pkt.traffic_policy.max_max_packet_thresh = 2000000; - - pkt.timer_policy.busy_hours[0] = 3; - pkt.timer_policy.busy_hours[1] = 4; - pkt.timer_policy.busy_hours[2] = 5; - pkt.timer_policy.quiet_hours[0] = 11; - pkt.timer_policy.quiet_hours[1] = 12; - pkt.timer_policy.quiet_hours[2] = 13; - - pkt.timer_policy.hours_to_use_traffic_profile[0] = 8; - pkt.timer_policy.hours_to_use_traffic_profile[1] = 10; - - pkt.workload = LOW; - pkt.policy_to_use = TIME; - pkt.command = PKT_POLICY; - strcpy(pkt.vm_name, "ubuntu2"); - ret = rte_power_guest_channel_send_msg(&pkt, 1); + ret = rte_power_guest_channel_send_msg(pkt, 1); if (ret == 0) return 1; RTE_LOG(DEBUG, POWER, "Error sending message: %s\n", @@ -182,7 +205,7 @@ cmd_send_policy_parsed(void *parsed_result, struct cmdline *cl, if (!strcmp(res->cmd, "now")) { printf("Sending Policy down now!\n"); - ret = send_policy(); + ret = send_policy(&policy); } if (ret != 1) cmdline_printf(cl, "Error sending message: %s\n",