aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwifiex/usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/mwifiex/usb.c')
-rw-r--r--drivers/net/wireless/mwifiex/usb.c34
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. */
790static 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
804static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, 789static 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;