diff options
author | Yogesh Ashok Powar <yogeshp@marvell.com> | 2012-03-13 22:22:39 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-14 14:39:37 -0400 |
commit | 5dbd326ca7acc54320c38bdc474600c811f8ad6b (patch) | |
tree | c203f83e436cb5edb4561d9206e286873590d967 /drivers/net/wireless | |
parent | cff23cec822cd6bd0878c2a6afe6140f04c17dcf (diff) |
mwifiex: fix checkpatch --strict warnings/errors Part 6
For file sdio.c
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/mwifiex/sdio.c | 188 |
1 files changed, 96 insertions, 92 deletions
diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c index fe6fbc123b2e..3f597f4a3f5e 100644 --- a/drivers/net/wireless/mwifiex/sdio.c +++ b/drivers/net/wireless/mwifiex/sdio.c | |||
@@ -67,7 +67,7 @@ mwifiex_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) | |||
67 | struct sdio_mmc_card *card = NULL; | 67 | struct sdio_mmc_card *card = NULL; |
68 | 68 | ||
69 | pr_debug("info: vendor=0x%4.04X device=0x%4.04X class=%d function=%d\n", | 69 | pr_debug("info: vendor=0x%4.04X device=0x%4.04X class=%d function=%d\n", |
70 | func->vendor, func->device, func->class, func->num); | 70 | func->vendor, func->device, func->class, func->num); |
71 | 71 | ||
72 | card = kzalloc(sizeof(struct sdio_mmc_card), GFP_KERNEL); | 72 | card = kzalloc(sizeof(struct sdio_mmc_card), GFP_KERNEL); |
73 | if (!card) { | 73 | if (!card) { |
@@ -112,6 +112,7 @@ mwifiex_sdio_remove(struct sdio_func *func) | |||
112 | { | 112 | { |
113 | struct sdio_mmc_card *card; | 113 | struct sdio_mmc_card *card; |
114 | struct mwifiex_adapter *adapter; | 114 | struct mwifiex_adapter *adapter; |
115 | struct mwifiex_private *priv; | ||
115 | int i; | 116 | int i; |
116 | 117 | ||
117 | pr_debug("info: SDIO func num=%d\n", func->num); | 118 | pr_debug("info: SDIO func num=%d\n", func->num); |
@@ -131,15 +132,12 @@ mwifiex_sdio_remove(struct sdio_func *func) | |||
131 | for (i = 0; i < adapter->priv_num; i++) | 132 | for (i = 0; i < adapter->priv_num; i++) |
132 | if ((GET_BSS_ROLE(adapter->priv[i]) == | 133 | if ((GET_BSS_ROLE(adapter->priv[i]) == |
133 | MWIFIEX_BSS_ROLE_STA) && | 134 | MWIFIEX_BSS_ROLE_STA) && |
134 | adapter->priv[i]->media_connected) | 135 | adapter->priv[i]->media_connected) |
135 | mwifiex_deauthenticate(adapter->priv[i], NULL); | 136 | mwifiex_deauthenticate(adapter->priv[i], NULL); |
136 | 137 | ||
137 | mwifiex_disable_auto_ds(mwifiex_get_priv(adapter, | 138 | priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); |
138 | MWIFIEX_BSS_ROLE_ANY)); | 139 | mwifiex_disable_auto_ds(priv); |
139 | 140 | mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN); | |
140 | mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter, | ||
141 | MWIFIEX_BSS_ROLE_ANY), | ||
142 | MWIFIEX_FUNC_SHUTDOWN); | ||
143 | } | 141 | } |
144 | 142 | ||
145 | mwifiex_remove_card(card->adapter, &add_remove_card_sem); | 143 | mwifiex_remove_card(card->adapter, &add_remove_card_sem); |
@@ -169,7 +167,7 @@ static int mwifiex_sdio_suspend(struct device *dev) | |||
169 | if (func) { | 167 | if (func) { |
170 | pm_flag = sdio_get_host_pm_caps(func); | 168 | pm_flag = sdio_get_host_pm_caps(func); |
171 | pr_debug("cmd: %s: suspend: PM flag = 0x%x\n", | 169 | pr_debug("cmd: %s: suspend: PM flag = 0x%x\n", |
172 | sdio_func_id(func), pm_flag); | 170 | sdio_func_id(func), pm_flag); |
173 | if (!(pm_flag & MMC_PM_KEEP_POWER)) { | 171 | if (!(pm_flag & MMC_PM_KEEP_POWER)) { |
174 | pr_err("%s: cannot remain alive while host is" | 172 | pr_err("%s: cannot remain alive while host is" |
175 | " suspended\n", sdio_func_id(func)); | 173 | " suspended\n", sdio_func_id(func)); |
@@ -363,12 +361,11 @@ static int mwifiex_read_data_sync(struct mwifiex_adapter *adapter, u8 *buffer, | |||
363 | { | 361 | { |
364 | struct sdio_mmc_card *card = adapter->card; | 362 | struct sdio_mmc_card *card = adapter->card; |
365 | int ret = -1; | 363 | int ret = -1; |
366 | u8 blk_mode = | 364 | u8 blk_mode = (port & MWIFIEX_SDIO_BYTE_MODE_MASK) ? BYTE_MODE |
367 | (port & MWIFIEX_SDIO_BYTE_MODE_MASK) ? BYTE_MODE : BLOCK_MODE; | 365 | : BLOCK_MODE; |
368 | u32 blk_size = (blk_mode == BLOCK_MODE) ? MWIFIEX_SDIO_BLOCK_SIZE : 1; | 366 | u32 blk_size = (blk_mode == BLOCK_MODE) ? MWIFIEX_SDIO_BLOCK_SIZE : 1; |
369 | u32 blk_cnt = | 367 | u32 blk_cnt = (blk_mode == BLOCK_MODE) ? (len / MWIFIEX_SDIO_BLOCK_SIZE) |
370 | (blk_mode == | 368 | : len; |
371 | BLOCK_MODE) ? (len / MWIFIEX_SDIO_BLOCK_SIZE) : len; | ||
372 | u32 ioport = (port & MWIFIEX_SDIO_IO_PORT_MASK); | 369 | u32 ioport = (port & MWIFIEX_SDIO_IO_PORT_MASK); |
373 | 370 | ||
374 | if (claim) | 371 | if (claim) |
@@ -472,8 +469,7 @@ static int mwifiex_write_data_to_card(struct mwifiex_adapter *adapter, | |||
472 | i++; | 469 | i++; |
473 | dev_err(adapter->dev, "host_to_card, write iomem" | 470 | dev_err(adapter->dev, "host_to_card, write iomem" |
474 | " (%d) failed: %d\n", i, ret); | 471 | " (%d) failed: %d\n", i, ret); |
475 | if (mwifiex_write_reg(adapter, | 472 | if (mwifiex_write_reg(adapter, CONFIGURATION_REG, 0x04)) |
476 | CONFIGURATION_REG, 0x04)) | ||
477 | dev_err(adapter->dev, "write CFG reg failed\n"); | 473 | dev_err(adapter->dev, "write CFG reg failed\n"); |
478 | 474 | ||
479 | ret = -1; | 475 | ret = -1; |
@@ -507,11 +503,11 @@ static int mwifiex_get_rd_port(struct mwifiex_adapter *adapter, u8 *port) | |||
507 | card->mp_rd_bitmap &= (u16) (~CTRL_PORT_MASK); | 503 | card->mp_rd_bitmap &= (u16) (~CTRL_PORT_MASK); |
508 | *port = CTRL_PORT; | 504 | *port = CTRL_PORT; |
509 | dev_dbg(adapter->dev, "data: port=%d mp_rd_bitmap=0x%04x\n", | 505 | dev_dbg(adapter->dev, "data: port=%d mp_rd_bitmap=0x%04x\n", |
510 | *port, card->mp_rd_bitmap); | 506 | *port, card->mp_rd_bitmap); |
511 | } else { | 507 | } else { |
512 | if (card->mp_rd_bitmap & (1 << card->curr_rd_port)) { | 508 | if (card->mp_rd_bitmap & (1 << card->curr_rd_port)) { |
513 | card->mp_rd_bitmap &= | 509 | card->mp_rd_bitmap &= (u16) |
514 | (u16) (~(1 << card->curr_rd_port)); | 510 | (~(1 << card->curr_rd_port)); |
515 | *port = card->curr_rd_port; | 511 | *port = card->curr_rd_port; |
516 | 512 | ||
517 | if (++card->curr_rd_port == MAX_PORT) | 513 | if (++card->curr_rd_port == MAX_PORT) |
@@ -522,7 +518,7 @@ static int mwifiex_get_rd_port(struct mwifiex_adapter *adapter, u8 *port) | |||
522 | 518 | ||
523 | dev_dbg(adapter->dev, | 519 | dev_dbg(adapter->dev, |
524 | "data: port=%d mp_rd_bitmap=0x%04x -> 0x%04x\n", | 520 | "data: port=%d mp_rd_bitmap=0x%04x -> 0x%04x\n", |
525 | *port, rd_bitmap, card->mp_rd_bitmap); | 521 | *port, rd_bitmap, card->mp_rd_bitmap); |
526 | } | 522 | } |
527 | return 0; | 523 | return 0; |
528 | } | 524 | } |
@@ -556,14 +552,14 @@ static int mwifiex_get_wr_port_data(struct mwifiex_adapter *adapter, u8 *port) | |||
556 | 552 | ||
557 | if (*port == CTRL_PORT) { | 553 | if (*port == CTRL_PORT) { |
558 | dev_err(adapter->dev, "invalid data port=%d cur port=%d" | 554 | dev_err(adapter->dev, "invalid data port=%d cur port=%d" |
559 | " mp_wr_bitmap=0x%04x -> 0x%04x\n", | 555 | " mp_wr_bitmap=0x%04x -> 0x%04x\n", |
560 | *port, card->curr_wr_port, wr_bitmap, | 556 | *port, card->curr_wr_port, wr_bitmap, |
561 | card->mp_wr_bitmap); | 557 | card->mp_wr_bitmap); |
562 | return -1; | 558 | return -1; |
563 | } | 559 | } |
564 | 560 | ||
565 | dev_dbg(adapter->dev, "data: port=%d mp_wr_bitmap=0x%04x -> 0x%04x\n", | 561 | dev_dbg(adapter->dev, "data: port=%d mp_wr_bitmap=0x%04x -> 0x%04x\n", |
566 | *port, wr_bitmap, card->mp_wr_bitmap); | 562 | *port, wr_bitmap, card->mp_wr_bitmap); |
567 | 563 | ||
568 | return 0; | 564 | return 0; |
569 | } | 565 | } |
@@ -586,8 +582,8 @@ mwifiex_sdio_poll_card_status(struct mwifiex_adapter *adapter, u8 bits) | |||
586 | usleep_range(10, 20); | 582 | usleep_range(10, 20); |
587 | } | 583 | } |
588 | 584 | ||
589 | dev_err(adapter->dev, "poll card status failed, tries = %d\n", | 585 | dev_err(adapter->dev, "poll card status failed, tries = %d\n", tries); |
590 | tries); | 586 | |
591 | return -1; | 587 | return -1; |
592 | } | 588 | } |
593 | 589 | ||
@@ -670,14 +666,14 @@ static int mwifiex_sdio_card_to_host(struct mwifiex_adapter *adapter, | |||
670 | 666 | ||
671 | if (ret) { | 667 | if (ret) { |
672 | dev_err(adapter->dev, "%s: read iomem failed: %d\n", __func__, | 668 | dev_err(adapter->dev, "%s: read iomem failed: %d\n", __func__, |
673 | ret); | 669 | ret); |
674 | return -1; | 670 | return -1; |
675 | } | 671 | } |
676 | 672 | ||
677 | nb = le16_to_cpu(*(__le16 *) (buffer)); | 673 | nb = le16_to_cpu(*(__le16 *) (buffer)); |
678 | if (nb > npayload) { | 674 | if (nb > npayload) { |
679 | dev_err(adapter->dev, "%s: invalid packet, nb=%d, npayload=%d\n", | 675 | dev_err(adapter->dev, "%s: invalid packet, nb=%d npayload=%d\n", |
680 | __func__, nb, npayload); | 676 | __func__, nb, npayload); |
681 | return -1; | 677 | return -1; |
682 | } | 678 | } |
683 | 679 | ||
@@ -707,19 +703,19 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
707 | u32 i = 0; | 703 | u32 i = 0; |
708 | 704 | ||
709 | if (!firmware_len) { | 705 | if (!firmware_len) { |
710 | dev_err(adapter->dev, "firmware image not found!" | 706 | dev_err(adapter->dev, |
711 | " Terminating download\n"); | 707 | "firmware image not found! Terminating download\n"); |
712 | return -1; | 708 | return -1; |
713 | } | 709 | } |
714 | 710 | ||
715 | dev_dbg(adapter->dev, "info: downloading FW image (%d bytes)\n", | 711 | dev_dbg(adapter->dev, "info: downloading FW image (%d bytes)\n", |
716 | firmware_len); | 712 | firmware_len); |
717 | 713 | ||
718 | /* Assume that the allocated buffer is 8-byte aligned */ | 714 | /* Assume that the allocated buffer is 8-byte aligned */ |
719 | fwbuf = kzalloc(MWIFIEX_UPLD_SIZE, GFP_KERNEL); | 715 | fwbuf = kzalloc(MWIFIEX_UPLD_SIZE, GFP_KERNEL); |
720 | if (!fwbuf) { | 716 | if (!fwbuf) { |
721 | dev_err(adapter->dev, "unable to alloc buffer for firmware." | 717 | dev_err(adapter->dev, |
722 | " Terminating download\n"); | 718 | "unable to alloc buffer for FW. Terminating dnld\n"); |
723 | return -ENOMEM; | 719 | return -ENOMEM; |
724 | } | 720 | } |
725 | 721 | ||
@@ -731,7 +727,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
731 | DN_LD_CARD_RDY); | 727 | DN_LD_CARD_RDY); |
732 | if (ret) { | 728 | if (ret) { |
733 | dev_err(adapter->dev, "FW download with helper:" | 729 | dev_err(adapter->dev, "FW download with helper:" |
734 | " poll status timeout @ %d\n", offset); | 730 | " poll status timeout @ %d\n", offset); |
735 | goto done; | 731 | goto done; |
736 | } | 732 | } |
737 | 733 | ||
@@ -743,17 +739,19 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
743 | ret = mwifiex_read_reg(adapter, HOST_F1_RD_BASE_0, | 739 | ret = mwifiex_read_reg(adapter, HOST_F1_RD_BASE_0, |
744 | &base0); | 740 | &base0); |
745 | if (ret) { | 741 | if (ret) { |
746 | dev_err(adapter->dev, "dev BASE0 register read" | 742 | dev_err(adapter->dev, |
747 | " failed: base0=0x%04X(%d). Terminating " | 743 | "dev BASE0 register read failed: " |
748 | "download\n", base0, base0); | 744 | "base0=%#04X(%d). Terminating dnld\n", |
745 | base0, base0); | ||
749 | goto done; | 746 | goto done; |
750 | } | 747 | } |
751 | ret = mwifiex_read_reg(adapter, HOST_F1_RD_BASE_1, | 748 | ret = mwifiex_read_reg(adapter, HOST_F1_RD_BASE_1, |
752 | &base1); | 749 | &base1); |
753 | if (ret) { | 750 | if (ret) { |
754 | dev_err(adapter->dev, "dev BASE1 register read" | 751 | dev_err(adapter->dev, |
755 | " failed: base1=0x%04X(%d). Terminating " | 752 | "dev BASE1 register read failed: " |
756 | "download\n", base1, base1); | 753 | "base1=%#04X(%d). Terminating dnld\n", |
754 | base1, base1); | ||
757 | goto done; | 755 | goto done; |
758 | } | 756 | } |
759 | len = (u16) (((base1 & 0xff) << 8) | (base0 & 0xff)); | 757 | len = (u16) (((base1 & 0xff) << 8) | (base0 & 0xff)); |
@@ -767,8 +765,9 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
767 | if (!len) { | 765 | if (!len) { |
768 | break; | 766 | break; |
769 | } else if (len > MWIFIEX_UPLD_SIZE) { | 767 | } else if (len > MWIFIEX_UPLD_SIZE) { |
770 | dev_err(adapter->dev, "FW download failed @ %d," | 768 | dev_err(adapter->dev, |
771 | " invalid length %d\n", offset, len); | 769 | "FW dnld failed @ %d, invalid length %d\n", |
770 | offset, len); | ||
772 | ret = -1; | 771 | ret = -1; |
773 | goto done; | 772 | goto done; |
774 | } | 773 | } |
@@ -778,13 +777,14 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
778 | if (len & BIT(0)) { | 777 | if (len & BIT(0)) { |
779 | i++; | 778 | i++; |
780 | if (i > MAX_WRITE_IOMEM_RETRY) { | 779 | if (i > MAX_WRITE_IOMEM_RETRY) { |
781 | dev_err(adapter->dev, "FW download failed @" | 780 | dev_err(adapter->dev, |
782 | " %d, over max retry count\n", offset); | 781 | "FW dnld failed @ %d, over max retry\n", |
782 | offset); | ||
783 | ret = -1; | 783 | ret = -1; |
784 | goto done; | 784 | goto done; |
785 | } | 785 | } |
786 | dev_err(adapter->dev, "CRC indicated by the helper:" | 786 | dev_err(adapter->dev, "CRC indicated by the helper:" |
787 | " len = 0x%04X, txlen = %d\n", len, txlen); | 787 | " len = 0x%04X, txlen = %d\n", len, txlen); |
788 | len &= ~BIT(0); | 788 | len &= ~BIT(0); |
789 | /* Setting this to 0 to resend from same offset */ | 789 | /* Setting this to 0 to resend from same offset */ |
790 | txlen = 0; | 790 | txlen = 0; |
@@ -796,8 +796,8 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
796 | if (firmware_len - offset < txlen) | 796 | if (firmware_len - offset < txlen) |
797 | txlen = firmware_len - offset; | 797 | txlen = firmware_len - offset; |
798 | 798 | ||
799 | tx_blocks = (txlen + MWIFIEX_SDIO_BLOCK_SIZE - | 799 | tx_blocks = (txlen + MWIFIEX_SDIO_BLOCK_SIZE - 1) |
800 | 1) / MWIFIEX_SDIO_BLOCK_SIZE; | 800 | / MWIFIEX_SDIO_BLOCK_SIZE; |
801 | 801 | ||
802 | /* Copy payload to buffer */ | 802 | /* Copy payload to buffer */ |
803 | memmove(fwbuf, &firmware[offset], txlen); | 803 | memmove(fwbuf, &firmware[offset], txlen); |
@@ -807,8 +807,9 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
807 | MWIFIEX_SDIO_BLOCK_SIZE, | 807 | MWIFIEX_SDIO_BLOCK_SIZE, |
808 | adapter->ioport); | 808 | adapter->ioport); |
809 | if (ret) { | 809 | if (ret) { |
810 | dev_err(adapter->dev, "FW download, write iomem (%d)" | 810 | dev_err(adapter->dev, |
811 | " failed @ %d\n", i, offset); | 811 | "FW download, write iomem (%d) failed @ %d\n", |
812 | i, offset); | ||
812 | if (mwifiex_write_reg(adapter, CONFIGURATION_REG, 0x04)) | 813 | if (mwifiex_write_reg(adapter, CONFIGURATION_REG, 0x04)) |
813 | dev_err(adapter->dev, "write CFG reg failed\n"); | 814 | dev_err(adapter->dev, "write CFG reg failed\n"); |
814 | 815 | ||
@@ -820,7 +821,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, | |||
820 | } while (true); | 821 | } while (true); |
821 | 822 | ||
822 | dev_dbg(adapter->dev, "info: FW download over, size %d bytes\n", | 823 | dev_dbg(adapter->dev, "info: FW download over, size %d bytes\n", |
823 | offset); | 824 | offset); |
824 | 825 | ||
825 | ret = 0; | 826 | ret = 0; |
826 | done: | 827 | done: |
@@ -912,7 +913,7 @@ mwifiex_sdio_interrupt(struct sdio_func *func) | |||
912 | card = sdio_get_drvdata(func); | 913 | card = sdio_get_drvdata(func); |
913 | if (!card || !card->adapter) { | 914 | if (!card || !card->adapter) { |
914 | pr_debug("int: func=%p card=%p adapter=%p\n", | 915 | pr_debug("int: func=%p card=%p adapter=%p\n", |
915 | func, card, card ? card->adapter : NULL); | 916 | func, card, card ? card->adapter : NULL); |
916 | return; | 917 | return; |
917 | } | 918 | } |
918 | adapter = card->adapter; | 919 | adapter = card->adapter; |
@@ -955,10 +956,12 @@ static int mwifiex_decode_rx_packet(struct mwifiex_adapter *adapter, | |||
955 | 956 | ||
956 | if (adapter->ps_state == PS_STATE_SLEEP_CFM) | 957 | if (adapter->ps_state == PS_STATE_SLEEP_CFM) |
957 | mwifiex_process_sleep_confirm_resp(adapter, | 958 | mwifiex_process_sleep_confirm_resp(adapter, |
958 | skb->data, skb->len); | 959 | skb->data, |
960 | skb->len); | ||
959 | 961 | ||
960 | memcpy(cmd_buf, skb->data, min_t(u32, | 962 | memcpy(cmd_buf, skb->data, |
961 | MWIFIEX_SIZE_OF_CMD_BUFFER, skb->len)); | 963 | min_t(u32, MWIFIEX_SIZE_OF_CMD_BUFFER, |
964 | skb->len)); | ||
962 | 965 | ||
963 | dev_kfree_skb_any(skb); | 966 | dev_kfree_skb_any(skb); |
964 | } else { | 967 | } else { |
@@ -1016,7 +1019,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter, | |||
1016 | if (port == CTRL_PORT) { | 1019 | if (port == CTRL_PORT) { |
1017 | /* Read the command Resp without aggr */ | 1020 | /* Read the command Resp without aggr */ |
1018 | dev_dbg(adapter->dev, "info: %s: no aggregation for cmd " | 1021 | dev_dbg(adapter->dev, "info: %s: no aggregation for cmd " |
1019 | "response\n", __func__); | 1022 | "response\n", __func__); |
1020 | 1023 | ||
1021 | f_do_rx_cur = 1; | 1024 | f_do_rx_cur = 1; |
1022 | goto rx_curr_single; | 1025 | goto rx_curr_single; |
@@ -1024,7 +1027,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter, | |||
1024 | 1027 | ||
1025 | if (!card->mpa_rx.enabled) { | 1028 | if (!card->mpa_rx.enabled) { |
1026 | dev_dbg(adapter->dev, "info: %s: rx aggregation disabled\n", | 1029 | dev_dbg(adapter->dev, "info: %s: rx aggregation disabled\n", |
1027 | __func__); | 1030 | __func__); |
1028 | 1031 | ||
1029 | f_do_rx_cur = 1; | 1032 | f_do_rx_cur = 1; |
1030 | goto rx_curr_single; | 1033 | goto rx_curr_single; |
@@ -1071,7 +1074,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter, | |||
1071 | if (MP_RX_AGGR_PKT_LIMIT_REACHED(card) || | 1074 | if (MP_RX_AGGR_PKT_LIMIT_REACHED(card) || |
1072 | MP_RX_AGGR_PORT_LIMIT_REACHED(card)) { | 1075 | MP_RX_AGGR_PORT_LIMIT_REACHED(card)) { |
1073 | dev_dbg(adapter->dev, "info: %s: aggregated packet " | 1076 | dev_dbg(adapter->dev, "info: %s: aggregated packet " |
1074 | "limit reached\n", __func__); | 1077 | "limit reached\n", __func__); |
1075 | /* No more pkts allowed in Aggr buf, rx it */ | 1078 | /* No more pkts allowed in Aggr buf, rx it */ |
1076 | f_do_rx_aggr = 1; | 1079 | f_do_rx_aggr = 1; |
1077 | } | 1080 | } |
@@ -1080,7 +1083,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter, | |||
1080 | if (f_do_rx_aggr) { | 1083 | if (f_do_rx_aggr) { |
1081 | /* do aggr RX now */ | 1084 | /* do aggr RX now */ |
1082 | dev_dbg(adapter->dev, "info: do_rx_aggr: num of packets: %d\n", | 1085 | dev_dbg(adapter->dev, "info: do_rx_aggr: num of packets: %d\n", |
1083 | card->mpa_rx.pkt_cnt); | 1086 | card->mpa_rx.pkt_cnt); |
1084 | 1087 | ||
1085 | if (mwifiex_read_data_sync(adapter, card->mpa_rx.buf, | 1088 | if (mwifiex_read_data_sync(adapter, card->mpa_rx.buf, |
1086 | card->mpa_rx.buf_len, | 1089 | card->mpa_rx.buf_len, |
@@ -1194,7 +1197,7 @@ static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) | |||
1194 | card->mp_wr_bitmap = ((u16) card->mp_regs[WR_BITMAP_U]) << 8; | 1197 | card->mp_wr_bitmap = ((u16) card->mp_regs[WR_BITMAP_U]) << 8; |
1195 | card->mp_wr_bitmap |= (u16) card->mp_regs[WR_BITMAP_L]; | 1198 | card->mp_wr_bitmap |= (u16) card->mp_regs[WR_BITMAP_L]; |
1196 | dev_dbg(adapter->dev, "int: DNLD: wr_bitmap=0x%04x\n", | 1199 | dev_dbg(adapter->dev, "int: DNLD: wr_bitmap=0x%04x\n", |
1197 | card->mp_wr_bitmap); | 1200 | card->mp_wr_bitmap); |
1198 | if (adapter->data_sent && | 1201 | if (adapter->data_sent && |
1199 | (card->mp_wr_bitmap & card->mp_data_port_mask)) { | 1202 | (card->mp_wr_bitmap & card->mp_data_port_mask)) { |
1200 | dev_dbg(adapter->dev, | 1203 | dev_dbg(adapter->dev, |
@@ -1216,12 +1219,12 @@ static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) | |||
1216 | } | 1219 | } |
1217 | 1220 | ||
1218 | dev_dbg(adapter->dev, "info: cmd_sent=%d data_sent=%d\n", | 1221 | dev_dbg(adapter->dev, "info: cmd_sent=%d data_sent=%d\n", |
1219 | adapter->cmd_sent, adapter->data_sent); | 1222 | adapter->cmd_sent, adapter->data_sent); |
1220 | if (sdio_ireg & UP_LD_HOST_INT_STATUS) { | 1223 | if (sdio_ireg & UP_LD_HOST_INT_STATUS) { |
1221 | card->mp_rd_bitmap = ((u16) card->mp_regs[RD_BITMAP_U]) << 8; | 1224 | card->mp_rd_bitmap = ((u16) card->mp_regs[RD_BITMAP_U]) << 8; |
1222 | card->mp_rd_bitmap |= (u16) card->mp_regs[RD_BITMAP_L]; | 1225 | card->mp_rd_bitmap |= (u16) card->mp_regs[RD_BITMAP_L]; |
1223 | dev_dbg(adapter->dev, "int: UPLD: rd_bitmap=0x%04x\n", | 1226 | dev_dbg(adapter->dev, "int: UPLD: rd_bitmap=0x%04x\n", |
1224 | card->mp_rd_bitmap); | 1227 | card->mp_rd_bitmap); |
1225 | 1228 | ||
1226 | while (true) { | 1229 | while (true) { |
1227 | ret = mwifiex_get_rd_port(adapter, &port); | 1230 | ret = mwifiex_get_rd_port(adapter, &port); |
@@ -1235,15 +1238,15 @@ static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) | |||
1235 | rx_len = ((u16) card->mp_regs[len_reg_u]) << 8; | 1238 | rx_len = ((u16) card->mp_regs[len_reg_u]) << 8; |
1236 | rx_len |= (u16) card->mp_regs[len_reg_l]; | 1239 | rx_len |= (u16) card->mp_regs[len_reg_l]; |
1237 | dev_dbg(adapter->dev, "info: RX: port=%d rx_len=%u\n", | 1240 | dev_dbg(adapter->dev, "info: RX: port=%d rx_len=%u\n", |
1238 | port, rx_len); | 1241 | port, rx_len); |
1239 | rx_blocks = | 1242 | rx_blocks = |
1240 | (rx_len + MWIFIEX_SDIO_BLOCK_SIZE - | 1243 | (rx_len + MWIFIEX_SDIO_BLOCK_SIZE - |
1241 | 1) / MWIFIEX_SDIO_BLOCK_SIZE; | 1244 | 1) / MWIFIEX_SDIO_BLOCK_SIZE; |
1242 | if (rx_len <= INTF_HEADER_LEN | 1245 | if (rx_len <= INTF_HEADER_LEN || |
1243 | || (rx_blocks * MWIFIEX_SDIO_BLOCK_SIZE) > | 1246 | (rx_blocks * MWIFIEX_SDIO_BLOCK_SIZE) > |
1244 | MWIFIEX_RX_DATA_BUF_SIZE) { | 1247 | MWIFIEX_RX_DATA_BUF_SIZE) { |
1245 | dev_err(adapter->dev, "invalid rx_len=%d\n", | 1248 | dev_err(adapter->dev, "invalid rx_len=%d\n", |
1246 | rx_len); | 1249 | rx_len); |
1247 | return -1; | 1250 | return -1; |
1248 | } | 1251 | } |
1249 | rx_len = (u16) (rx_blocks * MWIFIEX_SDIO_BLOCK_SIZE); | 1252 | rx_len = (u16) (rx_blocks * MWIFIEX_SDIO_BLOCK_SIZE); |
@@ -1252,42 +1255,42 @@ static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) | |||
1252 | 1255 | ||
1253 | if (!skb) { | 1256 | if (!skb) { |
1254 | dev_err(adapter->dev, "%s: failed to alloc skb", | 1257 | dev_err(adapter->dev, "%s: failed to alloc skb", |
1255 | __func__); | 1258 | __func__); |
1256 | return -1; | 1259 | return -1; |
1257 | } | 1260 | } |
1258 | 1261 | ||
1259 | skb_put(skb, rx_len); | 1262 | skb_put(skb, rx_len); |
1260 | 1263 | ||
1261 | dev_dbg(adapter->dev, "info: rx_len = %d skb->len = %d\n", | 1264 | dev_dbg(adapter->dev, "info: rx_len = %d skb->len = %d\n", |
1262 | rx_len, skb->len); | 1265 | rx_len, skb->len); |
1263 | 1266 | ||
1264 | if (mwifiex_sdio_card_to_host_mp_aggr(adapter, skb, | 1267 | if (mwifiex_sdio_card_to_host_mp_aggr(adapter, skb, |
1265 | port)) { | 1268 | port)) { |
1266 | u32 cr = 0; | 1269 | u32 cr = 0; |
1267 | 1270 | ||
1268 | dev_err(adapter->dev, "card_to_host_mpa failed:" | 1271 | dev_err(adapter->dev, "card_to_host_mpa failed:" |
1269 | " int status=%#x\n", sdio_ireg); | 1272 | " int status=%#x\n", sdio_ireg); |
1270 | if (mwifiex_read_reg(adapter, | 1273 | if (mwifiex_read_reg(adapter, |
1271 | CONFIGURATION_REG, &cr)) | 1274 | CONFIGURATION_REG, &cr)) |
1272 | dev_err(adapter->dev, | 1275 | dev_err(adapter->dev, |
1273 | "read CFG reg failed\n"); | 1276 | "read CFG reg failed\n"); |
1274 | 1277 | ||
1275 | dev_dbg(adapter->dev, | 1278 | dev_dbg(adapter->dev, |
1276 | "info: CFG reg val = %d\n", cr); | 1279 | "info: CFG reg val = %d\n", cr); |
1277 | if (mwifiex_write_reg(adapter, | 1280 | if (mwifiex_write_reg(adapter, |
1278 | CONFIGURATION_REG, | 1281 | CONFIGURATION_REG, |
1279 | (cr | 0x04))) | 1282 | (cr | 0x04))) |
1280 | dev_err(adapter->dev, | 1283 | dev_err(adapter->dev, |
1281 | "write CFG reg failed\n"); | 1284 | "write CFG reg failed\n"); |
1282 | 1285 | ||
1283 | dev_dbg(adapter->dev, "info: write success\n"); | 1286 | dev_dbg(adapter->dev, "info: write success\n"); |
1284 | if (mwifiex_read_reg(adapter, | 1287 | if (mwifiex_read_reg(adapter, |
1285 | CONFIGURATION_REG, &cr)) | 1288 | CONFIGURATION_REG, &cr)) |
1286 | dev_err(adapter->dev, | 1289 | dev_err(adapter->dev, |
1287 | "read CFG reg failed\n"); | 1290 | "read CFG reg failed\n"); |
1288 | 1291 | ||
1289 | dev_dbg(adapter->dev, | 1292 | dev_dbg(adapter->dev, |
1290 | "info: CFG reg val =%x\n", cr); | 1293 | "info: CFG reg val =%x\n", cr); |
1291 | return -1; | 1294 | return -1; |
1292 | } | 1295 | } |
1293 | } | 1296 | } |
@@ -1323,7 +1326,7 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1323 | 1326 | ||
1324 | if ((!card->mpa_tx.enabled) || (port == CTRL_PORT)) { | 1327 | if ((!card->mpa_tx.enabled) || (port == CTRL_PORT)) { |
1325 | dev_dbg(adapter->dev, "info: %s: tx aggregation disabled\n", | 1328 | dev_dbg(adapter->dev, "info: %s: tx aggregation disabled\n", |
1326 | __func__); | 1329 | __func__); |
1327 | 1330 | ||
1328 | f_send_cur_buf = 1; | 1331 | f_send_cur_buf = 1; |
1329 | goto tx_curr_single; | 1332 | goto tx_curr_single; |
@@ -1332,7 +1335,7 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1332 | if (next_pkt_len) { | 1335 | if (next_pkt_len) { |
1333 | /* More pkt in TX queue */ | 1336 | /* More pkt in TX queue */ |
1334 | dev_dbg(adapter->dev, "info: %s: more packets in queue.\n", | 1337 | dev_dbg(adapter->dev, "info: %s: more packets in queue.\n", |
1335 | __func__); | 1338 | __func__); |
1336 | 1339 | ||
1337 | if (MP_TX_AGGR_IN_PROGRESS(card)) { | 1340 | if (MP_TX_AGGR_IN_PROGRESS(card)) { |
1338 | if (!MP_TX_AGGR_PORT_LIMIT_REACHED(card) && | 1341 | if (!MP_TX_AGGR_PORT_LIMIT_REACHED(card) && |
@@ -1340,9 +1343,9 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1340 | f_precopy_cur_buf = 1; | 1343 | f_precopy_cur_buf = 1; |
1341 | 1344 | ||
1342 | if (!(card->mp_wr_bitmap & | 1345 | if (!(card->mp_wr_bitmap & |
1343 | (1 << card->curr_wr_port)) | 1346 | (1 << card->curr_wr_port)) || |
1344 | || !MP_TX_AGGR_BUF_HAS_ROOM( | 1347 | !MP_TX_AGGR_BUF_HAS_ROOM( |
1345 | card, pkt_len + next_pkt_len)) | 1348 | card, pkt_len + next_pkt_len)) |
1346 | f_send_aggr_buf = 1; | 1349 | f_send_aggr_buf = 1; |
1347 | } else { | 1350 | } else { |
1348 | /* No room in Aggr buf, send it */ | 1351 | /* No room in Aggr buf, send it */ |
@@ -1356,8 +1359,8 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1356 | f_postcopy_cur_buf = 1; | 1359 | f_postcopy_cur_buf = 1; |
1357 | } | 1360 | } |
1358 | } else { | 1361 | } else { |
1359 | if (MP_TX_AGGR_BUF_HAS_ROOM(card, pkt_len) | 1362 | if (MP_TX_AGGR_BUF_HAS_ROOM(card, pkt_len) && |
1360 | && (card->mp_wr_bitmap & (1 << card->curr_wr_port))) | 1363 | (card->mp_wr_bitmap & (1 << card->curr_wr_port))) |
1361 | f_precopy_cur_buf = 1; | 1364 | f_precopy_cur_buf = 1; |
1362 | else | 1365 | else |
1363 | f_send_cur_buf = 1; | 1366 | f_send_cur_buf = 1; |
@@ -1365,7 +1368,7 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1365 | } else { | 1368 | } else { |
1366 | /* Last pkt in TX queue */ | 1369 | /* Last pkt in TX queue */ |
1367 | dev_dbg(adapter->dev, "info: %s: Last packet in Tx Queue.\n", | 1370 | dev_dbg(adapter->dev, "info: %s: Last packet in Tx Queue.\n", |
1368 | __func__); | 1371 | __func__); |
1369 | 1372 | ||
1370 | if (MP_TX_AGGR_IN_PROGRESS(card)) { | 1373 | if (MP_TX_AGGR_IN_PROGRESS(card)) { |
1371 | /* some packs in Aggr buf already */ | 1374 | /* some packs in Aggr buf already */ |
@@ -1383,7 +1386,7 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1383 | 1386 | ||
1384 | if (f_precopy_cur_buf) { | 1387 | if (f_precopy_cur_buf) { |
1385 | dev_dbg(adapter->dev, "data: %s: precopy current buffer\n", | 1388 | dev_dbg(adapter->dev, "data: %s: precopy current buffer\n", |
1386 | __func__); | 1389 | __func__); |
1387 | MP_TX_AGGR_BUF_PUT(card, payload, pkt_len, port); | 1390 | MP_TX_AGGR_BUF_PUT(card, payload, pkt_len, port); |
1388 | 1391 | ||
1389 | if (MP_TX_AGGR_PKT_LIMIT_REACHED(card) || | 1392 | if (MP_TX_AGGR_PKT_LIMIT_REACHED(card) || |
@@ -1394,7 +1397,7 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1394 | 1397 | ||
1395 | if (f_send_aggr_buf) { | 1398 | if (f_send_aggr_buf) { |
1396 | dev_dbg(adapter->dev, "data: %s: send aggr buffer: %d %d\n", | 1399 | dev_dbg(adapter->dev, "data: %s: send aggr buffer: %d %d\n", |
1397 | __func__, | 1400 | __func__, |
1398 | card->mpa_tx.start_port, card->mpa_tx.ports); | 1401 | card->mpa_tx.start_port, card->mpa_tx.ports); |
1399 | ret = mwifiex_write_data_to_card(adapter, card->mpa_tx.buf, | 1402 | ret = mwifiex_write_data_to_card(adapter, card->mpa_tx.buf, |
1400 | card->mpa_tx.buf_len, | 1403 | card->mpa_tx.buf_len, |
@@ -1408,14 +1411,14 @@ static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, | |||
1408 | tx_curr_single: | 1411 | tx_curr_single: |
1409 | if (f_send_cur_buf) { | 1412 | if (f_send_cur_buf) { |
1410 | dev_dbg(adapter->dev, "data: %s: send current buffer %d\n", | 1413 | dev_dbg(adapter->dev, "data: %s: send current buffer %d\n", |
1411 | __func__, port); | 1414 | __func__, port); |
1412 | ret = mwifiex_write_data_to_card(adapter, payload, pkt_len, | 1415 | ret = mwifiex_write_data_to_card(adapter, payload, pkt_len, |
1413 | adapter->ioport + port); | 1416 | adapter->ioport + port); |
1414 | } | 1417 | } |
1415 | 1418 | ||
1416 | if (f_postcopy_cur_buf) { | 1419 | if (f_postcopy_cur_buf) { |
1417 | dev_dbg(adapter->dev, "data: %s: postcopy current buffer\n", | 1420 | dev_dbg(adapter->dev, "data: %s: postcopy current buffer\n", |
1418 | __func__); | 1421 | __func__); |
1419 | MP_TX_AGGR_BUF_PUT(card, payload, pkt_len, port); | 1422 | MP_TX_AGGR_BUF_PUT(card, payload, pkt_len, port); |
1420 | } | 1423 | } |
1421 | 1424 | ||
@@ -1460,7 +1463,7 @@ static int mwifiex_sdio_host_to_card(struct mwifiex_adapter *adapter, | |||
1460 | ret = mwifiex_get_wr_port_data(adapter, &port); | 1463 | ret = mwifiex_get_wr_port_data(adapter, &port); |
1461 | if (ret) { | 1464 | if (ret) { |
1462 | dev_err(adapter->dev, "%s: no wr_port available\n", | 1465 | dev_err(adapter->dev, "%s: no wr_port available\n", |
1463 | __func__); | 1466 | __func__); |
1464 | return ret; | 1467 | return ret; |
1465 | } | 1468 | } |
1466 | } else { | 1469 | } else { |
@@ -1470,7 +1473,7 @@ static int mwifiex_sdio_host_to_card(struct mwifiex_adapter *adapter, | |||
1470 | if (pkt_len <= INTF_HEADER_LEN || | 1473 | if (pkt_len <= INTF_HEADER_LEN || |
1471 | pkt_len > MWIFIEX_UPLD_SIZE) | 1474 | pkt_len > MWIFIEX_UPLD_SIZE) |
1472 | dev_err(adapter->dev, "%s: payload=%p, nb=%d\n", | 1475 | dev_err(adapter->dev, "%s: payload=%p, nb=%d\n", |
1473 | __func__, payload, pkt_len); | 1476 | __func__, payload, pkt_len); |
1474 | } | 1477 | } |
1475 | 1478 | ||
1476 | /* Transfer data to card */ | 1479 | /* Transfer data to card */ |
@@ -1478,10 +1481,11 @@ static int mwifiex_sdio_host_to_card(struct mwifiex_adapter *adapter, | |||
1478 | 1481 | ||
1479 | if (tx_param) | 1482 | if (tx_param) |
1480 | ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len, | 1483 | ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len, |
1481 | port, tx_param->next_pkt_len); | 1484 | port, tx_param->next_pkt_len |
1485 | ); | ||
1482 | else | 1486 | else |
1483 | ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len, | 1487 | ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len, |
1484 | port, 0); | 1488 | port, 0); |
1485 | 1489 | ||
1486 | if (ret) { | 1490 | if (ret) { |
1487 | if (type == MWIFIEX_TYPE_CMD) | 1491 | if (type == MWIFIEX_TYPE_CMD) |
@@ -1734,7 +1738,7 @@ mwifiex_update_mp_end_port(struct mwifiex_adapter *adapter, u16 port) | |||
1734 | card->curr_wr_port = 1; | 1738 | card->curr_wr_port = 1; |
1735 | 1739 | ||
1736 | dev_dbg(adapter->dev, "cmd: mp_end_port %d, data port mask 0x%x\n", | 1740 | dev_dbg(adapter->dev, "cmd: mp_end_port %d, data port mask 0x%x\n", |
1737 | port, card->mp_data_port_mask); | 1741 | port, card->mp_data_port_mask); |
1738 | } | 1742 | } |
1739 | 1743 | ||
1740 | static struct mwifiex_if_ops sdio_ops = { | 1744 | static struct mwifiex_if_ops sdio_ops = { |