|
@@ -83,79 +83,7 @@ extern rt_status cmpk_message_handle_tx(struct net_device *dev,
|
|
|
u8 *codevirtualaddress,
|
|
|
u32 packettype, u32 buffer_len)
|
|
|
{
|
|
|
-
|
|
|
- bool rt_status = true;
|
|
|
-#ifdef RTL8192U
|
|
|
- return rt_status;
|
|
|
-#else
|
|
|
- struct r8192_priv *priv = ieee80211_priv(dev);
|
|
|
- u16 frag_threshold;
|
|
|
- u16 frag_length, frag_offset = 0;
|
|
|
-
|
|
|
- rt_firmware *pfirmware = priv->pFirmware;
|
|
|
- struct sk_buff *skb;
|
|
|
- unsigned char *seg_ptr;
|
|
|
- cb_desc *tcb_desc;
|
|
|
- u8 bLastIniPkt;
|
|
|
-
|
|
|
- firmware_init_param(dev);
|
|
|
- /* Fragmentation might be required */
|
|
|
- frag_threshold = pfirmware->cmdpacket_frag_thresold;
|
|
|
- do {
|
|
|
- if ((buffer_len - frag_offset) > frag_threshold) {
|
|
|
- frag_length = frag_threshold;
|
|
|
- bLastIniPkt = 0;
|
|
|
-
|
|
|
- } else {
|
|
|
- frag_length = buffer_len - frag_offset;
|
|
|
- bLastIniPkt = 1;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /* Allocate skb buffer to contain firmware info and tx
|
|
|
- descriptor info add 4 to avoid packet appending overflow. */
|
|
|
-#ifdef RTL8192U
|
|
|
- skb = dev_alloc_skb(USB_HWDESC_HEADER_LEN + frag_length + 4);
|
|
|
-#else
|
|
|
- skb = dev_alloc_skb(frag_length + 4);
|
|
|
-#endif
|
|
|
- memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev));
|
|
|
- tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
|
|
|
- tcb_desc->queue_index = TXCMD_QUEUE;
|
|
|
- tcb_desc->bCmdOrInit = packettype;
|
|
|
- tcb_desc->bLastIniPkt = bLastIniPkt;
|
|
|
-
|
|
|
-#ifdef RTL8192U
|
|
|
- skb_reserve(skb, USB_HWDESC_HEADER_LEN);
|
|
|
-#endif
|
|
|
-
|
|
|
- seg_ptr = skb_put(skb, buffer_len);
|
|
|
- /*
|
|
|
- * Transform from little endian to big endian
|
|
|
- * and pending zero
|
|
|
- */
|
|
|
- memcpy(seg_ptr, codevirtualaddress, buffer_len);
|
|
|
- tcb_desc->txbuf_size = (u16)buffer_len;
|
|
|
-
|
|
|
-
|
|
|
- if (!priv->ieee80211->check_nic_enough_desc(dev, tcb_desc->queue_index) ||
|
|
|
- (!skb_queue_empty(&priv->ieee80211->skb_waitQ[tcb_desc->queue_index])) ||
|
|
|
- (priv->ieee80211->queue_stop)) {
|
|
|
- RT_TRACE(COMP_FIRMWARE, "======> tx full!\n");
|
|
|
- skb_queue_tail(&priv->ieee80211->skb_waitQ[tcb_desc->queue_index], skb);
|
|
|
- } else {
|
|
|
- priv->ieee80211->softmac_hard_start_xmit(skb, dev);
|
|
|
- }
|
|
|
-
|
|
|
- codevirtualaddress += frag_length;
|
|
|
- frag_offset += frag_length;
|
|
|
-
|
|
|
- } while (frag_offset < buffer_len);
|
|
|
-
|
|
|
- return rt_status;
|
|
|
-
|
|
|
-
|
|
|
-#endif
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/*-----------------------------------------------------------------------------
|