Changes in uspace/drv/nic/ar9271/wmi.c [5a6cc679:a35b458] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/ar9271/wmi.c
r5a6cc679 ra35b458 53 53 { 54 54 uint32_t cmd_value = host2uint32_t_be(reg_offset); 55 55 56 56 void *resp_buffer = 57 57 malloc(htc_device->ath_device->ctrl_response_length); 58 58 59 59 errno_t rc = wmi_send_command(htc_device, WMI_REG_READ, 60 60 (uint8_t *) &cmd_value, sizeof(cmd_value), resp_buffer); 61 61 62 62 if (rc != EOK) { 63 63 usb_log_error("Failed to read registry value.\n"); 64 64 return rc; 65 65 } 66 66 67 67 uint32_t *resp_value = (uint32_t *) ((void *) resp_buffer + 68 68 sizeof(htc_frame_header_t) + sizeof(wmi_command_header_t)); 69 69 70 70 *res = uint32_t_be2host(*resp_value); 71 71 72 72 return rc; 73 73 } … … 88 88 host2uint32_t_be(val) 89 89 }; 90 90 91 91 void *resp_buffer = 92 92 malloc(htc_device->ath_device->ctrl_response_length); 93 93 94 94 errno_t rc = wmi_send_command(htc_device, WMI_REG_WRITE, 95 95 (uint8_t *) &cmd_buffer, sizeof(cmd_buffer), resp_buffer); 96 96 97 97 free(resp_buffer); 98 98 99 99 if (rc != EOK) { 100 100 usb_log_error("Failed to write registry value.\n"); 101 101 return rc; 102 102 } 103 103 104 104 return rc; 105 105 } … … 119 119 { 120 120 uint32_t value; 121 121 122 122 errno_t rc = wmi_reg_read(htc_device, reg_offset, &value); 123 123 if (rc != EOK) { … … 126 126 return rc; 127 127 } 128 128 129 129 value &= ~clear_bit; 130 130 value |= set_bit; 131 131 132 132 rc = wmi_reg_write(htc_device, reg_offset, value); 133 133 if (rc != EOK) { … … 136 136 return rc; 137 137 } 138 138 139 139 return rc; 140 140 } … … 186 186 void *resp_buffer = 187 187 malloc(htc_device->ath_device->ctrl_response_length); 188 188 189 189 /* Convert values to correct endianness. */ 190 190 for (size_t i = 0; i < elements; i++) { … … 197 197 host2uint32_t_be(buffer_element->value); 198 198 } 199 199 200 200 errno_t rc = wmi_send_command(htc_device, WMI_REG_WRITE, 201 201 (uint8_t *) buffer, buffer_size, resp_buffer); 202 202 203 203 free(buffer); 204 204 free(resp_buffer); 205 205 206 206 if (rc != EOK) { 207 207 usb_log_error("Failed to write multi registry value.\n"); 208 208 return rc; 209 209 } 210 210 211 211 return rc; 212 212 } … … 230 230 size_t buffer_size = header_size + command_length; 231 231 void *buffer = malloc(buffer_size); 232 232 233 233 if (command_buffer != NULL) 234 234 memcpy(buffer+header_size, command_buffer, command_length); 235 235 236 236 /* Set up WMI header */ 237 237 wmi_command_header_t *wmi_header = (wmi_command_header_t *) … … 240 240 wmi_header->sequence_number = 241 241 host2uint16_t_be(++htc_device->sequence_number); 242 242 243 243 /* Send message. */ 244 244 errno_t rc = htc_send_control_message(htc_device, buffer, buffer_size, … … 249 249 return rc; 250 250 } 251 251 252 252 free(buffer); 253 253 254 254 bool clean_resp_buffer = false; 255 255 size_t response_buffer_size = … … 259 259 clean_resp_buffer = true; 260 260 } 261 261 262 262 /* Read response. */ 263 263 /* TODO: Ignoring WMI management RX messages ~ TX statuses etc. */ … … 272 272 return rc; 273 273 } 274 274 275 275 if (response_buffer_size < sizeof(htc_frame_header_t) + 276 276 sizeof(wmi_command_header_t)) { … … 279 279 return EINVAL; 280 280 } 281 281 282 282 wmi_command_header_t *wmi_hdr = (wmi_command_header_t *) 283 283 ((void *) response_buffer + sizeof(htc_frame_header_t)); 284 284 cmd_id = uint16_t_be2host(wmi_hdr->command_id); 285 285 } while(cmd_id & WMI_MGMT_CMD_MASK); 286 286 287 287 if (clean_resp_buffer) 288 288 free(response_buffer); 289 290 return rc; 291 } 289 290 return rc; 291 }
Note:
See TracChangeset
for help on using the changeset viewer.