aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/core.c')
-rw-r--r--drivers/net/wireless/rtlwifi/core.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
index 10a3bc6dca80..f6179bc06086 100644
--- a/drivers/net/wireless/rtlwifi/core.c
+++ b/drivers/net/wireless/rtlwifi/core.c
@@ -1768,6 +1768,37 @@ bool rtl_hal_pwrseqcmdparsing(struct rtl_priv *rtlpriv, u8 cut_version,
1768 return true; 1768 return true;
1769} 1769}
1770EXPORT_SYMBOL(rtl_hal_pwrseqcmdparsing); 1770EXPORT_SYMBOL(rtl_hal_pwrseqcmdparsing);
1771
1772bool rtl_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb)
1773{
1774 struct rtl_priv *rtlpriv = rtl_priv(hw);
1775 struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
1776 struct rtl8192_tx_ring *ring;
1777 struct rtl_tx_desc *pdesc;
1778 unsigned long flags;
1779 struct sk_buff *pskb = NULL;
1780
1781 ring = &rtlpci->tx_ring[BEACON_QUEUE];
1782
1783 spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags);
1784 pskb = __skb_dequeue(&ring->queue);
1785 if (pskb)
1786 kfree_skb(pskb);
1787
1788 /*this is wrong, fill_tx_cmddesc needs update*/
1789 pdesc = &ring->desc[0];
1790
1791 rtlpriv->cfg->ops->fill_tx_cmddesc(hw, (u8 *)pdesc, 1, 1, skb);
1792
1793 __skb_queue_tail(&ring->queue, skb);
1794
1795 spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags);
1796
1797 rtlpriv->cfg->ops->tx_polling(hw, BEACON_QUEUE);
1798
1799 return true;
1800}
1801EXPORT_SYMBOL(rtl_cmd_send_packet);
1771const struct ieee80211_ops rtl_ops = { 1802const struct ieee80211_ops rtl_ops = {
1772 .start = rtl_op_start, 1803 .start = rtl_op_start,
1773 .stop = rtl_op_stop, 1804 .stop = rtl_op_stop,