diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/usb.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/usb.c | 34 |
1 files changed, 5 insertions, 29 deletions
diff --git a/drivers/net/wireless/mwifiex/usb.c b/drivers/net/wireless/mwifiex/usb.c index 63ac9f2d11ae..f90fe21e5bfd 100644 --- a/drivers/net/wireless/mwifiex/usb.c +++ b/drivers/net/wireless/mwifiex/usb.c | |||
@@ -672,7 +672,7 @@ static int mwifiex_write_data_sync(struct mwifiex_adapter *adapter, u8 *pbuf, | |||
672 | *len, &actual_length, timeout); | 672 | *len, &actual_length, timeout); |
673 | if (ret) { | 673 | if (ret) { |
674 | dev_err(adapter->dev, "usb_bulk_msg for tx failed: %d\n", ret); | 674 | dev_err(adapter->dev, "usb_bulk_msg for tx failed: %d\n", ret); |
675 | ret = -1; | 675 | return ret; |
676 | } | 676 | } |
677 | 677 | ||
678 | *len = actual_length; | 678 | *len = actual_length; |
@@ -691,7 +691,7 @@ static int mwifiex_read_data_sync(struct mwifiex_adapter *adapter, u8 *pbuf, | |||
691 | *len, &actual_length, timeout); | 691 | *len, &actual_length, timeout); |
692 | if (ret) { | 692 | if (ret) { |
693 | dev_err(adapter->dev, "usb_bulk_msg for rx failed: %d\n", ret); | 693 | dev_err(adapter->dev, "usb_bulk_msg for rx failed: %d\n", ret); |
694 | ret = -1; | 694 | return ret; |
695 | } | 695 | } |
696 | 696 | ||
697 | *len = actual_length; | 697 | *len = actual_length; |
@@ -786,21 +786,6 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter) | |||
786 | return 0; | 786 | return 0; |
787 | } | 787 | } |
788 | 788 | ||
789 | /* This function reads one block of firmware data. */ | ||
790 | static int mwifiex_get_fw_data(struct mwifiex_adapter *adapter, | ||
791 | u32 offset, u32 len, u8 *buf) | ||
792 | { | ||
793 | if (!buf || !len) | ||
794 | return -1; | ||
795 | |||
796 | if (offset + len > adapter->firmware->size) | ||
797 | return -1; | ||
798 | |||
799 | memcpy(buf, adapter->firmware->data + offset, len); | ||
800 | |||
801 | return 0; | ||
802 | } | ||
803 | |||
804 | static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | 789 | static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, |
805 | struct mwifiex_fw_image *fw) | 790 | struct mwifiex_fw_image *fw) |
806 | { | 791 | { |
@@ -836,23 +821,14 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
836 | dlen = 0; | 821 | dlen = 0; |
837 | } else { | 822 | } else { |
838 | /* copy the header of the fw_data to get the length */ | 823 | /* copy the header of the fw_data to get the length */ |
839 | if (firmware) | 824 | memcpy(&fwdata->fw_hdr, &firmware[tlen], |
840 | memcpy(&fwdata->fw_hdr, &firmware[tlen], | 825 | sizeof(struct fw_header)); |
841 | sizeof(struct fw_header)); | ||
842 | else | ||
843 | mwifiex_get_fw_data(adapter, tlen, | ||
844 | sizeof(struct fw_header), | ||
845 | (u8 *)&fwdata->fw_hdr); | ||
846 | 826 | ||
847 | dlen = le32_to_cpu(fwdata->fw_hdr.data_len); | 827 | dlen = le32_to_cpu(fwdata->fw_hdr.data_len); |
848 | dnld_cmd = le32_to_cpu(fwdata->fw_hdr.dnld_cmd); | 828 | dnld_cmd = le32_to_cpu(fwdata->fw_hdr.dnld_cmd); |
849 | tlen += sizeof(struct fw_header); | 829 | tlen += sizeof(struct fw_header); |
850 | 830 | ||
851 | if (firmware) | 831 | memcpy(fwdata->data, &firmware[tlen], dlen); |
852 | memcpy(fwdata->data, &firmware[tlen], dlen); | ||
853 | else | ||
854 | mwifiex_get_fw_data(adapter, tlen, dlen, | ||
855 | (u8 *)fwdata->data); | ||
856 | 832 | ||
857 | fwdata->seq_num = cpu_to_le32(fw_seqnum); | 833 | fwdata->seq_num = cpu_to_le32(fw_seqnum); |
858 | tlen += dlen; | 834 | tlen += dlen; |