return;
 
        /* Get WILC header */
-       memcpy(&header, (buff - HOST_HDR_OFFSET), HOST_HDR_OFFSET);
-       le32_to_cpus(&header);
+       header = get_unaligned_le32(buff - HOST_HDR_OFFSET);
        /*
         * The packet offset field contain info about what type of management
         * the frame we are dealing with and ack status
 
        s32 freq;
        __le16 fc;
 
-       memcpy(&header, (buff - HOST_HDR_OFFSET), HOST_HDR_OFFSET);
-       le32_to_cpus(&header);
+       header = get_unaligned_le32(buff - HOST_HDR_OFFSET);
        pkt_offset = GET_PKT_OFFSET(header);
 
        if (pkt_offset & IS_MANAGMEMENT_CALLBACK) {
 
 
        do {
                buff_ptr = buffer + offset;
-               memcpy(&header, buff_ptr, 4);
-               le32_to_cpus(&header);
+               header = get_unaligned_le32(buff_ptr);
 
                is_cfg_packet = (header >> 31) & 0x1;
                pkt_offset = (header >> 22) & 0x1ff;
 
        offset = 0;
        do {
-               memcpy(&addr, &buffer[offset], 4);
-               memcpy(&size, &buffer[offset + 4], 4);
-               le32_to_cpus(&addr);
-               le32_to_cpus(&size);
+               addr = get_unaligned_le32(&buffer[offset]);
+               size = get_unaligned_le32(&buffer[offset + 4]);
                acquire_bus(wilc, WILC_BUS_ACQUIRE_ONLY);
                offset += 8;
                while (((int)size) && (offset < buffer_size)) {