Loading drivers/net/forcedeth.c +43 −35 Original line number Diff line number Diff line Loading @@ -1330,17 +1330,10 @@ static int nv_alloc_rx(struct net_device *dev) break; } if (np->put_rx_ctx->skb == NULL) { skb = dev_alloc_skb(np->rx_buf_sz + NV_RX_ALLOC_PAD); if (!skb) return 1; if (skb) { skb->dev = dev; np->put_rx_ctx->skb = skb; } else { skb = np->put_rx_ctx->skb; } np->put_rx_ctx->dma = pci_map_single(np->pci_dev, skb->data, skb->end-skb->data, PCI_DMA_FROMDEVICE); np->put_rx_ctx->dma_len = skb->end-skb->data; Loading @@ -1360,6 +1353,9 @@ static int nv_alloc_rx(struct net_device *dev) } if (np->put_rx_ctx++ == np->last_rx_ctx) np->put_rx_ctx = np->first_rx_ctx; } else { return 1; } } return 0; } Loading Loading @@ -1948,6 +1944,8 @@ static int nv_rx_process(struct net_device *dev, int limit) pci_unmap_single(np->pci_dev, np->get_rx_ctx->dma, np->get_rx_ctx->dma_len, PCI_DMA_FROMDEVICE); skb = np->get_rx_ctx->skb; np->get_rx_ctx->skb = NULL; { int j; Loading @@ -1955,39 +1953,46 @@ static int nv_rx_process(struct net_device *dev, int limit) for (j=0; j<64; j++) { if ((j%16) == 0) dprintk("\n%03x:", j); dprintk(" %02x", ((unsigned char*)np->get_rx_ctx->skb->data)[j]); dprintk(" %02x", ((unsigned char*)skb->data)[j]); } dprintk("\n"); } /* look at what we actually got: */ if (np->desc_ver == DESC_VER_1) { if (!(flags & NV_RX_DESCRIPTORVALID)) if (!(flags & NV_RX_DESCRIPTORVALID)) { dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_ERROR) { if (flags & NV_RX_MISSEDFRAME) { np->stats.rx_missed_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & (NV_RX_ERROR1|NV_RX_ERROR2|NV_RX_ERROR3)) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_CRCERR) { np->stats.rx_crc_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_OVERFLOW) { np->stats.rx_over_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_ERROR4) { len = nv_getlen(dev, np->get_rx_ctx->skb->data, len); len = nv_getlen(dev, skb->data, len); if (len < 0) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } } Loading @@ -1999,28 +2004,34 @@ static int nv_rx_process(struct net_device *dev, int limit) } } } else { if (!(flags & NV_RX2_DESCRIPTORVALID)) if (!(flags & NV_RX2_DESCRIPTORVALID)) { dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_ERROR) { if (flags & (NV_RX2_ERROR1|NV_RX2_ERROR2|NV_RX2_ERROR3)) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_CRCERR) { np->stats.rx_crc_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_OVERFLOW) { np->stats.rx_over_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_ERROR4) { len = nv_getlen(dev, np->get_rx_ctx->skb->data, len); len = nv_getlen(dev, skb->data, len); if (len < 0) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } } Loading @@ -2037,16 +2048,13 @@ static int nv_rx_process(struct net_device *dev, int limit) flags == NV_RX2_CHECKSUMOK2 || flags == NV_RX2_CHECKSUMOK3) { dprintk(KERN_DEBUG "%s: hw checksum hit!.\n", dev->name); np->get_rx_ctx->skb->ip_summed = CHECKSUM_UNNECESSARY; skb->ip_summed = CHECKSUM_UNNECESSARY; } else { dprintk(KERN_DEBUG "%s: hwchecksum miss!.\n", dev->name); } } } /* got a valid packet - forward it to the network core */ skb = np->get_rx_ctx->skb; np->get_rx_ctx->skb = NULL; skb_put(skb, len); skb->protocol = eth_type_trans(skb, dev); dprintk(KERN_DEBUG "%s: nv_rx_process: %d bytes, proto %d accepted.\n", Loading Loading
drivers/net/forcedeth.c +43 −35 Original line number Diff line number Diff line Loading @@ -1330,17 +1330,10 @@ static int nv_alloc_rx(struct net_device *dev) break; } if (np->put_rx_ctx->skb == NULL) { skb = dev_alloc_skb(np->rx_buf_sz + NV_RX_ALLOC_PAD); if (!skb) return 1; if (skb) { skb->dev = dev; np->put_rx_ctx->skb = skb; } else { skb = np->put_rx_ctx->skb; } np->put_rx_ctx->dma = pci_map_single(np->pci_dev, skb->data, skb->end-skb->data, PCI_DMA_FROMDEVICE); np->put_rx_ctx->dma_len = skb->end-skb->data; Loading @@ -1360,6 +1353,9 @@ static int nv_alloc_rx(struct net_device *dev) } if (np->put_rx_ctx++ == np->last_rx_ctx) np->put_rx_ctx = np->first_rx_ctx; } else { return 1; } } return 0; } Loading Loading @@ -1948,6 +1944,8 @@ static int nv_rx_process(struct net_device *dev, int limit) pci_unmap_single(np->pci_dev, np->get_rx_ctx->dma, np->get_rx_ctx->dma_len, PCI_DMA_FROMDEVICE); skb = np->get_rx_ctx->skb; np->get_rx_ctx->skb = NULL; { int j; Loading @@ -1955,39 +1953,46 @@ static int nv_rx_process(struct net_device *dev, int limit) for (j=0; j<64; j++) { if ((j%16) == 0) dprintk("\n%03x:", j); dprintk(" %02x", ((unsigned char*)np->get_rx_ctx->skb->data)[j]); dprintk(" %02x", ((unsigned char*)skb->data)[j]); } dprintk("\n"); } /* look at what we actually got: */ if (np->desc_ver == DESC_VER_1) { if (!(flags & NV_RX_DESCRIPTORVALID)) if (!(flags & NV_RX_DESCRIPTORVALID)) { dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_ERROR) { if (flags & NV_RX_MISSEDFRAME) { np->stats.rx_missed_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & (NV_RX_ERROR1|NV_RX_ERROR2|NV_RX_ERROR3)) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_CRCERR) { np->stats.rx_crc_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_OVERFLOW) { np->stats.rx_over_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX_ERROR4) { len = nv_getlen(dev, np->get_rx_ctx->skb->data, len); len = nv_getlen(dev, skb->data, len); if (len < 0) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } } Loading @@ -1999,28 +2004,34 @@ static int nv_rx_process(struct net_device *dev, int limit) } } } else { if (!(flags & NV_RX2_DESCRIPTORVALID)) if (!(flags & NV_RX2_DESCRIPTORVALID)) { dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_ERROR) { if (flags & (NV_RX2_ERROR1|NV_RX2_ERROR2|NV_RX2_ERROR3)) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_CRCERR) { np->stats.rx_crc_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_OVERFLOW) { np->stats.rx_over_errors++; np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } if (flags & NV_RX2_ERROR4) { len = nv_getlen(dev, np->get_rx_ctx->skb->data, len); len = nv_getlen(dev, skb->data, len); if (len < 0) { np->stats.rx_errors++; dev_kfree_skb(skb); goto next_pkt; } } Loading @@ -2037,16 +2048,13 @@ static int nv_rx_process(struct net_device *dev, int limit) flags == NV_RX2_CHECKSUMOK2 || flags == NV_RX2_CHECKSUMOK3) { dprintk(KERN_DEBUG "%s: hw checksum hit!.\n", dev->name); np->get_rx_ctx->skb->ip_summed = CHECKSUM_UNNECESSARY; skb->ip_summed = CHECKSUM_UNNECESSARY; } else { dprintk(KERN_DEBUG "%s: hwchecksum miss!.\n", dev->name); } } } /* got a valid packet - forward it to the network core */ skb = np->get_rx_ctx->skb; np->get_rx_ctx->skb = NULL; skb_put(skb, len); skb->protocol = eth_type_trans(skb, dev); dprintk(KERN_DEBUG "%s: nv_rx_process: %d bytes, proto %d accepted.\n", Loading