From 256b5d15007331f890107aaa1cf86d049ff874ce Mon Sep 17 00:00:00 2001 From: Francois Romieu Date: Sun, 21 Aug 2011 18:32:05 +0200 Subject: [PATCH] --- yaml --- r: 265564 b: refs/heads/master c: 78f6a6bd89e9a33e4be1bc61e6990a1172aa396e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/atm/eni.c | 3 +- trunk/drivers/infiniband/hw/amso1100/c2.c | 8 +- trunk/drivers/infiniband/hw/nes/nes_nic.c | 21 ++-- trunk/drivers/infiniband/ulp/ipoib/ipoib_cm.c | 5 +- trunk/drivers/infiniband/ulp/ipoib/ipoib_ib.c | 5 +- trunk/drivers/net/ethernet/broadcom/bnx2.c | 8 +- .../net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 5 +- .../net/ethernet/broadcom/bnx2x/bnx2x_hsi.h | 2 - .../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 1 - .../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 4 +- trunk/drivers/net/ethernet/broadcom/tg3.c | 6 +- .../net/ethernet/brocade/bna/bfa_msgq.c | 2 +- trunk/drivers/net/ethernet/brocade/bna/bnad.c | 4 +- trunk/drivers/net/ethernet/dlink/dl2k.c | 105 ++++++++-------- trunk/drivers/net/ethernet/dlink/dl2k.h | 110 +--------------- .../drivers/net/ethernet/intel/e1000/e1000.h | 2 - .../net/ethernet/intel/e1000/e1000_main.c | 18 +-- trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 2 +- trunk/drivers/scsi/fcoe/fcoe.c | 2 +- trunk/drivers/scsi/fcoe/fcoe_transport.c | 5 +- trunk/include/linux/atalk.h | 3 +- trunk/include/linux/ax25.h | 2 +- trunk/include/linux/caif/caif_socket.h | 7 +- trunk/include/linux/can.h | 2 +- trunk/include/linux/can/bcm.h | 1 - trunk/include/linux/if_packet.h | 18 +-- trunk/include/linux/if_pppol2tp.h | 2 +- trunk/include/linux/if_pppox.h | 9 +- trunk/include/linux/in.h | 2 +- trunk/include/linux/ipx.h | 2 +- trunk/include/linux/irda.h | 9 +- trunk/include/linux/l2tp.h | 7 +- trunk/include/linux/llc.h | 10 +- trunk/include/linux/netfilter/xt_connlimit.h | 1 - trunk/include/linux/netfilter/xt_conntrack.h | 1 - trunk/include/linux/netfilter/xt_iprange.h | 1 - .../include/linux/netfilter_arp/arp_tables.h | 14 +-- trunk/include/linux/netfilter_decnet.h | 3 - trunk/include/linux/netfilter_ipv4.h | 3 - .../include/linux/netfilter_ipv4/ip_tables.h | 20 +-- trunk/include/linux/netfilter_ipv6.h | 3 - .../include/linux/netfilter_ipv6/ip6_tables.h | 22 ++-- trunk/include/linux/netlink.h | 2 +- trunk/include/linux/netrom.h | 2 - trunk/include/linux/phonet.h | 5 +- trunk/include/linux/rose.h | 7 +- trunk/include/linux/tipc_config.h | 4 - trunk/include/linux/un.h | 4 +- trunk/include/linux/x25.h | 3 +- trunk/net/packet/af_packet.c | 117 ++++++++---------- trunk/net/sched/sch_sfb.c | 13 +- 52 files changed, 235 insertions(+), 384 deletions(-) diff --git a/[refs] b/[refs] index 9dbcb8be83a4..98e09a041653 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 31c15a2f24ebdab14333d9bf5df49757842ae2ec +refs/heads/master: 78f6a6bd89e9a33e4be1bc61e6990a1172aa396e diff --git a/trunk/drivers/atm/eni.c b/trunk/drivers/atm/eni.c index f7ca4c13d61d..93071417315f 100644 --- a/trunk/drivers/atm/eni.c +++ b/trunk/drivers/atm/eni.c @@ -1134,8 +1134,7 @@ DPRINTK("doing direct send\n"); /* @@@ well, this doesn't work anyway */ skb_headlen(skb)); else put_dma(tx->index,eni_dev->dma,&j,(unsigned long) - skb_frag_page(&skb_shinfo(skb)->frags[i]) + - skb_shinfo(skb)->frags[i].page_offset, + skb_shinfo(skb)->frags[i].page + skb_shinfo(skb)->frags[i].page_offset, skb_shinfo(skb)->frags[i].size); } if (skb->len & 3) diff --git a/trunk/drivers/infiniband/hw/amso1100/c2.c b/trunk/drivers/infiniband/hw/amso1100/c2.c index 6a8f36e9d9ed..444470a28de2 100644 --- a/trunk/drivers/infiniband/hw/amso1100/c2.c +++ b/trunk/drivers/infiniband/hw/amso1100/c2.c @@ -802,9 +802,11 @@ static int c2_xmit_frame(struct sk_buff *skb, struct net_device *netdev) for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; maplen = frag->size; - mapaddr = skb_frag_dma_map(&c2dev->pcidev->dev, frag, - 0, maplen, - PCI_DMA_TODEVICE); + mapaddr = + pci_map_page(c2dev->pcidev, frag->page, + frag->page_offset, maplen, + PCI_DMA_TODEVICE); + elem = elem->next; elem->skb = NULL; elem->mapaddr = mapaddr; diff --git a/trunk/drivers/infiniband/hw/nes/nes_nic.c b/trunk/drivers/infiniband/hw/nes/nes_nic.c index 96cb35a8e317..66e12298d917 100644 --- a/trunk/drivers/infiniband/hw/nes/nes_nic.c +++ b/trunk/drivers/infiniband/hw/nes/nes_nic.c @@ -441,11 +441,11 @@ static int nes_nic_send(struct sk_buff *skb, struct net_device *netdev) nesnic->tx_skb[nesnic->sq_head] = skb; for (skb_fragment_index = 0; skb_fragment_index < skb_shinfo(skb)->nr_frags; skb_fragment_index++) { - skb_frag_t *frag = - &skb_shinfo(skb)->frags[skb_fragment_index]; - bus_address = skb_frag_dma_map(&nesdev->pcidev->dev, - frag, 0, frag->size, - PCI_DMA_TODEVICE); + bus_address = pci_map_page( nesdev->pcidev, + skb_shinfo(skb)->frags[skb_fragment_index].page, + skb_shinfo(skb)->frags[skb_fragment_index].page_offset, + skb_shinfo(skb)->frags[skb_fragment_index].size, + PCI_DMA_TODEVICE); wqe_fragment_length[wqe_fragment_index] = cpu_to_le16(skb_shinfo(skb)->frags[skb_fragment_index].size); set_wqe_64bit_value(nic_sqe->wqe_words, NES_NIC_SQ_WQE_FRAG0_LOW_IDX+(2*wqe_fragment_index), @@ -561,12 +561,11 @@ static int nes_netdev_start_xmit(struct sk_buff *skb, struct net_device *netdev) /* Map all the buffers */ for (tso_frag_count=0; tso_frag_count < skb_shinfo(skb)->nr_frags; tso_frag_count++) { - skb_frag_t *frag = - &skb_shinfo(skb)->frags[tso_frag_count]; - tso_bus_address[tso_frag_count] = - skb_frag_dma_map(&nesdev->pcidev->dev, - frag, 0, frag->size, - PCI_DMA_TODEVICE); + tso_bus_address[tso_frag_count] = pci_map_page( nesdev->pcidev, + skb_shinfo(skb)->frags[tso_frag_count].page, + skb_shinfo(skb)->frags[tso_frag_count].page_offset, + skb_shinfo(skb)->frags[tso_frag_count].size, + PCI_DMA_TODEVICE); } tso_frag_index = 0; diff --git a/trunk/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/trunk/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 67a477be237e..39913a065f99 100644 --- a/trunk/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/trunk/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -169,7 +169,7 @@ static struct sk_buff *ipoib_cm_alloc_rx_skb(struct net_device *dev, goto partial_error; skb_fill_page_desc(skb, i, page, 0, PAGE_SIZE); - mapping[i + 1] = ib_dma_map_page(priv->ca, page, + mapping[i + 1] = ib_dma_map_page(priv->ca, skb_shinfo(skb)->frags[i].page, 0, PAGE_SIZE, DMA_FROM_DEVICE); if (unlikely(ib_dma_mapping_error(priv->ca, mapping[i + 1]))) goto partial_error; @@ -537,8 +537,7 @@ static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space, if (length == 0) { /* don't need this page */ - skb_fill_page_desc(toskb, i, skb_frag_page(frag), - 0, PAGE_SIZE); + skb_fill_page_desc(toskb, i, frag->page, 0, PAGE_SIZE); --skb_shinfo(skb)->nr_frags; } else { size = min(length, (unsigned) PAGE_SIZE); diff --git a/trunk/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/trunk/drivers/infiniband/ulp/ipoib/ipoib_ib.c index 00435be4a44b..81ae61d68a22 100644 --- a/trunk/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/trunk/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -182,7 +182,7 @@ static struct sk_buff *ipoib_alloc_rx_skb(struct net_device *dev, int id) goto partial_error; skb_fill_page_desc(skb, 0, page, 0, PAGE_SIZE); mapping[1] = - ib_dma_map_page(priv->ca, page, + ib_dma_map_page(priv->ca, skb_shinfo(skb)->frags[0].page, 0, PAGE_SIZE, DMA_FROM_DEVICE); if (unlikely(ib_dma_mapping_error(priv->ca, mapping[1]))) goto partial_error; @@ -323,8 +323,7 @@ static int ipoib_dma_map_tx(struct ib_device *ca, for (i = 0; i < skb_shinfo(skb)->nr_frags; ++i) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - mapping[i + off] = ib_dma_map_page(ca, - skb_frag_page(frag), + mapping[i + off] = ib_dma_map_page(ca, frag->page, frag->page_offset, frag->size, DMA_TO_DEVICE); if (unlikely(ib_dma_mapping_error(ca, mapping[i + off]))) diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2.c b/trunk/drivers/net/ethernet/broadcom/bnx2.c index 9afb6534cabe..4a9a8c8184d8 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2.c +++ b/trunk/drivers/net/ethernet/broadcom/bnx2.c @@ -2930,8 +2930,8 @@ bnx2_reuse_rx_skb_pages(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, shinfo = skb_shinfo(skb); shinfo->nr_frags--; - page = skb_frag_page(&shinfo->frags[shinfo->nr_frags]); - __skb_frag_set_page(&shinfo->frags[shinfo->nr_frags], NULL); + page = shinfo->frags[shinfo->nr_frags].page; + shinfo->frags[shinfo->nr_frags].page = NULL; cons_rx_pg->page = page; dev_kfree_skb(skb); @@ -6511,8 +6511,8 @@ bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev) txbd = &txr->tx_desc_ring[ring_prod]; len = frag->size; - mapping = skb_frag_dma_map(&bp->pdev->dev, frag, 0, len, - PCI_DMA_TODEVICE); + mapping = dma_map_page(&bp->pdev->dev, frag->page, frag->page_offset, + len, PCI_DMA_TODEVICE); if (dma_mapping_error(&bp->pdev->dev, mapping)) goto dma_error; dma_unmap_addr_set(&txr->tx_buf_ring[ring_prod], mapping, diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index 5c3eb17c4f4a..93bff08c87ad 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -2800,8 +2800,9 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - mapping = skb_frag_dma_map(&bp->pdev->dev, frag, 0, frag->size, - DMA_TO_DEVICE); + mapping = dma_map_page(&bp->pdev->dev, frag->page, + frag->page_offset, frag->size, + DMA_TO_DEVICE); if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { DP(NETIF_MSG_TX_QUEUED, "Unable to map page - " diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h index e44b858ff12f..dc24de40e336 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h +++ b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h @@ -704,7 +704,6 @@ struct port_hw_cfg { /* port 0: 0x12c port 1: 0x2bc */ #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84833 0x00000d00 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54618SE 0x00000e00 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8722 0x00000f00 - #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54616 0x00001000 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_FAILURE 0x0000fd00 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_NOT_CONN 0x0000ff00 @@ -760,7 +759,6 @@ struct port_hw_cfg { /* port 0: 0x12c port 1: 0x2bc */ #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84833 0x00000d00 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE 0x00000e00 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8722 0x00000f00 - #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54616 0x00001000 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT_WC 0x0000fc00 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE 0x0000fd00 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN 0x0000ff00 diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c index 8e9b87be3002..e3de6fedf218 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +++ b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c @@ -11242,7 +11242,6 @@ static int bnx2x_populate_ext_phy(struct bnx2x *bp, case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84833: *phy = phy_84833; break; - case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54616: case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE: *phy = phy_54618se; break; diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 85dd294aeaba..720478993950 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -10285,8 +10285,8 @@ static int __devinit bnx2x_init_dev(struct pci_dev *pdev, dev->priv_flags |= IFF_UNICAST_FLT; dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | - NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_LRO | - NETIF_F_RXCSUM | NETIF_F_RXHASH | NETIF_F_HW_VLAN_TX; + NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6 | + NETIF_F_RXCSUM | NETIF_F_LRO | NETIF_F_HW_VLAN_TX; dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_HIGHDMA; diff --git a/trunk/drivers/net/ethernet/broadcom/tg3.c b/trunk/drivers/net/ethernet/broadcom/tg3.c index a7e28a2c5348..0f811115fe2a 100644 --- a/trunk/drivers/net/ethernet/broadcom/tg3.c +++ b/trunk/drivers/net/ethernet/broadcom/tg3.c @@ -6311,8 +6311,10 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev) skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; len = frag->size; - mapping = skb_frag_dma_map(&tp->pdev->dev, frag, 0, - len, PCI_DMA_TODEVICE); + mapping = pci_map_page(tp->pdev, + frag->page, + frag->page_offset, + len, PCI_DMA_TODEVICE); tnapi->tx_buffers[entry].skb = NULL; dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping, diff --git a/trunk/drivers/net/ethernet/brocade/bna/bfa_msgq.c b/trunk/drivers/net/ethernet/brocade/bna/bfa_msgq.c index dd36427f4752..ed5218782787 100644 --- a/trunk/drivers/net/ethernet/brocade/bna/bfa_msgq.c +++ b/trunk/drivers/net/ethernet/brocade/bna/bfa_msgq.c @@ -483,7 +483,7 @@ bfa_msgq_rspq_pi_update(struct bfa_msgq_rspq *rspq, struct bfi_mbmsg *mb) mc = msghdr->msg_class; num_entries = ntohs(msghdr->num_entries); - if ((mc >= BFI_MC_MAX) || (rspq->rsphdlr[mc].cbfn == NULL)) + if ((mc > BFI_MC_MAX) || (rspq->rsphdlr[mc].cbfn == NULL)) break; (rspq->rsphdlr[mc].cbfn)(rspq->rsphdlr[mc].cbarg, msghdr); diff --git a/trunk/drivers/net/ethernet/brocade/bna/bnad.c b/trunk/drivers/net/ethernet/brocade/bna/bnad.c index 6ad4b477a4ef..bdfda0779a84 100644 --- a/trunk/drivers/net/ethernet/brocade/bna/bnad.c +++ b/trunk/drivers/net/ethernet/brocade/bna/bnad.c @@ -3167,7 +3167,7 @@ bnad_pci_probe(struct pci_dev *pdev, */ err = bnad_pci_init(bnad, pdev, &using_dac); if (err) - goto unlock_mutex; + goto free_netdev; /* * Initialize bnad structure @@ -3296,9 +3296,9 @@ bnad_pci_probe(struct pci_dev *pdev, bnad_uninit(bnad); pci_uninit: bnad_pci_uninit(pdev); -unlock_mutex: mutex_unlock(&bnad->conf_mutex); bnad_lock_uninit(bnad); +free_netdev: free_netdev(netdev); return err; } diff --git a/trunk/drivers/net/ethernet/dlink/dl2k.c b/trunk/drivers/net/ethernet/dlink/dl2k.c index 3fa91408532f..b2dc2c81a147 100644 --- a/trunk/drivers/net/ethernet/dlink/dl2k.c +++ b/trunk/drivers/net/ethernet/dlink/dl2k.c @@ -1428,7 +1428,7 @@ mii_wait_link (struct net_device *dev, int wait) do { bmsr = mii_read (dev, phy_addr, MII_BMSR); - if (bmsr & MII_BMSR_LINK_STATUS) + if (bmsr & BMSR_LSTATUS) return 0; mdelay (1); } while (--wait > 0); @@ -1449,60 +1449,60 @@ mii_get_media (struct net_device *dev) bmsr = mii_read (dev, phy_addr, MII_BMSR); if (np->an_enable) { - if (!(bmsr & MII_BMSR_AN_COMPLETE)) { + if (!(bmsr & BMSR_ANEGCOMPLETE)) { /* Auto-Negotiation not completed */ return -1; } - negotiate = mii_read (dev, phy_addr, MII_ANAR) & - mii_read (dev, phy_addr, MII_ANLPAR); - mscr = mii_read (dev, phy_addr, MII_MSCR); - mssr = mii_read (dev, phy_addr, MII_MSSR); - if (mscr & MII_MSCR_1000BT_FD && mssr & MII_MSSR_LP_1000BT_FD) { + negotiate = mii_read (dev, phy_addr, MII_ADVERTISE) & + mii_read (dev, phy_addr, MII_LPA); + mscr = mii_read (dev, phy_addr, MII_CTRL1000); + mssr = mii_read (dev, phy_addr, MII_STAT1000); + if (mscr & ADVERTISE_1000FULL && mssr & LPA_1000FULL) { np->speed = 1000; np->full_duplex = 1; printk (KERN_INFO "Auto 1000 Mbps, Full duplex\n"); - } else if (mscr & MII_MSCR_1000BT_HD && mssr & MII_MSSR_LP_1000BT_HD) { + } else if (mscr & ADVERTISE_1000HALF && mssr & LPA_1000HALF) { np->speed = 1000; np->full_duplex = 0; printk (KERN_INFO "Auto 1000 Mbps, Half duplex\n"); - } else if (negotiate & MII_ANAR_100BX_FD) { + } else if (negotiate & ADVERTISE_100FULL) { np->speed = 100; np->full_duplex = 1; printk (KERN_INFO "Auto 100 Mbps, Full duplex\n"); - } else if (negotiate & MII_ANAR_100BX_HD) { + } else if (negotiate & ADVERTISE_100HALF) { np->speed = 100; np->full_duplex = 0; printk (KERN_INFO "Auto 100 Mbps, Half duplex\n"); - } else if (negotiate & MII_ANAR_10BT_FD) { + } else if (negotiate & ADVERTISE_10FULL) { np->speed = 10; np->full_duplex = 1; printk (KERN_INFO "Auto 10 Mbps, Full duplex\n"); - } else if (negotiate & MII_ANAR_10BT_HD) { + } else if (negotiate & ADVERTISE_10HALF) { np->speed = 10; np->full_duplex = 0; printk (KERN_INFO "Auto 10 Mbps, Half duplex\n"); } - if (negotiate & MII_ANAR_PAUSE) { + if (negotiate & ADVERTISE_PAUSE_CAP) { np->tx_flow &= 1; np->rx_flow &= 1; - } else if (negotiate & MII_ANAR_ASYMMETRIC) { + } else if (negotiate & ADVERTISE_PAUSE_ASYM) { np->tx_flow = 0; np->rx_flow &= 1; } /* else tx_flow, rx_flow = user select */ } else { __u16 bmcr = mii_read (dev, phy_addr, MII_BMCR); - switch (bmcr & (MII_BMCR_SPEED_100 | MII_BMCR_SPEED_1000)) { - case MII_BMCR_SPEED_1000: + switch (bmcr & (BMCR_SPEED100 | BMCR_SPEED1000)) { + case BMCR_SPEED1000: printk (KERN_INFO "Operating at 1000 Mbps, "); break; - case MII_BMCR_SPEED_100: + case BMCR_SPEED100: printk (KERN_INFO "Operating at 100 Mbps, "); break; case 0: printk (KERN_INFO "Operating at 10 Mbps, "); } - if (bmcr & MII_BMCR_DUPLEX_MODE) { + if (bmcr & BMCR_FULLDPLX) { printk (KERN_CONT "Full duplex\n"); } else { printk (KERN_CONT "Half duplex\n"); @@ -1536,24 +1536,22 @@ mii_set_media (struct net_device *dev) if (np->an_enable) { /* Advertise capabilities */ bmsr = mii_read (dev, phy_addr, MII_BMSR); - anar = mii_read (dev, phy_addr, MII_ANAR) & - ~MII_ANAR_100BX_FD & - ~MII_ANAR_100BX_HD & - ~MII_ANAR_100BT4 & - ~MII_ANAR_10BT_FD & - ~MII_ANAR_10BT_HD; - if (bmsr & MII_BMSR_100BX_FD) - anar |= MII_ANAR_100BX_FD; - if (bmsr & MII_BMSR_100BX_HD) - anar |= MII_ANAR_100BX_HD; - if (bmsr & MII_BMSR_100BT4) - anar |= MII_ANAR_100BT4; - if (bmsr & MII_BMSR_10BT_FD) - anar |= MII_ANAR_10BT_FD; - if (bmsr & MII_BMSR_10BT_HD) - anar |= MII_ANAR_10BT_HD; - anar |= MII_ANAR_PAUSE | MII_ANAR_ASYMMETRIC; - mii_write (dev, phy_addr, MII_ANAR, anar); + anar = mii_read (dev, phy_addr, MII_ADVERTISE) & + ~(ADVERTISE_100FULL | ADVERTISE_10FULL | + ADVERTISE_100HALF | ADVERTISE_10HALF | + ADVERTISE_100BASE4); + if (bmsr & BMSR_100FULL) + anar |= ADVERTISE_100FULL; + if (bmsr & BMSR_100HALF) + anar |= ADVERTISE_100HALF; + if (bmsr & BMSR_100BASE4) + anar |= ADVERTISE_100BASE4; + if (bmsr & BMSR_10FULL) + anar |= ADVERTISE_10FULL; + if (bmsr & BMSR_10HALF) + anar |= ADVERTISE_10HALF; + anar |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM; + mii_write (dev, phy_addr, MII_ADVERTISE, anar); /* Enable Auto crossover */ pscr = mii_read (dev, phy_addr, MII_PHY_SCR); @@ -1561,8 +1559,8 @@ mii_set_media (struct net_device *dev) mii_write (dev, phy_addr, MII_PHY_SCR, pscr); /* Soft reset PHY */ - mii_write (dev, phy_addr, MII_BMCR, MII_BMCR_RESET); - bmcr = MII_BMCR_AN_ENABLE | MII_BMCR_RESTART_AN | MII_BMCR_RESET; + mii_write (dev, phy_addr, MII_BMCR, BMCR_RESET); + bmcr = BMCR_ANENABLE | BMCR_ANRESTART | BMCR_RESET; mii_write (dev, phy_addr, MII_BMCR, bmcr); mdelay(1); } else { @@ -1574,7 +1572,7 @@ mii_set_media (struct net_device *dev) /* 2) PHY Reset */ bmcr = mii_read (dev, phy_addr, MII_BMCR); - bmcr |= MII_BMCR_RESET; + bmcr |= BMCR_RESET; mii_write (dev, phy_addr, MII_BMCR, bmcr); /* 3) Power Down */ @@ -1583,25 +1581,25 @@ mii_set_media (struct net_device *dev) mdelay (100); /* wait a certain time */ /* 4) Advertise nothing */ - mii_write (dev, phy_addr, MII_ANAR, 0); + mii_write (dev, phy_addr, MII_ADVERTISE, 0); /* 5) Set media and Power Up */ - bmcr = MII_BMCR_POWER_DOWN; + bmcr = BMCR_PDOWN; if (np->speed == 100) { - bmcr |= MII_BMCR_SPEED_100; + bmcr |= BMCR_SPEED100; printk (KERN_INFO "Manual 100 Mbps, "); } else if (np->speed == 10) { printk (KERN_INFO "Manual 10 Mbps, "); } if (np->full_duplex) { - bmcr |= MII_BMCR_DUPLEX_MODE; + bmcr |= BMCR_FULLDPLX; printk (KERN_CONT "Full duplex\n"); } else { printk (KERN_CONT "Half duplex\n"); } #if 0 /* Set 1000BaseT Master/Slave setting */ - mscr = mii_read (dev, phy_addr, MII_MSCR); + mscr = mii_read (dev, phy_addr, MII_CTRL1000); mscr |= MII_MSCR_CFG_ENABLE; mscr &= ~MII_MSCR_CFG_VALUE = 0; #endif @@ -1624,7 +1622,7 @@ mii_get_media_pcs (struct net_device *dev) bmsr = mii_read (dev, phy_addr, PCS_BMSR); if (np->an_enable) { - if (!(bmsr & MII_BMSR_AN_COMPLETE)) { + if (!(bmsr & BMSR_ANEGCOMPLETE)) { /* Auto-Negotiation not completed */ return -1; } @@ -1649,7 +1647,7 @@ mii_get_media_pcs (struct net_device *dev) } else { __u16 bmcr = mii_read (dev, phy_addr, PCS_BMCR); printk (KERN_INFO "Operating at 1000 Mbps, "); - if (bmcr & MII_BMCR_DUPLEX_MODE) { + if (bmcr & BMCR_FULLDPLX) { printk (KERN_CONT "Full duplex\n"); } else { printk (KERN_CONT "Half duplex\n"); @@ -1682,7 +1680,7 @@ mii_set_media_pcs (struct net_device *dev) if (np->an_enable) { /* Advertise capabilities */ esr = mii_read (dev, phy_addr, PCS_ESR); - anar = mii_read (dev, phy_addr, MII_ANAR) & + anar = mii_read (dev, phy_addr, MII_ADVERTISE) & ~PCS_ANAR_HALF_DUPLEX & ~PCS_ANAR_FULL_DUPLEX; if (esr & (MII_ESR_1000BT_HD | MII_ESR_1000BX_HD)) @@ -1690,22 +1688,21 @@ mii_set_media_pcs (struct net_device *dev) if (esr & (MII_ESR_1000BT_FD | MII_ESR_1000BX_FD)) anar |= PCS_ANAR_FULL_DUPLEX; anar |= PCS_ANAR_PAUSE | PCS_ANAR_ASYMMETRIC; - mii_write (dev, phy_addr, MII_ANAR, anar); + mii_write (dev, phy_addr, MII_ADVERTISE, anar); /* Soft reset PHY */ - mii_write (dev, phy_addr, MII_BMCR, MII_BMCR_RESET); - bmcr = MII_BMCR_AN_ENABLE | MII_BMCR_RESTART_AN | - MII_BMCR_RESET; + mii_write (dev, phy_addr, MII_BMCR, BMCR_RESET); + bmcr = BMCR_ANENABLE | BMCR_ANRESTART | BMCR_RESET; mii_write (dev, phy_addr, MII_BMCR, bmcr); mdelay(1); } else { /* Force speed setting */ /* PHY Reset */ - bmcr = MII_BMCR_RESET; + bmcr = BMCR_RESET; mii_write (dev, phy_addr, MII_BMCR, bmcr); mdelay(10); if (np->full_duplex) { - bmcr = MII_BMCR_DUPLEX_MODE; + bmcr = BMCR_FULLDPLX; printk (KERN_INFO "Manual full duplex\n"); } else { bmcr = 0; @@ -1715,7 +1712,7 @@ mii_set_media_pcs (struct net_device *dev) mdelay(10); /* Advertise nothing */ - mii_write (dev, phy_addr, MII_ANAR, 0); + mii_write (dev, phy_addr, MII_ADVERTISE, 0); } return 0; } diff --git a/trunk/drivers/net/ethernet/dlink/dl2k.h b/trunk/drivers/net/ethernet/dlink/dl2k.h index 7caab3d26a9e..ba0adcafa55a 100644 --- a/trunk/drivers/net/ethernet/dlink/dl2k.h +++ b/trunk/drivers/net/ethernet/dlink/dl2k.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include /* Processor type for cache alignment. */ #include @@ -271,20 +272,9 @@ enum RFS_bits { #define MII_RESET_TIME_OUT 10000 /* MII register */ enum _mii_reg { - MII_BMCR = 0, - MII_BMSR = 1, - MII_PHY_ID1 = 2, - MII_PHY_ID2 = 3, - MII_ANAR = 4, - MII_ANLPAR = 5, - MII_ANER = 6, - MII_ANNPT = 7, - MII_ANLPRNP = 8, - MII_MSCR = 9, - MII_MSSR = 10, - MII_ESR = 15, MII_PHY_SCR = 16, }; + /* PCS register */ enum _pcs_reg { PCS_BMCR = 0, @@ -297,102 +287,6 @@ enum _pcs_reg { PCS_ESR = 15, }; -/* Basic Mode Control Register */ -enum _mii_bmcr { - MII_BMCR_RESET = 0x8000, - MII_BMCR_LOOP_BACK = 0x4000, - MII_BMCR_SPEED_LSB = 0x2000, - MII_BMCR_AN_ENABLE = 0x1000, - MII_BMCR_POWER_DOWN = 0x0800, - MII_BMCR_ISOLATE = 0x0400, - MII_BMCR_RESTART_AN = 0x0200, - MII_BMCR_DUPLEX_MODE = 0x0100, - MII_BMCR_COL_TEST = 0x0080, - MII_BMCR_SPEED_MSB = 0x0040, - MII_BMCR_SPEED_RESERVED = 0x003f, - MII_BMCR_SPEED_10 = 0, - MII_BMCR_SPEED_100 = MII_BMCR_SPEED_LSB, - MII_BMCR_SPEED_1000 = MII_BMCR_SPEED_MSB, -}; - -/* Basic Mode Status Register */ -enum _mii_bmsr { - MII_BMSR_100BT4 = 0x8000, - MII_BMSR_100BX_FD = 0x4000, - MII_BMSR_100BX_HD = 0x2000, - MII_BMSR_10BT_FD = 0x1000, - MII_BMSR_10BT_HD = 0x0800, - MII_BMSR_100BT2_FD = 0x0400, - MII_BMSR_100BT2_HD = 0x0200, - MII_BMSR_EXT_STATUS = 0x0100, - MII_BMSR_PREAMBLE_SUPP = 0x0040, - MII_BMSR_AN_COMPLETE = 0x0020, - MII_BMSR_REMOTE_FAULT = 0x0010, - MII_BMSR_AN_ABILITY = 0x0008, - MII_BMSR_LINK_STATUS = 0x0004, - MII_BMSR_JABBER_DETECT = 0x0002, - MII_BMSR_EXT_CAP = 0x0001, -}; - -/* ANAR */ -enum _mii_anar { - MII_ANAR_NEXT_PAGE = 0x8000, - MII_ANAR_REMOTE_FAULT = 0x4000, - MII_ANAR_ASYMMETRIC = 0x0800, - MII_ANAR_PAUSE = 0x0400, - MII_ANAR_100BT4 = 0x0200, - MII_ANAR_100BX_FD = 0x0100, - MII_ANAR_100BX_HD = 0x0080, - MII_ANAR_10BT_FD = 0x0020, - MII_ANAR_10BT_HD = 0x0010, - MII_ANAR_SELECTOR = 0x001f, - MII_IEEE8023_CSMACD = 0x0001, -}; - -/* ANLPAR */ -enum _mii_anlpar { - MII_ANLPAR_NEXT_PAGE = MII_ANAR_NEXT_PAGE, - MII_ANLPAR_REMOTE_FAULT = MII_ANAR_REMOTE_FAULT, - MII_ANLPAR_ASYMMETRIC = MII_ANAR_ASYMMETRIC, - MII_ANLPAR_PAUSE = MII_ANAR_PAUSE, - MII_ANLPAR_100BT4 = MII_ANAR_100BT4, - MII_ANLPAR_100BX_FD = MII_ANAR_100BX_FD, - MII_ANLPAR_100BX_HD = MII_ANAR_100BX_HD, - MII_ANLPAR_10BT_FD = MII_ANAR_10BT_FD, - MII_ANLPAR_10BT_HD = MII_ANAR_10BT_HD, - MII_ANLPAR_SELECTOR = MII_ANAR_SELECTOR, -}; - -/* Auto-Negotiation Expansion Register */ -enum _mii_aner { - MII_ANER_PAR_DETECT_FAULT = 0x0010, - MII_ANER_LP_NEXTPAGABLE = 0x0008, - MII_ANER_NETXTPAGABLE = 0x0004, - MII_ANER_PAGE_RECEIVED = 0x0002, - MII_ANER_LP_NEGOTIABLE = 0x0001, -}; - -/* MASTER-SLAVE Control Register */ -enum _mii_mscr { - MII_MSCR_TEST_MODE = 0xe000, - MII_MSCR_CFG_ENABLE = 0x1000, - MII_MSCR_CFG_VALUE = 0x0800, - MII_MSCR_PORT_VALUE = 0x0400, - MII_MSCR_1000BT_FD = 0x0200, - MII_MSCR_1000BT_HD = 0X0100, -}; - -/* MASTER-SLAVE Status Register */ -enum _mii_mssr { - MII_MSSR_CFG_FAULT = 0x8000, - MII_MSSR_CFG_RES = 0x4000, - MII_MSSR_LOCAL_RCV_STATUS = 0x2000, - MII_MSSR_REMOTE_RCVR = 0x1000, - MII_MSSR_LP_1000BT_FD = 0x0800, - MII_MSSR_LP_1000BT_HD = 0x0400, - MII_MSSR_IDLE_ERR_COUNT = 0x00ff, -}; - /* IEEE Extened Status Register */ enum _mii_esr { MII_ESR_1000BX_FD = 0x8000, diff --git a/trunk/drivers/net/ethernet/intel/e1000/e1000.h b/trunk/drivers/net/ethernet/intel/e1000/e1000.h index 4ea87b19ac1a..24f41da8c4be 100644 --- a/trunk/drivers/net/ethernet/intel/e1000/e1000.h +++ b/trunk/drivers/net/ethernet/intel/e1000/e1000.h @@ -150,8 +150,6 @@ struct e1000_buffer { unsigned long time_stamp; u16 length; u16 next_to_watch; - unsigned int segs; - unsigned int bytecount; u16 mapped_as_page; }; diff --git a/trunk/drivers/net/ethernet/intel/e1000/e1000_main.c b/trunk/drivers/net/ethernet/intel/e1000/e1000_main.c index 4a32c15524c9..7c280e5832b2 100644 --- a/trunk/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/trunk/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -2848,7 +2848,7 @@ static int e1000_tx_map(struct e1000_adapter *adapter, struct e1000_buffer *buffer_info; unsigned int len = skb_headlen(skb); unsigned int offset = 0, size, count = 0, i; - unsigned int f, bytecount, segs; + unsigned int f; i = tx_ring->next_to_use; @@ -2949,13 +2949,7 @@ static int e1000_tx_map(struct e1000_adapter *adapter, } } - segs = skb_shinfo(skb)->gso_segs ?: 1; - /* multiply data chunks by size of headers */ - bytecount = ((segs - 1) * skb_headlen(skb)) + skb->len; - tx_ring->buffer_info[i].skb = skb; - tx_ring->buffer_info[i].segs = segs; - tx_ring->buffer_info[i].bytecount = bytecount; tx_ring->buffer_info[first].next_to_watch = i; return count; @@ -3629,8 +3623,14 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter, cleaned = (i == eop); if (cleaned) { - total_tx_packets += buffer_info->segs; - total_tx_bytes += buffer_info->bytecount; + struct sk_buff *skb = buffer_info->skb; + unsigned int segs, bytecount; + segs = skb_shinfo(skb)->gso_segs ?: 1; + /* multiply data chunks by size of headers */ + bytecount = ((segs - 1) * skb_headlen(skb)) + + skb->len; + total_tx_packets += segs; + total_tx_bytes += bytecount; } e1000_unmap_and_free_tx_resource(adapter, buffer_info); tx_desc->upper.data = 0; diff --git a/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c index 2c780a78fcbd..7cb2cd48b17b 100644 --- a/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ b/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c @@ -302,7 +302,7 @@ static int bnx2fc_xmit(struct fc_lport *lport, struct fc_frame *fp) return -ENOMEM; } frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; - cp = kmap_atomic(skb_frag_page(frag), KM_SKB_DATA_SOFTIRQ) + cp = kmap_atomic(frag->page, KM_SKB_DATA_SOFTIRQ) + frag->page_offset; } else { cp = (struct fcoe_crc_eof *)skb_put(skb, tlen); diff --git a/trunk/drivers/scsi/fcoe/fcoe.c b/trunk/drivers/scsi/fcoe/fcoe.c index 3416ab673814..ba710e350ac5 100644 --- a/trunk/drivers/scsi/fcoe/fcoe.c +++ b/trunk/drivers/scsi/fcoe/fcoe.c @@ -1514,7 +1514,7 @@ int fcoe_xmit(struct fc_lport *lport, struct fc_frame *fp) return -ENOMEM; } frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; - cp = kmap_atomic(skb_frag_page(frag), KM_SKB_DATA_SOFTIRQ) + cp = kmap_atomic(frag->page, KM_SKB_DATA_SOFTIRQ) + frag->page_offset; } else { cp = (struct fcoe_crc_eof *)skb_put(skb, tlen); diff --git a/trunk/drivers/scsi/fcoe/fcoe_transport.c b/trunk/drivers/scsi/fcoe/fcoe_transport.c index f6613f9f1bdb..41068e8748e7 100644 --- a/trunk/drivers/scsi/fcoe/fcoe_transport.c +++ b/trunk/drivers/scsi/fcoe/fcoe_transport.c @@ -108,9 +108,8 @@ u32 fcoe_fc_crc(struct fc_frame *fp) len = frag->size; while (len > 0) { clen = min(len, PAGE_SIZE - (off & ~PAGE_MASK)); - data = kmap_atomic( - skb_frag_page(frag) + (off >> PAGE_SHIFT), - KM_SKB_DATA_SOFTIRQ); + data = kmap_atomic(frag->page + (off >> PAGE_SHIFT), + KM_SKB_DATA_SOFTIRQ); crc = crc32(crc, data + (off & ~PAGE_MASK), clen); kunmap_atomic(data, KM_SKB_DATA_SOFTIRQ); off += clen; diff --git a/trunk/include/linux/atalk.h b/trunk/include/linux/atalk.h index f57c36881c48..d34c187432ed 100644 --- a/trunk/include/linux/atalk.h +++ b/trunk/include/linux/atalk.h @@ -3,7 +3,6 @@ #include #include -#include /* * AppleTalk networking structures @@ -29,7 +28,7 @@ struct atalk_addr { }; struct sockaddr_at { - __kernel_sa_family_t sat_family; + sa_family_t sat_family; __u8 sat_port; struct atalk_addr sat_addr; char sat_zero[8]; diff --git a/trunk/include/linux/ax25.h b/trunk/include/linux/ax25.h index 74c89a41732d..56c11f0dbd80 100644 --- a/trunk/include/linux/ax25.h +++ b/trunk/include/linux/ax25.h @@ -47,7 +47,7 @@ typedef struct { } ax25_address; struct sockaddr_ax25 { - __kernel_sa_family_t sax25_family; + sa_family_t sax25_family; ax25_address sax25_call; int sax25_ndigis; /* Digipeater ax25_address sets follow */ diff --git a/trunk/include/linux/caif/caif_socket.h b/trunk/include/linux/caif/caif_socket.h index 3f3bac6af7bc..d9cb19b7cff7 100644 --- a/trunk/include/linux/caif/caif_socket.h +++ b/trunk/include/linux/caif/caif_socket.h @@ -9,7 +9,12 @@ #define _LINUX_CAIF_SOCKET_H #include + +#ifdef __KERNEL__ #include +#else +#include +#endif /** * enum caif_link_selector - Physical Link Selection. @@ -139,7 +144,7 @@ enum caif_debug_service { * CAIF Channel. It defines the service to connect to on the modem. */ struct sockaddr_caif { - __kernel_sa_family_t family; + sa_family_t family; union { struct { __u8 type; /* type: enum caif_at_type */ diff --git a/trunk/include/linux/can.h b/trunk/include/linux/can.h index bb047dc2de16..d18333302cbd 100644 --- a/trunk/include/linux/can.h +++ b/trunk/include/linux/can.h @@ -78,7 +78,7 @@ struct can_frame { * @can_addr: protocol specific address information */ struct sockaddr_can { - __kernel_sa_family_t can_family; + sa_family_t can_family; int can_ifindex; union { /* transport protocol class address information (e.g. ISOTP) */ diff --git a/trunk/include/linux/can/bcm.h b/trunk/include/linux/can/bcm.h index e96154de4039..1432b278c52d 100644 --- a/trunk/include/linux/can/bcm.h +++ b/trunk/include/linux/can/bcm.h @@ -15,7 +15,6 @@ #define CAN_BCM_H #include -#include /** * struct bcm_msg_head - head of messages to/from the broadcast manager diff --git a/trunk/include/linux/if_packet.h b/trunk/include/linux/if_packet.h index 5e76988f8ffc..5926d59c4295 100644 --- a/trunk/include/linux/if_packet.h +++ b/trunk/include/linux/if_packet.h @@ -126,7 +126,7 @@ struct tpacket2_hdr { __u16 tp_padding; }; -struct tpacket_hdr_variant1 { +struct hdr_variant1 { __u32 tp_rxhash; __u32 tp_vlan_tci; }; @@ -142,11 +142,11 @@ struct tpacket3_hdr { __u16 tp_net; /* pkt_hdr variants */ union { - struct tpacket_hdr_variant1 hv1; + struct hdr_variant1 hv1; }; }; -struct tpacket_bd_ts { +struct bd_ts { unsigned int ts_sec; union { unsigned int ts_usec; @@ -154,7 +154,7 @@ struct tpacket_bd_ts { }; }; -struct tpacket_hdr_v1 { +struct hdr_v1 { __u32 block_status; __u32 num_pkts; __u32 offset_to_first_pkt; @@ -200,17 +200,17 @@ struct tpacket_hdr_v1 { * Use the ts of the first packet in the block. * */ - struct tpacket_bd_ts ts_first_pkt, ts_last_pkt; + struct bd_ts ts_first_pkt, ts_last_pkt; }; -union tpacket_bd_header_u { - struct tpacket_hdr_v1 bh1; +union bd_header_u { + struct hdr_v1 bh1; }; -struct tpacket_block_desc { +struct block_desc { __u32 version; __u32 offset_to_priv; - union tpacket_bd_header_u hdr; + union bd_header_u hdr; }; #define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll)) diff --git a/trunk/include/linux/if_pppol2tp.h b/trunk/include/linux/if_pppol2tp.h index 23cefa1111bf..184bc5566207 100644 --- a/trunk/include/linux/if_pppol2tp.h +++ b/trunk/include/linux/if_pppol2tp.h @@ -39,7 +39,7 @@ struct pppol2tp_addr { * bits. So we need a different sockaddr structure. */ struct pppol2tpv3_addr { - __kernel_pid_t pid; /* pid that owns the fd. + pid_t pid; /* pid that owns the fd. * 0 => current */ int fd; /* FD of UDP or IP socket to use */ diff --git a/trunk/include/linux/if_pppox.h b/trunk/include/linux/if_pppox.h index b5f927f59f26..397921b09ef9 100644 --- a/trunk/include/linux/if_pppox.h +++ b/trunk/include/linux/if_pppox.h @@ -20,9 +20,8 @@ #include #include -#include -#include #ifdef __KERNEL__ +#include #include #include #include @@ -64,7 +63,7 @@ struct pptp_addr { #define PX_MAX_PROTO 3 struct sockaddr_pppox { - __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */ + sa_family_t sa_family; /* address family, AF_PPPOX */ unsigned int sa_protocol; /* protocol identifier */ union { struct pppoe_addr pppoe; @@ -78,7 +77,7 @@ struct sockaddr_pppox { * type instead. */ struct sockaddr_pppol2tp { - __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */ + sa_family_t sa_family; /* address family, AF_PPPOX */ unsigned int sa_protocol; /* protocol identifier */ struct pppol2tp_addr pppol2tp; } __attribute__((packed)); @@ -87,7 +86,7 @@ struct sockaddr_pppol2tp { * bits. So we need a different sockaddr structure. */ struct sockaddr_pppol2tpv3 { - __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */ + sa_family_t sa_family; /* address family, AF_PPPOX */ unsigned int sa_protocol; /* protocol identifier */ struct pppol2tpv3_addr pppol2tp; } __attribute__((packed)); diff --git a/trunk/include/linux/in.h b/trunk/include/linux/in.h index 01129c0ea87c..beeb6dee2b49 100644 --- a/trunk/include/linux/in.h +++ b/trunk/include/linux/in.h @@ -182,7 +182,7 @@ struct in_pktinfo { /* Structure describing an Internet (IP) socket address. */ #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ struct sockaddr_in { - __kernel_sa_family_t sin_family; /* Address family */ + sa_family_t sin_family; /* Address family */ __be16 sin_port; /* Port number */ struct in_addr sin_addr; /* Internet address */ diff --git a/trunk/include/linux/ipx.h b/trunk/include/linux/ipx.h index 3d48014cdd71..aabb1d294025 100644 --- a/trunk/include/linux/ipx.h +++ b/trunk/include/linux/ipx.h @@ -7,7 +7,7 @@ #define IPX_MTU 576 struct sockaddr_ipx { - __kernel_sa_family_t sipx_family; + sa_family_t sipx_family; __be16 sipx_port; __be32 sipx_network; unsigned char sipx_node[IPX_NODE_LEN]; diff --git a/trunk/include/linux/irda.h b/trunk/include/linux/irda.h index a014c3252311..00bdad0e8515 100644 --- a/trunk/include/linux/irda.h +++ b/trunk/include/linux/irda.h @@ -26,9 +26,12 @@ #define KERNEL_IRDA_H #include -#include -/* Note that this file is shared with user space. */ +/* Please do *not* add any #include in this file, this file is + * included as-is in user space. + * Please fix the calling file to properly included needed files before + * this one, or preferably to include instead. + * Jean II */ /* Hint bit positions for first hint byte */ #define HINT_PNP 0x01 @@ -122,7 +125,7 @@ enum { #define LSAP_ANY 0xff struct sockaddr_irda { - __kernel_sa_family_t sir_family; /* AF_IRDA */ + sa_family_t sir_family; /* AF_IRDA */ __u8 sir_lsap_sel; /* LSAP selector */ __u32 sir_addr; /* Device address */ char sir_name[25]; /* Usually :IrDA:TinyTP */ diff --git a/trunk/include/linux/l2tp.h b/trunk/include/linux/l2tp.h index e77d7f9bb246..4bdb31df8e72 100644 --- a/trunk/include/linux/l2tp.h +++ b/trunk/include/linux/l2tp.h @@ -8,8 +8,8 @@ #define _LINUX_L2TP_H_ #include -#include #ifdef __KERNEL__ +#include #include #else #include @@ -26,15 +26,14 @@ #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ struct sockaddr_l2tpip { /* The first fields must match struct sockaddr_in */ - __kernel_sa_family_t l2tp_family; /* AF_INET */ + sa_family_t l2tp_family; /* AF_INET */ __be16 l2tp_unused; /* INET port number (unused) */ struct in_addr l2tp_addr; /* Internet address */ __u32 l2tp_conn_id; /* Connection ID of tunnel */ /* Pad to size of `struct sockaddr'. */ - unsigned char __pad[sizeof(struct sockaddr) - - sizeof(__kernel_sa_family_t) - + unsigned char __pad[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(__be16) - sizeof(struct in_addr) - sizeof(__u32)]; }; diff --git a/trunk/include/linux/llc.h b/trunk/include/linux/llc.h index a2418ae13ee9..ad7074ba81af 100644 --- a/trunk/include/linux/llc.h +++ b/trunk/include/linux/llc.h @@ -12,20 +12,16 @@ * * See the GNU General Public License for more details. */ - -#include - #define __LLC_SOCK_SIZE__ 16 /* sizeof(sockaddr_llc), word align. */ struct sockaddr_llc { - __kernel_sa_family_t sllc_family; /* AF_LLC */ - __kernel_sa_family_t sllc_arphrd; /* ARPHRD_ETHER */ + sa_family_t sllc_family; /* AF_LLC */ + sa_family_t sllc_arphrd; /* ARPHRD_ETHER */ unsigned char sllc_test; unsigned char sllc_xid; unsigned char sllc_ua; /* UA data, only for SOCK_STREAM. */ unsigned char sllc_sap; unsigned char sllc_mac[IFHWADDRLEN]; - unsigned char __pad[__LLC_SOCK_SIZE__ - - sizeof(__kernel_sa_family_t) * 2 - + unsigned char __pad[__LLC_SOCK_SIZE__ - sizeof(sa_family_t) * 2 - sizeof(unsigned char) * 4 - IFHWADDRLEN]; }; diff --git a/trunk/include/linux/netfilter/xt_connlimit.h b/trunk/include/linux/netfilter/xt_connlimit.h index d1366f05d1b2..0ca66e97acbc 100644 --- a/trunk/include/linux/netfilter/xt_connlimit.h +++ b/trunk/include/linux/netfilter/xt_connlimit.h @@ -2,7 +2,6 @@ #define _XT_CONNLIMIT_H #include -#include struct xt_connlimit_data; diff --git a/trunk/include/linux/netfilter/xt_conntrack.h b/trunk/include/linux/netfilter/xt_conntrack.h index e3c041d54020..74b904d8f99c 100644 --- a/trunk/include/linux/netfilter/xt_conntrack.h +++ b/trunk/include/linux/netfilter/xt_conntrack.h @@ -6,7 +6,6 @@ #define _XT_CONNTRACK_H #include -#include #include #define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1)) diff --git a/trunk/include/linux/netfilter/xt_iprange.h b/trunk/include/linux/netfilter/xt_iprange.h index 25fd7cf851f0..c1f21a779a45 100644 --- a/trunk/include/linux/netfilter/xt_iprange.h +++ b/trunk/include/linux/netfilter/xt_iprange.h @@ -2,7 +2,6 @@ #define _LINUX_NETFILTER_XT_IPRANGE_H 1 #include -#include enum { IPRANGE_SRC = 1 << 0, /* match source IP address */ diff --git a/trunk/include/linux/netfilter_arp/arp_tables.h b/trunk/include/linux/netfilter_arp/arp_tables.h index e08565d45178..adbf4bff87ed 100644 --- a/trunk/include/linux/netfilter_arp/arp_tables.h +++ b/trunk/include/linux/netfilter_arp/arp_tables.h @@ -52,7 +52,7 @@ struct arpt_arp { struct in_addr smsk, tmsk; /* Device hw address length, src+target device addresses */ - __u8 arhln, arhln_mask; + u_int8_t arhln, arhln_mask; struct arpt_devaddr_info src_devaddr; struct arpt_devaddr_info tgt_devaddr; @@ -71,9 +71,9 @@ struct arpt_arp { unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; /* Flags word */ - __u8 flags; + u_int8_t flags; /* Inverse flags */ - __u16 invflags; + u_int16_t invflags; }; /* Values for "flag" field in struct arpt_ip (general arp structure). @@ -102,9 +102,9 @@ struct arpt_entry struct arpt_arp arp; /* Size of arpt_entry + matches */ - __u16 target_offset; + u_int16_t target_offset; /* Size of arpt_entry + matches + target */ - __u16 next_offset; + u_int16_t next_offset; /* Back pointer */ unsigned int comefrom; @@ -260,8 +260,8 @@ extern unsigned int arpt_do_table(struct sk_buff *skb, struct compat_arpt_entry { struct arpt_arp arp; - __u16 target_offset; - __u16 next_offset; + u_int16_t target_offset; + u_int16_t next_offset; compat_uint_t comefrom; struct compat_xt_counters counters; unsigned char elems[0]; diff --git a/trunk/include/linux/netfilter_decnet.h b/trunk/include/linux/netfilter_decnet.h index 0b09732aacd5..6f425369ee29 100644 --- a/trunk/include/linux/netfilter_decnet.h +++ b/trunk/include/linux/netfilter_decnet.h @@ -11,9 +11,6 @@ /* only for userspace compatibility */ #ifndef __KERNEL__ - -#include /* for INT_MIN, INT_MAX */ - /* IP Cache bits. */ /* Src IP address. */ #define NFC_DN_SRC 0x0001 diff --git a/trunk/include/linux/netfilter_ipv4.h b/trunk/include/linux/netfilter_ipv4.h index fa0946c549d3..29c7727ff0e8 100644 --- a/trunk/include/linux/netfilter_ipv4.h +++ b/trunk/include/linux/netfilter_ipv4.h @@ -9,9 +9,6 @@ /* only for userspace compatibility */ #ifndef __KERNEL__ - -#include /* for INT_MIN, INT_MAX */ - /* IP Cache bits. */ /* Src IP address. */ #define NFC_IP_SRC 0x0001 diff --git a/trunk/include/linux/netfilter_ipv4/ip_tables.h b/trunk/include/linux/netfilter_ipv4/ip_tables.h index db79231914ce..64a5d95c58e8 100644 --- a/trunk/include/linux/netfilter_ipv4/ip_tables.h +++ b/trunk/include/linux/netfilter_ipv4/ip_tables.h @@ -81,12 +81,12 @@ struct ipt_ip { unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; /* Protocol, 0 = ANY */ - __u16 proto; + u_int16_t proto; /* Flags word */ - __u8 flags; + u_int8_t flags; /* Inverse flags */ - __u8 invflags; + u_int8_t invflags; }; /* Values for "flag" field in struct ipt_ip (general ip structure). */ @@ -114,9 +114,9 @@ struct ipt_entry { unsigned int nfcache; /* Size of ipt_entry + matches */ - __u16 target_offset; + u_int16_t target_offset; /* Size of ipt_entry + matches + target */ - __u16 next_offset; + u_int16_t next_offset; /* Back pointer */ unsigned int comefrom; @@ -149,9 +149,9 @@ struct ipt_entry { /* ICMP matching stuff */ struct ipt_icmp { - __u8 type; /* type to match */ - __u8 code[2]; /* range of code */ - __u8 invflags; /* Inverse flags */ + u_int8_t type; /* type to match */ + u_int8_t code[2]; /* range of code */ + u_int8_t invflags; /* Inverse flags */ }; /* Values for "inv" field for struct ipt_icmp. */ @@ -288,8 +288,8 @@ extern unsigned int ipt_do_table(struct sk_buff *skb, struct compat_ipt_entry { struct ipt_ip ip; compat_uint_t nfcache; - __u16 target_offset; - __u16 next_offset; + u_int16_t target_offset; + u_int16_t next_offset; compat_uint_t comefrom; struct compat_xt_counters counters; unsigned char elems[0]; diff --git a/trunk/include/linux/netfilter_ipv6.h b/trunk/include/linux/netfilter_ipv6.h index 57c025127f1d..1f7e300094cd 100644 --- a/trunk/include/linux/netfilter_ipv6.h +++ b/trunk/include/linux/netfilter_ipv6.h @@ -12,9 +12,6 @@ /* only for userspace compatibility */ #ifndef __KERNEL__ - -#include /* for INT_MIN, INT_MAX */ - /* IP Cache bits. */ /* Src IP address. */ #define NFC_IP6_SRC 0x0001 diff --git a/trunk/include/linux/netfilter_ipv6/ip6_tables.h b/trunk/include/linux/netfilter_ipv6/ip6_tables.h index f549adccc94c..c9784f7a9c1f 100644 --- a/trunk/include/linux/netfilter_ipv6/ip6_tables.h +++ b/trunk/include/linux/netfilter_ipv6/ip6_tables.h @@ -81,14 +81,14 @@ struct ip6t_ip6 { * MH do not match any packets. * - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol. */ - __u16 proto; + u_int16_t proto; /* TOS to match iff flags & IP6T_F_TOS */ - __u8 tos; + u_int8_t tos; /* Flags word */ - __u8 flags; + u_int8_t flags; /* Inverse flags */ - __u8 invflags; + u_int8_t invflags; }; /* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */ @@ -118,9 +118,9 @@ struct ip6t_entry { unsigned int nfcache; /* Size of ipt_entry + matches */ - __u16 target_offset; + u_int16_t target_offset; /* Size of ipt_entry + matches + target */ - __u16 next_offset; + u_int16_t next_offset; /* Back pointer */ unsigned int comefrom; @@ -186,9 +186,9 @@ struct ip6t_error { /* ICMP matching stuff */ struct ip6t_icmp { - __u8 type; /* type to match */ - __u8 code[2]; /* range of code */ - __u8 invflags; /* Inverse flags */ + u_int8_t type; /* type to match */ + u_int8_t code[2]; /* range of code */ + u_int8_t invflags; /* Inverse flags */ }; /* Values for "inv" field for struct ipt_icmp. */ @@ -298,8 +298,8 @@ extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, struct compat_ip6t_entry { struct ip6t_ip6 ipv6; compat_uint_t nfcache; - __u16 target_offset; - __u16 next_offset; + u_int16_t target_offset; + u_int16_t next_offset; compat_uint_t comefrom; struct compat_xt_counters counters; unsigned char elems[0]; diff --git a/trunk/include/linux/netlink.h b/trunk/include/linux/netlink.h index 8180cd9d73d5..180540a84d37 100644 --- a/trunk/include/linux/netlink.h +++ b/trunk/include/linux/netlink.h @@ -1,7 +1,7 @@ #ifndef __LINUX_NETLINK_H #define __LINUX_NETLINK_H -#include /* for __kernel_sa_family_t */ +#include /* for sa_family_t */ #include #define NETLINK_ROUTE 0 /* Routing/device hook */ diff --git a/trunk/include/linux/netrom.h b/trunk/include/linux/netrom.h index af7313cc9cb6..6939b32f66a0 100644 --- a/trunk/include/linux/netrom.h +++ b/trunk/include/linux/netrom.h @@ -7,8 +7,6 @@ #ifndef NETROM_KERNEL_H #define NETROM_KERNEL_H -#include - #define NETROM_MTU 236 #define NETROM_T1 1 diff --git a/trunk/include/linux/phonet.h b/trunk/include/linux/phonet.h index f53a4167c5f4..6fb13841db45 100644 --- a/trunk/include/linux/phonet.h +++ b/trunk/include/linux/phonet.h @@ -24,7 +24,6 @@ #define LINUX_PHONET_H #include -#include /* Automatic protocol selection */ #define PN_PROTO_TRANSPORT 0 @@ -97,11 +96,11 @@ struct phonetmsg { /* Phonet socket address structure */ struct sockaddr_pn { - __kernel_sa_family_t spn_family; + sa_family_t spn_family; __u8 spn_obj; __u8 spn_dev; __u8 spn_resource; - __u8 spn_zero[sizeof(struct sockaddr) - sizeof(__kernel_sa_family_t) - 3]; + __u8 spn_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - 3]; } __attribute__((packed)); /* Well known address */ diff --git a/trunk/include/linux/rose.h b/trunk/include/linux/rose.h index 1fcfe95893b8..c7b4b184c82e 100644 --- a/trunk/include/linux/rose.h +++ b/trunk/include/linux/rose.h @@ -7,9 +7,6 @@ #ifndef ROSE_KERNEL_H #define ROSE_KERNEL_H -#include -#include - #define ROSE_MTU 251 #define ROSE_MAX_DIGIS 6 @@ -47,7 +44,7 @@ typedef struct { } rose_address; struct sockaddr_rose { - __kernel_sa_family_t srose_family; + sa_family_t srose_family; rose_address srose_addr; ax25_address srose_call; int srose_ndigis; @@ -55,7 +52,7 @@ struct sockaddr_rose { }; struct full_sockaddr_rose { - __kernel_sa_family_t srose_family; + sa_family_t srose_family; rose_address srose_addr; ax25_address srose_call; unsigned int srose_ndigis; diff --git a/trunk/include/linux/tipc_config.h b/trunk/include/linux/tipc_config.h index 9730b0e51e46..0db239590b4d 100644 --- a/trunk/include/linux/tipc_config.h +++ b/trunk/include/linux/tipc_config.h @@ -41,10 +41,6 @@ #include #include -#ifndef __KERNEL__ -#include /* for ntohs etc. */ -#endif - /* * Configuration * diff --git a/trunk/include/linux/un.h b/trunk/include/linux/un.h index 3ed3e46c1b1f..45561c564b8e 100644 --- a/trunk/include/linux/un.h +++ b/trunk/include/linux/un.h @@ -1,12 +1,10 @@ #ifndef _LINUX_UN_H #define _LINUX_UN_H -#include - #define UNIX_PATH_MAX 108 struct sockaddr_un { - __kernel_sa_family_t sun_family; /* AF_UNIX */ + sa_family_t sun_family; /* AF_UNIX */ char sun_path[UNIX_PATH_MAX]; /* pathname */ }; diff --git a/trunk/include/linux/x25.h b/trunk/include/linux/x25.h index 810cce6737ea..6450a7f12074 100644 --- a/trunk/include/linux/x25.h +++ b/trunk/include/linux/x25.h @@ -12,7 +12,6 @@ #define X25_KERNEL_H #include -#include #define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0) #define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1) @@ -58,7 +57,7 @@ struct x25_address { * Linux X.25 Address structure, used for bind, and connect mostly. */ struct sockaddr_x25 { - __kernel_sa_family_t sx25_family; /* Must be AF_X25 */ + sa_family_t sx25_family; /* Must be AF_X25 */ struct x25_address sx25_addr; /* X.121 Address */ }; diff --git a/trunk/net/packet/af_packet.c b/trunk/net/packet/af_packet.c index 2ea3d63e1d4c..4371e3a67789 100644 --- a/trunk/net/packet/af_packet.c +++ b/trunk/net/packet/af_packet.c @@ -171,13 +171,13 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, #define V3_ALIGNMENT (8) -#define BLK_HDR_LEN (ALIGN(sizeof(struct tpacket_block_desc), V3_ALIGNMENT)) +#define BLK_HDR_LEN (ALIGN(sizeof(struct block_desc), V3_ALIGNMENT)) #define BLK_PLUS_PRIV(sz_of_priv) \ (BLK_HDR_LEN + ALIGN((sz_of_priv), V3_ALIGNMENT)) /* kbdq - kernel block descriptor queue */ -struct tpacket_kbdq_core { +struct kbdq_core { struct pgv *pkbdq; unsigned int feature_req_word; unsigned int hdrlen; @@ -230,7 +230,7 @@ struct packet_ring_buffer { unsigned int pg_vec_pages; unsigned int pg_vec_len; - struct tpacket_kbdq_core prb_bdqc; + struct kbdq_core prb_bdqc; atomic_t pending; }; @@ -249,25 +249,21 @@ static void *packet_previous_frame(struct packet_sock *po, struct packet_ring_buffer *rb, int status); static void packet_increment_head(struct packet_ring_buffer *buff); -static int prb_curr_blk_in_use(struct tpacket_kbdq_core *, - struct tpacket_block_desc *); -static void *prb_dispatch_next_block(struct tpacket_kbdq_core *, +static int prb_curr_blk_in_use(struct kbdq_core *, + struct block_desc *); +static void *prb_dispatch_next_block(struct kbdq_core *, struct packet_sock *); -static void prb_retire_current_block(struct tpacket_kbdq_core *, +static void prb_retire_current_block(struct kbdq_core *, struct packet_sock *, unsigned int status); -static int prb_queue_frozen(struct tpacket_kbdq_core *); -static void prb_open_block(struct tpacket_kbdq_core *, - struct tpacket_block_desc *); +static int prb_queue_frozen(struct kbdq_core *); +static void prb_open_block(struct kbdq_core *, struct block_desc *); static void prb_retire_rx_blk_timer_expired(unsigned long); -static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *); -static void prb_init_blk_timer(struct packet_sock *, - struct tpacket_kbdq_core *, - void (*func) (unsigned long)); -static void prb_fill_rxhash(struct tpacket_kbdq_core *, struct tpacket3_hdr *); -static void prb_clear_rxhash(struct tpacket_kbdq_core *, - struct tpacket3_hdr *); -static void prb_fill_vlan_info(struct tpacket_kbdq_core *, - struct tpacket3_hdr *); +static void _prb_refresh_rx_retire_blk_timer(struct kbdq_core *); +static void prb_init_blk_timer(struct packet_sock *, struct kbdq_core *, + void (*func) (unsigned long)); +static void prb_fill_rxhash(struct kbdq_core *, struct tpacket3_hdr *); +static void prb_clear_rxhash(struct kbdq_core *, struct tpacket3_hdr *); +static void prb_fill_vlan_info(struct kbdq_core *, struct tpacket3_hdr *); static void packet_flush_mclist(struct sock *sk); struct packet_fanout; @@ -326,11 +322,11 @@ struct packet_skb_cb { #define PACKET_SKB_CB(__skb) ((struct packet_skb_cb *)((__skb)->cb)) -#define GET_PBDQC_FROM_RB(x) ((struct tpacket_kbdq_core *)(&(x)->prb_bdqc)) +#define GET_PBDQC_FROM_RB(x) ((struct kbdq_core *)(&(x)->prb_bdqc)) #define GET_PBLOCK_DESC(x, bid) \ - ((struct tpacket_block_desc *)((x)->pkbdq[(bid)].buffer)) + ((struct block_desc *)((x)->pkbdq[(bid)].buffer)) #define GET_CURR_PBLOCK_DESC_FROM_CORE(x) \ - ((struct tpacket_block_desc *)((x)->pkbdq[(x)->kactive_blk_num].buffer)) + ((struct block_desc *)((x)->pkbdq[(x)->kactive_blk_num].buffer)) #define GET_NEXT_PRB_BLK_NUM(x) \ (((x)->kactive_blk_num < ((x)->knum_blocks-1)) ? \ ((x)->kactive_blk_num+1) : 0) @@ -484,7 +480,7 @@ static inline void *packet_current_frame(struct packet_sock *po, return packet_lookup_frame(po, rb, rb->head, status); } -static void prb_del_retire_blk_timer(struct tpacket_kbdq_core *pkc) +static void prb_del_retire_blk_timer(struct kbdq_core *pkc) { del_timer_sync(&pkc->retire_blk_timer); } @@ -493,7 +489,7 @@ static void prb_shutdown_retire_blk_timer(struct packet_sock *po, int tx_ring, struct sk_buff_head *rb_queue) { - struct tpacket_kbdq_core *pkc; + struct kbdq_core *pkc; pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; @@ -505,7 +501,7 @@ static void prb_shutdown_retire_blk_timer(struct packet_sock *po, } static void prb_init_blk_timer(struct packet_sock *po, - struct tpacket_kbdq_core *pkc, + struct kbdq_core *pkc, void (*func) (unsigned long)) { init_timer(&pkc->retire_blk_timer); @@ -516,7 +512,7 @@ static void prb_init_blk_timer(struct packet_sock *po, static void prb_setup_retire_blk_timer(struct packet_sock *po, int tx_ring) { - struct tpacket_kbdq_core *pkc; + struct kbdq_core *pkc; if (tx_ring) BUG(); @@ -572,7 +568,7 @@ static int prb_calc_retire_blk_tmo(struct packet_sock *po, return tmo; } -static void prb_init_ft_ops(struct tpacket_kbdq_core *p1, +static void prb_init_ft_ops(struct kbdq_core *p1, union tpacket_req_u *req_u) { p1->feature_req_word = req_u->req3.tp_feature_req_word; @@ -583,14 +579,14 @@ static void init_prb_bdqc(struct packet_sock *po, struct pgv *pg_vec, union tpacket_req_u *req_u, int tx_ring) { - struct tpacket_kbdq_core *p1 = &rb->prb_bdqc; - struct tpacket_block_desc *pbd; + struct kbdq_core *p1 = &rb->prb_bdqc; + struct block_desc *pbd; memset(p1, 0x0, sizeof(*p1)); p1->knxt_seq_num = 1; p1->pkbdq = pg_vec; - pbd = (struct tpacket_block_desc *)pg_vec[0].buffer; + pbd = (struct block_desc *)pg_vec[0].buffer; p1->pkblk_start = (char *)pg_vec[0].buffer; p1->kblk_size = req_u->req3.tp_block_size; p1->knum_blocks = req_u->req3.tp_block_nr; @@ -614,7 +610,7 @@ static void init_prb_bdqc(struct packet_sock *po, /* Do NOT update the last_blk_num first. * Assumes sk_buff_head lock is held. */ -static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *pkc) +static void _prb_refresh_rx_retire_blk_timer(struct kbdq_core *pkc) { mod_timer(&pkc->retire_blk_timer, jiffies + pkc->tov_in_jiffies); @@ -647,9 +643,9 @@ static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *pkc) static void prb_retire_rx_blk_timer_expired(unsigned long data) { struct packet_sock *po = (struct packet_sock *)data; - struct tpacket_kbdq_core *pkc = &po->rx_ring.prb_bdqc; + struct kbdq_core *pkc = &po->rx_ring.prb_bdqc; unsigned int frozen; - struct tpacket_block_desc *pbd; + struct block_desc *pbd; spin_lock(&po->sk.sk_receive_queue.lock); @@ -713,8 +709,8 @@ static void prb_retire_rx_blk_timer_expired(unsigned long data) spin_unlock(&po->sk.sk_receive_queue.lock); } -static inline void prb_flush_block(struct tpacket_kbdq_core *pkc1, - struct tpacket_block_desc *pbd1, __u32 status) +static inline void prb_flush_block(struct kbdq_core *pkc1, + struct block_desc *pbd1, __u32 status) { /* Flush everything minus the block header */ @@ -756,14 +752,13 @@ static inline void prb_flush_block(struct tpacket_kbdq_core *pkc1, * Note:We DONT refresh the timer on purpose. * Because almost always the next block will be opened. */ -static void prb_close_block(struct tpacket_kbdq_core *pkc1, - struct tpacket_block_desc *pbd1, +static void prb_close_block(struct kbdq_core *pkc1, struct block_desc *pbd1, struct packet_sock *po, unsigned int stat) { __u32 status = TP_STATUS_USER | stat; struct tpacket3_hdr *last_pkt; - struct tpacket_hdr_v1 *h1 = &pbd1->hdr.bh1; + struct hdr_v1 *h1 = &pbd1->hdr.bh1; if (po->stats.tp_drops) status |= TP_STATUS_LOSING; @@ -791,7 +786,7 @@ static void prb_close_block(struct tpacket_kbdq_core *pkc1, pkc1->kactive_blk_num = GET_NEXT_PRB_BLK_NUM(pkc1); } -static inline void prb_thaw_queue(struct tpacket_kbdq_core *pkc) +static inline void prb_thaw_queue(struct kbdq_core *pkc) { pkc->reset_pending_on_curr_blk = 0; } @@ -803,11 +798,10 @@ static inline void prb_thaw_queue(struct tpacket_kbdq_core *pkc) * 2) retire_blk_timer is refreshed. * */ -static void prb_open_block(struct tpacket_kbdq_core *pkc1, - struct tpacket_block_desc *pbd1) +static void prb_open_block(struct kbdq_core *pkc1, struct block_desc *pbd1) { struct timespec ts; - struct tpacket_hdr_v1 *h1 = &pbd1->hdr.bh1; + struct hdr_v1 *h1 = &pbd1->hdr.bh1; smp_rmb(); @@ -867,7 +861,7 @@ static void prb_open_block(struct tpacket_kbdq_core *pkc1, * case and __packet_lookup_frame_in_block will check if block-0 * is free and can now be re-used. */ -static inline void prb_freeze_queue(struct tpacket_kbdq_core *pkc, +static inline void prb_freeze_queue(struct kbdq_core *pkc, struct packet_sock *po) { pkc->reset_pending_on_curr_blk = 1; @@ -882,10 +876,10 @@ static inline void prb_freeze_queue(struct tpacket_kbdq_core *pkc, * Else, we will freeze the queue. * So, caller must check the return value. */ -static void *prb_dispatch_next_block(struct tpacket_kbdq_core *pkc, +static void *prb_dispatch_next_block(struct kbdq_core *pkc, struct packet_sock *po) { - struct tpacket_block_desc *pbd; + struct block_desc *pbd; smp_rmb(); @@ -907,10 +901,10 @@ static void *prb_dispatch_next_block(struct tpacket_kbdq_core *pkc, return (void *)pkc->nxt_offset; } -static void prb_retire_current_block(struct tpacket_kbdq_core *pkc, +static void prb_retire_current_block(struct kbdq_core *pkc, struct packet_sock *po, unsigned int status) { - struct tpacket_block_desc *pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc); + struct block_desc *pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc); /* retire/close the current block */ if (likely(TP_STATUS_KERNEL == BLOCK_STATUS(pbd))) { @@ -938,36 +932,36 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc, BUG(); } -static inline int prb_curr_blk_in_use(struct tpacket_kbdq_core *pkc, - struct tpacket_block_desc *pbd) +static inline int prb_curr_blk_in_use(struct kbdq_core *pkc, + struct block_desc *pbd) { return TP_STATUS_USER & BLOCK_STATUS(pbd); } -static inline int prb_queue_frozen(struct tpacket_kbdq_core *pkc) +static inline int prb_queue_frozen(struct kbdq_core *pkc) { return pkc->reset_pending_on_curr_blk; } static inline void prb_clear_blk_fill_status(struct packet_ring_buffer *rb) { - struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(rb); + struct kbdq_core *pkc = GET_PBDQC_FROM_RB(rb); atomic_dec(&pkc->blk_fill_in_prog); } -static inline void prb_fill_rxhash(struct tpacket_kbdq_core *pkc, +static inline void prb_fill_rxhash(struct kbdq_core *pkc, struct tpacket3_hdr *ppd) { ppd->hv1.tp_rxhash = skb_get_rxhash(pkc->skb); } -static inline void prb_clear_rxhash(struct tpacket_kbdq_core *pkc, +static inline void prb_clear_rxhash(struct kbdq_core *pkc, struct tpacket3_hdr *ppd) { ppd->hv1.tp_rxhash = 0; } -static inline void prb_fill_vlan_info(struct tpacket_kbdq_core *pkc, +static inline void prb_fill_vlan_info(struct kbdq_core *pkc, struct tpacket3_hdr *ppd) { if (vlan_tx_tag_present(pkc->skb)) { @@ -978,7 +972,7 @@ static inline void prb_fill_vlan_info(struct tpacket_kbdq_core *pkc, } } -static void prb_run_all_ft_ops(struct tpacket_kbdq_core *pkc, +static void prb_run_all_ft_ops(struct kbdq_core *pkc, struct tpacket3_hdr *ppd) { prb_fill_vlan_info(pkc, ppd); @@ -989,9 +983,8 @@ static void prb_run_all_ft_ops(struct tpacket_kbdq_core *pkc, prb_clear_rxhash(pkc, ppd); } -static inline void prb_fill_curr_block(char *curr, - struct tpacket_kbdq_core *pkc, - struct tpacket_block_desc *pbd, +static inline void prb_fill_curr_block(char *curr, struct kbdq_core *pkc, + struct block_desc *pbd, unsigned int len) { struct tpacket3_hdr *ppd; @@ -1013,8 +1006,8 @@ static void *__packet_lookup_frame_in_block(struct packet_sock *po, unsigned int len ) { - struct tpacket_kbdq_core *pkc; - struct tpacket_block_desc *pbd; + struct kbdq_core *pkc; + struct block_desc *pbd; char *curr, *end; pkc = GET_PBDQC_FROM_RB(((struct packet_ring_buffer *)&po->rx_ring)); @@ -1094,8 +1087,8 @@ static inline void *prb_lookup_block(struct packet_sock *po, unsigned int previous, int status) { - struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(rb); - struct tpacket_block_desc *pbd = GET_PBLOCK_DESC(pkc, previous); + struct kbdq_core *pkc = GET_PBDQC_FROM_RB(rb); + struct block_desc *pbd = GET_PBLOCK_DESC(pkc, previous); if (status != BLOCK_STATUS(pbd)) return NULL; diff --git a/trunk/net/sched/sch_sfb.c b/trunk/net/sched/sch_sfb.c index e83c272c0325..0a833d0c1f61 100644 --- a/trunk/net/sched/sch_sfb.c +++ b/trunk/net/sched/sch_sfb.c @@ -287,12 +287,6 @@ static int sfb_enqueue(struct sk_buff *skb, struct Qdisc *sch) u32 r, slot, salt, sfbhash; int ret = NET_XMIT_SUCCESS | __NET_XMIT_BYPASS; - if (unlikely(sch->q.qlen >= q->limit)) { - sch->qstats.overlimits++; - q->stats.queuedrop++; - goto drop; - } - if (q->rehash_interval > 0) { unsigned long limit = q->rehash_time + q->rehash_interval; @@ -338,9 +332,12 @@ static int sfb_enqueue(struct sk_buff *skb, struct Qdisc *sch) slot ^= 1; sfb_skb_cb(skb)->hashes[slot] = 0; - if (unlikely(minqlen >= q->max)) { + if (unlikely(minqlen >= q->max || sch->q.qlen >= q->limit)) { sch->qstats.overlimits++; - q->stats.bucketdrop++; + if (minqlen >= q->max) + q->stats.bucketdrop++; + else + q->stats.queuedrop++; goto drop; }