tzh
2024-08-15 d4a1bd480003f3e1a0590bc46fbcb24f05652ca7
longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_bsp/aicsdio_txrxif.c
old mode 100644new mode 100755
....@@ -21,7 +21,7 @@
2121
2222 int aicwf_bus_init(uint bus_hdrlen, struct device *dev)
2323 {
24
- int ret = 0;
24
+ int ret = -ENOMEM;
2525 struct aicwf_bus *bus_if;
2626
2727 if (!dev) {
....@@ -31,7 +31,6 @@
3131 bus_if = dev_get_drvdata(dev);
3232 bus_if->cmd_buf = kzalloc(CMD_BUF_MAX, GFP_KERNEL);
3333 if (!bus_if->cmd_buf) {
34
- ret = -ENOMEM;
3534 txrx_err("proto_attach failed\n");
3635 goto fail;
3736 }
....@@ -56,7 +55,7 @@
5655 goto fail;
5756 }
5857
59
- return ret;
58
+ return 0;
6059 fail:
6160 aicwf_bus_deinit(dev);
6261
....@@ -72,8 +71,8 @@
7271 txrx_err("device not found\n");
7372 return;
7473 }
75
- printk("%s", __func__);
76
- bus_if = dev_get_drvdata(dev);
74
+ sdio_dbg("%s", __func__);
75
+ bus_if = aicbsp_get_drvdata(dev);
7776 aicwf_bus_stop(bus_if);
7877
7978 sdiodev = bus_if->bus_priv.sdio;
....@@ -84,11 +83,10 @@
8483 }
8584
8685 if (bus_if->bustx_thread) {
87
- complete(&bus_if->bustx_trgg);
86
+ complete_all(&bus_if->bustx_trgg);
8887 kthread_stop(bus_if->bustx_thread);
8988 bus_if->bustx_thread = NULL;
9089 }
91
- printk("exit %s\n", __func__);
9290 }
9391
9492 void aicwf_frame_tx(void *dev, struct sk_buff *skb)
....@@ -201,25 +199,23 @@
201199 else
202200 adjust_len = aggr_len;
203201
204
- skb_inblock = __dev_alloc_skb(aggr_len+4, GFP_KERNEL);
205
- if (skb_inblock == NULL) {
206
- txrx_err("no more space!\n");
207
- aicwf_dev_skb_free(skb);
208
- return -EBADE;
202
+ skb_inblock = __dev_alloc_skb(aggr_len+4, GFP_KERNEL);
203
+ if (skb_inblock == NULL) {
204
+ txrx_err("no more space!\n");
205
+ aicwf_dev_skb_free(skb);
206
+ return -EBADE;
209207 }
210208
211209 skb_put(skb_inblock, aggr_len+4);
212210 memcpy(skb_inblock->data, data, aggr_len+4);
213211 if ((*(skb_inblock->data + 2) & 0x7f) == SDIO_TYPE_CFG_CMD_RSP)
214212 rwnx_rx_handle_msg(rx_priv->sdiodev, (struct ipc_e2a_msg *)(skb_inblock->data + 4));
215
- #if 0
216
- if ((*(skb_inblock->data + 2) & 0x7f) == SDIO_TYPE_CFG_DATA_CFM)
217
- aicwf_sdio_host_tx_cfm_handler(&(rx_priv->sdiodev->rwnx_hw->sdio_env), (u32 *)(skb_inblock->data + 4));
218
- #endif
219213 skb_pull(skb, adjust_len+4);
220214 }
221215 }
222216
217
+ /* skb_inblock no used currently, just free it! */
218
+ dev_kfree_skb(skb_inblock);
223219 dev_kfree_skb(skb);
224220 atomic_dec(&rx_priv->rx_cnt);
225221 }
....@@ -288,7 +284,7 @@
288284 void aicwf_rx_deinit(struct aicwf_rx_priv *rx_priv)
289285 {
290286 if (rx_priv->sdiodev->bus_if->busrx_thread) {
291
- complete(&rx_priv->sdiodev->bus_if->busrx_trgg);
287
+ complete_all(&rx_priv->sdiodev->bus_if->busrx_trgg);
292288 kthread_stop(rx_priv->sdiodev->bus_if->busrx_thread);
293289 rx_priv->sdiodev->bus_if->busrx_thread = NULL;
294290 }