]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/staging/winbond/wb35rx.c
Staging: w35und: move packet_came() to wb35rx.c
[linux-2.6-omap-h63xx.git] / drivers / staging / winbond / wb35rx.c
index cd5a8e16078ea58a318b31cccf1e8afc125797e6..85b861c4e9c54bbcc73414f261d378e432e2bc76 100644 (file)
@@ -264,8 +264,34 @@ void Wb35Rx_adjust(PDESCRIPTOR pRxDes)
        pRxDes->buffer_size[0] = BufferSize;
 }
 
-extern void packet_came(struct ieee80211_hw *hw, char *pRxBufferAddress, int PacketSize);
+static void packet_came(struct ieee80211_hw *hw, char *pRxBufferAddress, int PacketSize)
+{
+       struct wbsoft_priv *priv = hw->priv;
+       struct sk_buff *skb;
+       struct ieee80211_rx_status rx_status = {0};
+
+       if (!priv->enabled)
+               return;
+
+       skb = dev_alloc_skb(PacketSize);
+       if (!skb) {
+               printk("Not enough memory for packet, FIXME\n");
+               return;
+       }
+
+       memcpy(skb_put(skb, PacketSize),
+              pRxBufferAddress,
+              PacketSize);
 
+/*
+       rx_status.rate = 10;
+       rx_status.channel = 1;
+       rx_status.freq = 12345;
+       rx_status.phymode = MODE_IEEE80211B;
+*/
+
+       ieee80211_rx_irqsafe(hw, skb, &rx_status);
+}
 
 u16 Wb35Rx_indicate(struct ieee80211_hw *hw)
 {