Lines Matching full:policy
822 return; /* AP does not enable QM DSCP Policy */ in wpas_handle_assoc_resp_qos_mgmt()
1105 static int set_frame_classifier_type4_ipv4(struct dscp_policy_data *policy) in set_frame_classifier_type4_ipv4() argument
1108 const u8 *frame_classifier = policy->frame_classifier; in set_frame_classifier_type4_ipv4()
1109 struct type4_params *type4_param = &policy->type4_param; in set_frame_classifier_type4_ipv4()
1111 if (policy->frame_classifier_len < 18) { in set_frame_classifier_type4_ipv4()
1114 policy->frame_classifier_len); in set_frame_classifier_type4_ipv4()
1129 if (policy->domain_name) { in set_frame_classifier_type4_ipv4()
1149 if (policy->port_range_info) { in set_frame_classifier_type4_ipv4()
1172 static int set_frame_classifier_type4_ipv6(struct dscp_policy_data *policy) in set_frame_classifier_type4_ipv6() argument
1175 const u8 *frame_classifier = policy->frame_classifier; in set_frame_classifier_type4_ipv6()
1176 struct type4_params *type4_param = &policy->type4_param; in set_frame_classifier_type4_ipv6()
1178 if (policy->frame_classifier_len < 44) { in set_frame_classifier_type4_ipv6()
1181 policy->frame_classifier_len); in set_frame_classifier_type4_ipv6()
1196 if (policy->domain_name) { in set_frame_classifier_type4_ipv6()
1215 if (policy->port_range_info) { in set_frame_classifier_type4_ipv6()
1238 static int wpas_set_frame_classifier_params(struct dscp_policy_data *policy) in wpas_set_frame_classifier_params() argument
1240 const u8 *frame_classifier = policy->frame_classifier; in wpas_set_frame_classifier_params()
1241 u8 frame_classifier_len = policy->frame_classifier_len; in wpas_set_frame_classifier_params()
1267 if (set_frame_classifier_type4_ipv4(policy)) { in wpas_set_frame_classifier_params()
1273 policy->type4_param.ip_version = IPV4; in wpas_set_frame_classifier_params()
1275 if (set_frame_classifier_type4_ipv6(policy)) { in wpas_set_frame_classifier_params()
1281 policy->type4_param.ip_version = IPV6; in wpas_set_frame_classifier_params()
1309 struct dscp_policy_data *policy) in wpas_add_dscp_policy() argument
1315 if (!policy->frame_classifier && !policy->domain_name && in wpas_add_dscp_policy()
1316 !policy->port_range_info) { in wpas_add_dscp_policy()
1318 "QM: Invalid DSCP policy - no attributes present"); in wpas_add_dscp_policy()
1326 if (policy->frame_classifier) { in wpas_add_dscp_policy()
1327 struct type4_params *type4 = &policy->type4_param; in wpas_add_dscp_policy()
1329 if (wpas_set_frame_classifier_params(policy)) { in wpas_add_dscp_policy()
1354 if (policy->port_range_info) { in wpas_add_dscp_policy()
1356 policy->start_port, policy->end_port); in wpas_add_dscp_policy()
1359 "QM: Failed to write port range attributes for policy id = %d", in wpas_add_dscp_policy()
1360 policy->policy_id); in wpas_add_dscp_policy()
1368 if (policy->domain_name) { in wpas_add_dscp_policy()
1371 if (policy->domain_name_len >= sizeof(domain_name_str)) { in wpas_add_dscp_policy()
1376 os_memcpy(domain_name_str, policy->domain_name, in wpas_add_dscp_policy()
1377 policy->domain_name_len); in wpas_add_dscp_policy()
1378 domain_name_str[policy->domain_name_len] = '\0'; in wpas_add_dscp_policy()
1386 "QM: Failed to write domain name attribute for policy id = %d", in wpas_add_dscp_policy()
1387 policy->policy_id); in wpas_add_dscp_policy()
1394 policy->policy_id, policy->dscp, ip_ver, policy_str); in wpas_add_dscp_policy()
1398 policy->policy_id); in wpas_add_dscp_policy()
1416 static void wpas_fill_dscp_policy(struct dscp_policy_data *policy, u8 attr_id, in wpas_fill_dscp_policy() argument
1427 policy->start_port = WPA_GET_BE16(attr_data); in wpas_fill_dscp_policy()
1428 policy->end_port = WPA_GET_BE16(attr_data + 2); in wpas_fill_dscp_policy()
1429 policy->port_range_info = true; in wpas_fill_dscp_policy()
1434 "QM: Received DSCP Policy attribute with insufficient length %d", in wpas_fill_dscp_policy()
1438 policy->policy_id = attr_data[0]; in wpas_fill_dscp_policy()
1439 policy->req_type = attr_data[1]; in wpas_fill_dscp_policy()
1440 policy->dscp = attr_data[2]; in wpas_fill_dscp_policy()
1441 policy->dscp_info = true; in wpas_fill_dscp_policy()
1450 policy->frame_classifier = attr_data; in wpas_fill_dscp_policy()
1451 policy->frame_classifier_len = attr_len; in wpas_fill_dscp_policy()
1460 policy->domain_name = attr_data; in wpas_fill_dscp_policy()
1461 policy->domain_name_len = attr_len; in wpas_fill_dscp_policy()
1481 "QM: Ignore DSCP Policy frame since the capability is not enabled"); in wpas_handle_qos_mgmt_recv_action()
1487 "QM: Ignore DSCP Policy frame since PMF is not in use"); in wpas_handle_qos_mgmt_recv_action()
1493 …"QM: DSCP Policy capability not enabled for the current association - ignore QoS Management Action… in wpas_handle_qos_mgmt_recv_action()
1500 /* Handle only DSCP Policy Request frame */ in wpas_handle_qos_mgmt_recv_action()
1509 "Received QoS Management DSCP Policy Request frame with invalid length %zu", in wpas_handle_qos_mgmt_recv_action()
1530 struct dscp_policy_data policy; in wpas_handle_qos_mgmt_recv_action() local
1545 os_memset(&policy, 0, sizeof(struct dscp_policy_data)); in wpas_handle_qos_mgmt_recv_action()
1557 wpas_fill_dscp_policy(&policy, attr_id, attr_len, attr); in wpas_handle_qos_mgmt_recv_action()
1565 if (!policy.dscp_info) { in wpas_handle_qos_mgmt_recv_action()
1567 "QM: Received QoS IE without DSCP Policy attribute"); in wpas_handle_qos_mgmt_recv_action()
1571 if (policy.req_type == DSCP_POLICY_REQ_ADD) in wpas_handle_qos_mgmt_recv_action()
1572 wpas_add_dscp_policy(wpa_s, &policy); in wpas_handle_qos_mgmt_recv_action()
1573 else if (policy.req_type == DSCP_POLICY_REQ_REMOVE) in wpas_handle_qos_mgmt_recv_action()
1575 "remove policy_id=%u", policy.policy_id); in wpas_handle_qos_mgmt_recv_action()
1578 "reject policy_id=%u", policy.policy_id); in wpas_handle_qos_mgmt_recv_action()
1622 "QM: Failed to allocate DSCP policy response"); in wpas_send_dscp_response()
1642 wpabuf_put_u8(buf, resp_data->policy[i].id); in wpas_send_dscp_response()
1643 wpabuf_put_u8(buf, resp_data->policy[i].status); in wpas_send_dscp_response()