summaryrefslogtreecommitdiffstats
path: root/package/libertas/src/rx.c
diff options
context:
space:
mode:
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-11-30 16:53:16 +0000
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-11-30 16:53:16 +0000
commitd5b01f7027ab40a9fe9532a63e39ac33ad53e121 (patch)
tree2e0a220a54db9e073044a32285a6f170cd67869d /package/libertas/src/rx.c
parent6ca0b59753e9e228bcb4d3b49677bbc6ea78ae52 (diff)
update libertas driver
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13447 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/libertas/src/rx.c')
-rw-r--r--package/libertas/src/rx.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/package/libertas/src/rx.c b/package/libertas/src/rx.c
index 6332fd451..05af7316f 100644
--- a/package/libertas/src/rx.c
+++ b/package/libertas/src/rx.c
@@ -145,17 +145,17 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
struct net_device *dev = priv->dev;
struct rxpackethdr *p_rx_pkt;
struct rxpd *p_rx_pd;
-
int hdrchop;
struct ethhdr *p_ethhdr;
-
const u8 rfc1042_eth_hdr[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 };
lbs_deb_enter(LBS_DEB_RX);
+ BUG_ON(!skb);
+
skb->ip_summed = CHECKSUM_NONE;
- if (priv->monitormode != LBS_MONITOR_OFF)
+ if (priv->monitormode)
return process_rxed_802_11_packet(priv, skb);
p_rx_pkt = (struct rxpackethdr *) skb->data;
@@ -247,7 +247,10 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
priv->stats.rx_packets++;
skb->protocol = eth_type_trans(skb, dev);
- netif_rx(skb);
+ if (in_interrupt())
+ netif_rx(skb);
+ else
+ netif_rx_ni(skb);
ret = 0;
done: