aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ipw2100.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index d429fd576a66..b0e23a88250f 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -2445,8 +2445,6 @@ static void isr_rx_monitor(struct ipw2100_priv *priv, int i,
2445 struct ipw2100_status *status = &priv->status_queue.drv[i]; 2445 struct ipw2100_status *status = &priv->status_queue.drv[i];
2446 struct ipw2100_rx_packet *packet = &priv->rx_buffers[i]; 2446 struct ipw2100_rx_packet *packet = &priv->rx_buffers[i];
2447 2447
2448 IPW_DEBUG_RX("Handler...\n");
2449
2450 /* Magic struct that slots into the radiotap header -- no reason 2448 /* Magic struct that slots into the radiotap header -- no reason
2451 * to build this manually element by element, we can write it much 2449 * to build this manually element by element, we can write it much
2452 * more efficiently than we can parse it. ORDER MATTERS HERE */ 2450 * more efficiently than we can parse it. ORDER MATTERS HERE */
@@ -2455,11 +2453,15 @@ static void isr_rx_monitor(struct ipw2100_priv *priv, int i,
2455 s8 rt_dbmsignal; /* signal in dbM, kluged to signed */ 2453 s8 rt_dbmsignal; /* signal in dbM, kluged to signed */
2456 } *ipw_rt; 2454 } *ipw_rt;
2457 2455
2458 if (unlikely(status->frame_size > skb_tailroom(packet->skb) - sizeof(struct ipw_rt_hdr))) { 2456 IPW_DEBUG_RX("Handler...\n");
2457
2458 if (unlikely(status->frame_size > skb_tailroom(packet->skb) -
2459 sizeof(struct ipw_rt_hdr))) {
2459 IPW_DEBUG_INFO("%s: frame_size (%u) > skb_tailroom (%u)!" 2460 IPW_DEBUG_INFO("%s: frame_size (%u) > skb_tailroom (%u)!"
2460 " Dropping.\n", 2461 " Dropping.\n",
2461 priv->net_dev->name, 2462 priv->net_dev->name,
2462 status->frame_size, skb_tailroom(packet->skb)); 2463 status->frame_size,
2464 skb_tailroom(packet->skb));
2463 priv->ieee->stats.rx_errors++; 2465 priv->ieee->stats.rx_errors++;
2464 return; 2466 return;
2465 } 2467 }
@@ -2478,8 +2480,7 @@ static void isr_rx_monitor(struct ipw2100_priv *priv, int i,
2478 return; 2480 return;
2479 } 2481 }
2480 2482
2481 pci_unmap_single(priv->pci_dev, 2483 pci_unmap_single(priv->pci_dev, packet->dma_addr,
2482 packet->dma_addr,
2483 sizeof(struct ipw2100_rx), PCI_DMA_FROMDEVICE); 2484 sizeof(struct ipw2100_rx), PCI_DMA_FROMDEVICE);
2484 memmove(packet->skb->data + sizeof(struct ipw_rt_hdr), 2485 memmove(packet->skb->data + sizeof(struct ipw_rt_hdr),
2485 packet->skb->data, status->frame_size); 2486 packet->skb->data, status->frame_size);
@@ -2488,7 +2489,7 @@ static void isr_rx_monitor(struct ipw2100_priv *priv, int i,
2488 2489
2489 ipw_rt->rt_hdr.it_version = PKTHDR_RADIOTAP_VERSION; 2490 ipw_rt->rt_hdr.it_version = PKTHDR_RADIOTAP_VERSION;
2490 ipw_rt->rt_hdr.it_pad = 0; /* always good to zero */ 2491 ipw_rt->rt_hdr.it_pad = 0; /* always good to zero */
2491 ipw_rt->rt_hdr.it_len = sizeof(struct ipw_rt_hdr); /* total header+data */ 2492 ipw_rt->rt_hdr.it_len = sizeof(struct ipw_rt_hdr); /* total hdr+data */
2492 2493
2493 ipw_rt->rt_hdr.it_present = 1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL; 2494 ipw_rt->rt_hdr.it_present = 1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL;
2494 2495