|
@@ -131,22 +131,6 @@ static void lbs_compute_rssi(struct lbs_private *priv, struct rxpd *p_rx_pd)
|
|
|
lbs_deb_leave(LBS_DEB_RX);
|
|
|
}
|
|
|
|
|
|
-void lbs_upload_rx_packet(struct lbs_private *priv, struct sk_buff *skb)
|
|
|
-{
|
|
|
- lbs_deb_rx("skb->data %p\n", skb->data);
|
|
|
-
|
|
|
- if (priv->monitormode != LBS_MONITOR_OFF) {
|
|
|
- skb->protocol = eth_type_trans(skb, priv->rtap_net_dev);
|
|
|
- } else {
|
|
|
- if (priv->mesh_dev && IS_MESH_FRAME(skb))
|
|
|
- skb->protocol = eth_type_trans(skb, priv->mesh_dev);
|
|
|
- else
|
|
|
- skb->protocol = eth_type_trans(skb, priv->dev);
|
|
|
- }
|
|
|
- skb->ip_summed = CHECKSUM_NONE;
|
|
|
- netif_rx(skb);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* @brief This function processes received packet and forwards it
|
|
|
* to kernel/upper layer
|
|
@@ -158,7 +142,7 @@ void lbs_upload_rx_packet(struct lbs_private *priv, struct sk_buff *skb)
|
|
|
int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
-
|
|
|
+ struct net_device *dev = priv->dev;
|
|
|
struct rxpackethdr *p_rx_pkt;
|
|
|
struct rxpd *p_rx_pd;
|
|
|
|
|
@@ -169,15 +153,15 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
|
|
|
|
|
|
lbs_deb_enter(LBS_DEB_RX);
|
|
|
|
|
|
+ skb->ip_summed = CHECKSUM_NONE;
|
|
|
+
|
|
|
if (priv->monitormode != LBS_MONITOR_OFF)
|
|
|
return process_rxed_802_11_packet(priv, skb);
|
|
|
|
|
|
p_rx_pkt = (struct rxpackethdr *) skb->data;
|
|
|
p_rx_pd = &p_rx_pkt->rx_pd;
|
|
|
- if (p_rx_pd->rx_control & RxPD_MESH_FRAME)
|
|
|
- SET_MESH_FRAME(skb);
|
|
|
- else
|
|
|
- UNSET_MESH_FRAME(skb);
|
|
|
+ if (priv->mesh_dev && (p_rx_pd->rx_control & RxPD_MESH_FRAME))
|
|
|
+ dev = priv->mesh_dev;
|
|
|
|
|
|
lbs_deb_hex(LBS_DEB_RX, "RX Data: Before chop rxpd", skb->data,
|
|
|
min_t(unsigned int, skb->len, 100));
|
|
@@ -262,7 +246,8 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
|
|
|
priv->stats.rx_bytes += skb->len;
|
|
|
priv->stats.rx_packets++;
|
|
|
|
|
|
- lbs_upload_rx_packet(priv, skb);
|
|
|
+ skb->protocol = eth_type_trans(skb, dev);
|
|
|
+ netif_rx(skb);
|
|
|
|
|
|
ret = 0;
|
|
|
done:
|
|
@@ -404,7 +389,8 @@ static int process_rxed_802_11_packet(struct lbs_private *priv,
|
|
|
priv->stats.rx_bytes += skb->len;
|
|
|
priv->stats.rx_packets++;
|
|
|
|
|
|
- lbs_upload_rx_packet(priv, skb);
|
|
|
+ skb->protocol = eth_type_trans(skb, priv->rtap_net_dev);
|
|
|
+ netif_rx(skb);
|
|
|
|
|
|
ret = 0;
|
|
|
|