Changeset 1dcc0b9 in mainline for uspace/drv/nic/ar9271/wmi.c


Ignore:
Timestamp:
2015-04-06T10:47:51Z (10 years ago)
Author:
Jan Kolarik <kolarik@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d7dadcb4
Parents:
59fa7ab
Message:

Scanning whole 2.4GHz spectrum, created supplicant for managing connection between device STA and AP, finished association process between STA and AP, handling 4way handshake protocol used for key management, written needed cryptographic algorithms (AES, SHA1, HMAC, PBKDF2) for CCMP protocol, data communication on OPEN/CCMP networks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/nic/ar9271/wmi.c

    r59fa7ab r1dcc0b9  
    231231        size_t buffer_size = header_size + command_length;
    232232        void *buffer = malloc(buffer_size);
    233         memcpy(buffer+header_size, command_buffer, command_length);
     233       
     234        if(command_buffer != NULL) {
     235                memcpy(buffer+header_size, command_buffer, command_length);
     236        }
    234237       
    235238        /* Set up WMI header */
     
    261264       
    262265        /* Read response. */
    263         rc = htc_read_control_message(htc_device, response_buffer,
    264                 response_buffer_size, NULL);
    265         if(rc != EOK) {
    266                 free(buffer);
    267                 usb_log_error("Failed to receive WMI message response. "
    268                     "Error: %d\n", rc);
    269                 return rc;
    270         }
     266        /* TODO: Ignoring WMI management RX messages ~ TX statuses etc. */
     267        uint16_t cmd_id;
     268        do {
     269                rc = htc_read_control_message(htc_device, response_buffer,
     270                        response_buffer_size, NULL);
     271                if(rc != EOK) {
     272                        free(buffer);
     273                        usb_log_error("Failed to receive WMI message response. "
     274                            "Error: %d\n", rc);
     275                        return rc;
     276                }
     277               
     278                if(response_buffer_size < sizeof(htc_frame_header_t) +
     279                        sizeof(wmi_command_header_t)) {
     280                        free(buffer);
     281                        usb_log_error("Corrupted response received.\n");
     282                        return EINVAL;
     283                }
     284               
     285                wmi_command_header_t *wmi_hdr = (wmi_command_header_t *)
     286                        ((void*) response_buffer + sizeof(htc_frame_header_t));
     287                cmd_id = uint16_t_be2host(wmi_hdr->command_id);
     288        } while(cmd_id & WMI_MGMT_CMD_MASK);
    271289       
    272290        if(clean_resp_buffer) {
Note: See TracChangeset for help on using the changeset viewer.