PERFORCE change 178044 for review
Ilya Bakulin
kibab at FreeBSD.org
Mon May 10 16:20:28 UTC 2010
http://p4web.freebsd.org/@@178044?ac=10
Change 178044 by kibab at kibab_kibab-nb on 2010/05/10 16:20:20
Merge latest changes from -CURRENT.
Affected files ...
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/amd64/amd64/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/arm/arm/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/bce/if_bce.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/e1000/e1000_phy.c#1 branch
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/fxp/if_fxp.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/fxp/if_fxpreg.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/fxp/if_fxpvar.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/iwn/if_iwn.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/mxge/if_mxge.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/re/if_re.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/usb/wlan/if_rum.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/devfs/devfs_devs.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/devfs/devfs_int.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/msdosfs/msdosfs_vnops.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/nfs/nfs_commonkrpc.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/nfs/nfskpiport.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/nfs/nfsport.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/nfsclient/nfs_clbio.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/nwfs/nwfs_io.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/procfs/procfs_ctl.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/smbfs/smbfs_io.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/tmpfs/tmpfs_vnops.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/geom/vinum/geom_vinum_var.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/i386/i386/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/i386/xen/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ia64/ia64/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/kern_conf.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/kern_exec.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/subr_uio.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/sys_pipe.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/uipc_cow.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/uipc_syscalls.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/vfs_bio.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/kern/vfs_vnops.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/mips/mips/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/net/bpf_zerocopy.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/netgraph/ng_ksocket.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/netinet6/in6_proto.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/netinet6/ip6_input.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/netinet6/ip6_output.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/netinet6/udp6_usrreq.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/nfsclient/nfs_bio.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/powerpc/aim/mmu_oea.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/powerpc/aim/mmu_oea64.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/powerpc/booke/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sparc64/sparc64/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sun4v/sun4v/pmap.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sys/conf.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sys/mbuf.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sys/param.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sys/vmmeter.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/sys/vnode.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ffs/ffs_snapshot.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ffs/ffs_softdep.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ffs/ffs_vnops.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ufs/quota.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ufs/ufs_quota.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ufs/ufs_vfsops.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/ufs/ufs/ufsmount.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/device_pager.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/sg_pager.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/swap_pager.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_contig.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_fault.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_glue.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_object.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_page.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_page.h#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vm_pageout.c#2 integrate
.. //depot/projects/soc2010/kibab_sysctlreg/src_sys/vm/vnode_pager.c#2 integrate
Differences ...
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/amd64/amd64/pmap.c#2 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.694 2010/04/30 00:46:43 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.696 2010/05/08 20:34:01 alc Exp $");
/*
* Manages physical address maps.
@@ -2796,7 +2796,7 @@
KASSERT((m->flags & PG_FICTITIOUS) == 0,
("pmap_remove_all: page %p is fictitious", m));
- mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ vm_page_lock_queues();
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
while ((pv = TAILQ_FIRST(&pvh->pv_list)) != NULL) {
pmap = PV_PMAP(pv);
@@ -2834,6 +2834,7 @@
PMAP_UNLOCK(pmap);
}
vm_page_flag_clear(m, PG_WRITEABLE);
+ vm_page_unlock_queues();
}
/*
@@ -3414,8 +3415,10 @@
pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot)
{
+ vm_page_lock_queues();
PMAP_LOCK(pmap);
- (void) pmap_enter_quick_locked(pmap, va, m, prot, NULL);
+ (void)pmap_enter_quick_locked(pmap, va, m, prot, NULL);
+ vm_page_unlock_queues();
PMAP_UNLOCK(pmap);
}
@@ -3926,8 +3929,11 @@
count = 0;
if ((m->flags & PG_FICTITIOUS) != 0)
return (count);
+ vm_page_lock_queues();
count = pmap_pvh_wired_mappings(&m->md, count);
- return (pmap_pvh_wired_mappings(pa_to_pvh(VM_PAGE_TO_PHYS(m)), count));
+ count = pmap_pvh_wired_mappings(pa_to_pvh(VM_PAGE_TO_PHYS(m)), count);
+ vm_page_unlock_queues();
+ return (count);
}
/*
@@ -3961,16 +3967,15 @@
boolean_t
pmap_page_is_mapped(vm_page_t m)
{
- struct md_page *pvh;
+ boolean_t rv;
if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0)
return (FALSE);
- mtx_assert(&vm_page_queue_mtx, MA_OWNED);
- if (TAILQ_EMPTY(&m->md.pv_list)) {
- pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
- return (!TAILQ_EMPTY(&pvh->pv_list));
- } else
- return (TRUE);
+ vm_page_lock_queues();
+ rv = !TAILQ_EMPTY(&m->md.pv_list) ||
+ !TAILQ_EMPTY(&pa_to_pvh(VM_PAGE_TO_PHYS(m))->pv_list);
+ vm_page_unlock_queues();
+ return (rv);
}
/*
@@ -4238,7 +4243,7 @@
if ((m->flags & PG_FICTITIOUS) != 0 ||
(m->flags & PG_WRITEABLE) == 0)
return;
- mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ vm_page_lock_queues();
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, next_pv) {
pmap = PV_PMAP(pv);
@@ -4269,6 +4274,7 @@
PMAP_UNLOCK(pmap);
}
vm_page_flag_clear(m, PG_WRITEABLE);
+ vm_page_unlock_queues();
}
/*
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/arm/arm/pmap.c#2 (text+ko) ====
@@ -140,7 +140,7 @@
#include "opt_vm.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.121 2010/04/30 00:46:43 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.122 2010/05/08 20:34:01 alc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -3118,18 +3118,11 @@
pmap_t curpm;
int flags = 0;
-#if defined(PMAP_DEBUG)
- /*
- * XXX This makes pmap_remove_all() illegal for non-managed pages!
- */
- if (m->flags & PG_FICTITIOUS) {
- panic("pmap_remove_all: illegal for unmanaged page, va: 0x%x", VM_PAGE_TO_PHYS(m));
- }
-#endif
-
+ KASSERT((m->flags & PG_FICTITIOUS) == 0,
+ ("pmap_remove_all: page %p is fictitious", m));
if (TAILQ_EMPTY(&m->md.pv_list))
return;
- mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ vm_page_lock_queues();
pmap_remove_write(m);
curpm = vmspace_pmap(curproc->p_vmspace);
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
@@ -3180,6 +3173,7 @@
pmap_tlb_flushD(curpm);
}
vm_page_flag_clear(m, PG_WRITEABLE);
+ vm_page_unlock_queues();
}
@@ -3615,9 +3609,11 @@
pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot)
{
+ vm_page_lock_queues();
PMAP_LOCK(pmap);
pmap_enter_locked(pmap, va, m, prot & (VM_PROT_READ | VM_PROT_EXECUTE),
FALSE, M_NOWAIT);
+ vm_page_unlock_queues();
PMAP_UNLOCK(pmap);
}
@@ -4450,10 +4446,11 @@
count = 0;
if ((m->flags & PG_FICTITIOUS) != 0)
return (count);
- mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ vm_page_lock_queues();
TAILQ_FOREACH(pv, &m->md.pv_list, pv_list)
if ((pv->pv_flags & PVF_WIRED) != 0)
count++;
+ vm_page_unlock_queues();
return (count);
}
@@ -4530,8 +4527,11 @@
pmap_remove_write(vm_page_t m)
{
- if (m->flags & PG_WRITEABLE)
+ if (m->flags & PG_WRITEABLE) {
+ vm_page_lock_queues();
pmap_clearbit(m, PVF_WRITE);
+ vm_page_unlock_queues();
+ }
}
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 (text+ko) ====
@@ -3977,6 +3977,9 @@
} */ *ap;
{
+ if (vn_rlimit_fsize(ap->a_vp, ap->a_uio, ap->a_uio->uio_td))
+ return (EFBIG);
+
return (zfs_write(ap->a_vp, ap->a_uio, ap->a_ioflag, ap->a_cred, NULL));
}
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/bce/if_bce.c#2 (text) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.69 2010/04/30 02:35:46 davidch Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.70 2010/05/07 22:09:17 fabient Exp $");
/*
* The following controllers are supported by this driver:
@@ -5059,11 +5059,8 @@
#ifdef BCE_JUMBO_HDRSPLIT
MGETHDR(m_new, M_DONTWAIT, MT_DATA);
#else
- if (sc->rx_bd_mbuf_alloc_size <= MCLBYTES)
- m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
- else
- m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR,
- sc->rx_bd_mbuf_alloc_size);
+ m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR,
+ sc->rx_bd_mbuf_alloc_size);
#endif
if (m_new == NULL) {
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/fxp/if_fxp.c#2 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.299 2010/04/19 22:10:40 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.302 2010/05/09 22:16:15 yongari Exp $");
/*
* Intel EtherExpress Pro/100B PCI Fast Ethernet driver
@@ -106,9 +106,8 @@
/*
* The configuration byte map has several undefined fields which
- * must be one or must be zero. Set up a template for these bits
- * only, (assuming a 82557 chip) leaving the actual configuration
- * to fxp_init.
+ * must be one or must be zero. Set up a template for these bits.
+ * The actual configuration is performed in fxp_init.
*
* See struct fxp_cb_config for the bit definitions.
*/
@@ -137,7 +136,17 @@
0xf0, /* 18 */
0x0, /* 19 */
0x3f, /* 20 */
- 0x5 /* 21 */
+ 0x5, /* 21 */
+ 0x0, /* 22 */
+ 0x0, /* 23 */
+ 0x0, /* 24 */
+ 0x0, /* 25 */
+ 0x0, /* 26 */
+ 0x0, /* 27 */
+ 0x0, /* 28 */
+ 0x0, /* 29 */
+ 0x0, /* 30 */
+ 0x0 /* 31 */
};
/*
@@ -253,6 +262,8 @@
static int fxp_miibus_writereg(device_t dev, int phy, int reg,
int value);
static void fxp_load_ucode(struct fxp_softc *sc);
+static void fxp_update_stats(struct fxp_softc *sc);
+static void fxp_sysctl_node(struct fxp_softc *sc);
static int sysctl_int_range(SYSCTL_HANDLER_ARGS,
int low, int high);
static int sysctl_hw_fxp_bundle_max(SYSCTL_HANDLER_ARGS);
@@ -528,40 +539,8 @@
&& (data & FXP_PHY_SERIAL_ONLY))
sc->flags |= FXP_FLAG_SERIAL_MEDIA;
- SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
- SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
- OID_AUTO, "int_delay", CTLTYPE_INT | CTLFLAG_RW,
- &sc->tunable_int_delay, 0, sysctl_hw_fxp_int_delay, "I",
- "FXP driver receive interrupt microcode bundling delay");
- SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
- SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
- OID_AUTO, "bundle_max", CTLTYPE_INT | CTLFLAG_RW,
- &sc->tunable_bundle_max, 0, sysctl_hw_fxp_bundle_max, "I",
- "FXP driver receive interrupt microcode bundle size limit");
- SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
- SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
- OID_AUTO, "rnr", CTLFLAG_RD, &sc->rnr, 0,
- "FXP RNR events");
- SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
- SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
- OID_AUTO, "noflow", CTLFLAG_RW, &sc->tunable_noflow, 0,
- "FXP flow control disabled");
-
+ fxp_sysctl_node(sc);
/*
- * Pull in device tunables.
- */
- sc->tunable_int_delay = TUNABLE_INT_DELAY;
- sc->tunable_bundle_max = TUNABLE_BUNDLE_MAX;
- sc->tunable_noflow = 1;
- (void) resource_int_value(device_get_name(dev), device_get_unit(dev),
- "int_delay", &sc->tunable_int_delay);
- (void) resource_int_value(device_get_name(dev), device_get_unit(dev),
- "bundle_max", &sc->tunable_bundle_max);
- (void) resource_int_value(device_get_name(dev), device_get_unit(dev),
- "noflow", &sc->tunable_noflow);
- sc->rnr = 0;
-
- /*
* Enable workarounds for certain chip revision deficiencies.
*
* Systems based on the ICH2/ICH2-M chip from Intel, and possibly
@@ -2011,6 +1990,81 @@
return (rx_npkts);
}
+static void
+fxp_update_stats(struct fxp_softc *sc)
+{
+ struct ifnet *ifp = sc->ifp;
+ struct fxp_stats *sp = sc->fxp_stats;
+ struct fxp_hwstats *hsp;
+ uint32_t *status;
+
+ FXP_LOCK_ASSERT(sc, MA_OWNED);
+
+ bus_dmamap_sync(sc->fxp_stag, sc->fxp_smap,
+ BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
+ /* Update statistical counters. */
+ if (sc->revision >= FXP_REV_82559_A0)
+ status = &sp->completion_status;
+ else if (sc->revision >= FXP_REV_82558_A4)
+ status = (uint32_t *)&sp->tx_tco;
+ else
+ status = &sp->tx_pause;
+ if (*status == htole32(FXP_STATS_DR_COMPLETE)) {
+ hsp = &sc->fxp_hwstats;
+ hsp->tx_good += le32toh(sp->tx_good);
+ hsp->tx_maxcols += le32toh(sp->tx_maxcols);
+ hsp->tx_latecols += le32toh(sp->tx_latecols);
+ hsp->tx_underruns += le32toh(sp->tx_underruns);
+ hsp->tx_lostcrs += le32toh(sp->tx_lostcrs);
+ hsp->tx_deffered += le32toh(sp->tx_deffered);
+ hsp->tx_single_collisions += le32toh(sp->tx_single_collisions);
+ hsp->tx_multiple_collisions +=
+ le32toh(sp->tx_multiple_collisions);
+ hsp->tx_total_collisions += le32toh(sp->tx_total_collisions);
+ hsp->rx_good += le32toh(sp->rx_good);
+ hsp->rx_crc_errors += le32toh(sp->rx_crc_errors);
+ hsp->rx_alignment_errors += le32toh(sp->rx_alignment_errors);
+ hsp->rx_rnr_errors += le32toh(sp->rx_rnr_errors);
+ hsp->rx_overrun_errors += le32toh(sp->rx_overrun_errors);
+ hsp->rx_cdt_errors += le32toh(sp->rx_cdt_errors);
+ hsp->rx_shortframes += le32toh(sp->rx_shortframes);
+ hsp->tx_pause += le32toh(sp->tx_pause);
+ hsp->rx_pause += le32toh(sp->rx_pause);
+ hsp->rx_controls += le32toh(sp->rx_controls);
+ hsp->tx_tco += le16toh(sp->tx_tco);
+ hsp->rx_tco += le16toh(sp->rx_tco);
+
+ ifp->if_opackets += le32toh(sp->tx_good);
+ ifp->if_collisions += le32toh(sp->tx_total_collisions);
+ if (sp->rx_good) {
+ ifp->if_ipackets += le32toh(sp->rx_good);
+ sc->rx_idle_secs = 0;
+ } else if (sc->flags & FXP_FLAG_RXBUG) {
+ /*
+ * Receiver's been idle for another second.
+ */
+ sc->rx_idle_secs++;
+ }
+ ifp->if_ierrors +=
+ le32toh(sp->rx_crc_errors) +
+ le32toh(sp->rx_alignment_errors) +
+ le32toh(sp->rx_rnr_errors) +
+ le32toh(sp->rx_overrun_errors);
+ /*
+ * If any transmit underruns occured, bump up the transmit
+ * threshold by another 512 bytes (64 * 8).
+ */
+ if (sp->tx_underruns) {
+ ifp->if_oerrors += le32toh(sp->tx_underruns);
+ if (tx_threshold < 192)
+ tx_threshold += 64;
+ }
+ *status = 0;
+ bus_dmamap_sync(sc->fxp_stag, sc->fxp_smap,
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ }
+}
+
/*
* Update packet in/out/collision statistics. The i82557 doesn't
* allow you to access these counters without doing a fairly
@@ -2027,35 +2081,11 @@
{
struct fxp_softc *sc = xsc;
struct ifnet *ifp = sc->ifp;
- struct fxp_stats *sp = sc->fxp_stats;
FXP_LOCK_ASSERT(sc, MA_OWNED);
- bus_dmamap_sync(sc->fxp_stag, sc->fxp_smap, BUS_DMASYNC_POSTREAD);
- ifp->if_opackets += le32toh(sp->tx_good);
- ifp->if_collisions += le32toh(sp->tx_total_collisions);
- if (sp->rx_good) {
- ifp->if_ipackets += le32toh(sp->rx_good);
- sc->rx_idle_secs = 0;
- } else if (sc->flags & FXP_FLAG_RXBUG) {
- /*
- * Receiver's been idle for another second.
- */
- sc->rx_idle_secs++;
- }
- ifp->if_ierrors +=
- le32toh(sp->rx_crc_errors) +
- le32toh(sp->rx_alignment_errors) +
- le32toh(sp->rx_rnr_errors) +
- le32toh(sp->rx_overrun_errors);
- /*
- * If any transmit underruns occured, bump up the transmit
- * threshold by another 512 bytes (64 * 8).
- */
- if (sp->tx_underruns) {
- ifp->if_oerrors += le32toh(sp->tx_underruns);
- if (tx_threshold < 192)
- tx_threshold += 64;
- }
+
+ /* Update statistical counters. */
+ fxp_update_stats(sc);
/*
* Release any xmit buffers that have completed DMA. This isn't
@@ -2090,24 +2120,7 @@
/*
* Start another stats dump.
*/
- bus_dmamap_sync(sc->fxp_stag, sc->fxp_smap,
- BUS_DMASYNC_PREREAD);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_DUMPRESET);
- } else {
- /*
- * A previous command is still waiting to be accepted.
- * Just zero our copy of the stats and wait for the
- * next timer event to update them.
- */
- sp->tx_good = 0;
- sp->tx_underruns = 0;
- sp->tx_total_collisions = 0;
-
- sp->rx_good = 0;
- sp->rx_crc_errors = 0;
- sp->rx_alignment_errors = 0;
- sp->rx_rnr_errors = 0;
- sp->rx_overrun_errors = 0;
}
if (sc->miibus != NULL)
mii_tick(device_get_softc(sc->miibus));
@@ -2151,6 +2164,8 @@
/* Disable interrupts. */
CSR_WRITE_1(sc, FXP_CSR_SCB_INTRCNTL, FXP_SCB_INTR_DISABLE);
+ fxp_update_stats(sc);
+
/*
* Release any xmit buffers.
*/
@@ -2253,7 +2268,9 @@
* Initialize base of dump-stats buffer.
*/
fxp_scb_wait(sc);
- bus_dmamap_sync(sc->fxp_stag, sc->fxp_smap, BUS_DMASYNC_PREREAD);
+ bzero(sc->fxp_stats, sizeof(struct fxp_stats));
+ bus_dmamap_sync(sc->fxp_stag, sc->fxp_smap,
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->stats_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_DUMP_ADR);
@@ -2345,7 +2362,7 @@
cbp->force_fdx = 0; /* (don't) force full duplex */
cbp->fdx_pin_en = 1; /* (enable) FDX# pin */
cbp->multi_ia = 0; /* (don't) accept multiple IAs */
- cbp->mc_all = ifp->if_flags & IFF_ALLMULTI ? 1 : 0;
+ cbp->mc_all = ifp->if_flags & IFF_ALLMULTI ? 1 : prm;
cbp->gamla_rx = sc->flags & FXP_FLAG_EXT_RFA ? 1 : 0;
cbp->vlan_strip_en = ((sc->flags & FXP_FLAG_EXT_RFA) != 0 &&
(ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) ? 1 : 0;
@@ -2374,6 +2391,22 @@
cbp->pri_fc_loc = 1; /* FC pri location (byte31) */
}
+ /* Enable 82558 and 82559 extended statistics functionality. */
+ if (sc->revision >= FXP_REV_82558_A4) {
+ if (sc->revision >= FXP_REV_82559_A0) {
+ /*
+ * Extend configuration table size to 32
+ * to include TCO configuration.
+ */
+ cbp->byte_count = 32;
+ cbp->ext_stats_dis = 1;
+ /* Enable TCO stats. */
+ cbp->tno_int_or_tco_en = 1;
+ cbp->gamla_rx = 1;
+ } else
+ cbp->ext_stats_dis = 0;
+ }
+
/*
* Start the config command/DMA.
*/
@@ -2995,6 +3028,113 @@
sc->flags |= FXP_FLAG_UCODE;
}
+#define FXP_SYSCTL_STAT_ADD(c, h, n, p, d) \
+ SYSCTL_ADD_UINT(c, h, OID_AUTO, n, CTLFLAG_RD, p, 0, d)
+
+static void
+fxp_sysctl_node(struct fxp_softc *sc)
+{
+ struct sysctl_ctx_list *ctx;
+ struct sysctl_oid_list *child, *parent;
+ struct sysctl_oid *tree;
+ struct fxp_hwstats *hsp;
+
+ ctx = device_get_sysctl_ctx(sc->dev);
+ child = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev));
+
+ SYSCTL_ADD_PROC(ctx, child,
+ OID_AUTO, "int_delay", CTLTYPE_INT | CTLFLAG_RW,
+ &sc->tunable_int_delay, 0, sysctl_hw_fxp_int_delay, "I",
+ "FXP driver receive interrupt microcode bundling delay");
+ SYSCTL_ADD_PROC(ctx, child,
+ OID_AUTO, "bundle_max", CTLTYPE_INT | CTLFLAG_RW,
+ &sc->tunable_bundle_max, 0, sysctl_hw_fxp_bundle_max, "I",
+ "FXP driver receive interrupt microcode bundle size limit");
+ SYSCTL_ADD_INT(ctx, child,OID_AUTO, "rnr", CTLFLAG_RD, &sc->rnr, 0,
+ "FXP RNR events");
+ SYSCTL_ADD_INT(ctx, child,
+ OID_AUTO, "noflow", CTLFLAG_RW, &sc->tunable_noflow, 0,
+ "FXP flow control disabled");
+
+ /*
+ * Pull in device tunables.
+ */
+ sc->tunable_int_delay = TUNABLE_INT_DELAY;
+ sc->tunable_bundle_max = TUNABLE_BUNDLE_MAX;
+ sc->tunable_noflow = 1;
+ (void) resource_int_value(device_get_name(sc->dev),
+ device_get_unit(sc->dev), "int_delay", &sc->tunable_int_delay);
+ (void) resource_int_value(device_get_name(sc->dev),
+ device_get_unit(sc->dev), "bundle_max", &sc->tunable_bundle_max);
+ (void) resource_int_value(device_get_name(sc->dev),
+ device_get_unit(sc->dev), "noflow", &sc->tunable_noflow);
+ sc->rnr = 0;
+
+ hsp = &sc->fxp_hwstats;
+ tree = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "stats", CTLFLAG_RD,
+ NULL, "FXP statistics");
+ parent = SYSCTL_CHILDREN(tree);
+
+ /* Rx MAC statistics. */
+ tree = SYSCTL_ADD_NODE(ctx, parent, OID_AUTO, "rx", CTLFLAG_RD,
+ NULL, "Rx MAC statistics");
+ child = SYSCTL_CHILDREN(tree);
+ FXP_SYSCTL_STAT_ADD(ctx, child, "good_frames",
+ &hsp->rx_good, "Good frames");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "crc_errors",
+ &hsp->rx_crc_errors, "CRC errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "alignment_errors",
+ &hsp->rx_alignment_errors, "Alignment errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "rnr_errors",
+ &hsp->rx_rnr_errors, "RNR errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "overrun_errors",
+ &hsp->rx_overrun_errors, "Overrun errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "cdt_errors",
+ &hsp->rx_cdt_errors, "Collision detect errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "shortframes",
+ &hsp->rx_shortframes, "Short frame errors");
+ if (sc->revision >= FXP_REV_82558_A4) {
+ FXP_SYSCTL_STAT_ADD(ctx, child, "pause",
+ &hsp->rx_pause, "Pause frames");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "controls",
+ &hsp->rx_controls, "Unsupported control frames");
+ }
+ if (sc->revision >= FXP_REV_82559_A0)
+ FXP_SYSCTL_STAT_ADD(ctx, child, "tco",
+ &hsp->rx_tco, "TCO frames");
+
+ /* Tx MAC statistics. */
+ tree = SYSCTL_ADD_NODE(ctx, parent, OID_AUTO, "tx", CTLFLAG_RD,
+ NULL, "Tx MAC statistics");
+ child = SYSCTL_CHILDREN(tree);
+ FXP_SYSCTL_STAT_ADD(ctx, child, "good_frames",
+ &hsp->tx_good, "Good frames");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "maxcols",
+ &hsp->tx_maxcols, "Maximum collisions errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "latecols",
+ &hsp->tx_latecols, "Late collisions errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "underruns",
+ &hsp->tx_underruns, "Underrun errors");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "lostcrs",
+ &hsp->tx_lostcrs, "Lost carrier sense");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "deffered",
+ &hsp->tx_deffered, "Deferred");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "single_collisions",
+ &hsp->tx_single_collisions, "Single collisions");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "multiple_collisions",
+ &hsp->tx_multiple_collisions, "Multiple collisions");
+ FXP_SYSCTL_STAT_ADD(ctx, child, "total_collisions",
+ &hsp->tx_total_collisions, "Total collisions");
+ if (sc->revision >= FXP_REV_82558_A4)
+ FXP_SYSCTL_STAT_ADD(ctx, child, "pause",
+ &hsp->tx_pause, "Pause frames");
+ if (sc->revision >= FXP_REV_82559_A0)
+ FXP_SYSCTL_STAT_ADD(ctx, child, "tco",
+ &hsp->tx_tco, "TCO frames");
+}
+
+#undef FXP_SYSCTL_STAT_ADD
+
static int
sysctl_int_range(SYSCTL_HANDLER_ARGS, int low, int high)
{
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/fxp/if_fxpreg.h#2 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/fxp/if_fxpreg.h,v 1.43 2008/12/02 02:30:12 yongari Exp $
+ * $FreeBSD: src/sys/dev/fxp/if_fxpreg.h,v 1.44 2010/05/09 22:16:15 yongari Exp $
*/
#define FXP_VENDORID_INTEL 0x8086
@@ -418,7 +418,15 @@
uint32_t rx_overrun_errors;
uint32_t rx_cdt_errors;
uint32_t rx_shortframes;
+ uint32_t tx_pause;
+ uint32_t rx_pause;
+ uint32_t rx_controls;
+ uint16_t tx_tco;
+ uint16_t rx_tco;
uint32_t completion_status;
+ uint32_t reserved0;
+ uint32_t reserved1;
+ uint32_t reserved2;
};
#define FXP_STATS_DUMP_COMPLETE 0xa005
#define FXP_STATS_DR_COMPLETE 0xa007
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/fxp/if_fxpvar.h#2 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/fxp/if_fxpvar.h,v 1.49 2009/06/21 07:34:12 yongari Exp $
+ * $FreeBSD: src/sys/dev/fxp/if_fxpvar.h,v 1.50 2010/05/09 22:16:15 yongari Exp $
*/
/*
@@ -149,6 +149,30 @@
char *name;
};
+struct fxp_hwstats {
+ uint32_t tx_good;
+ uint32_t tx_maxcols;
+ uint32_t tx_latecols;
+ uint32_t tx_underruns;
+ uint32_t tx_lostcrs;
+ uint32_t tx_deffered;
+ uint32_t tx_single_collisions;
+ uint32_t tx_multiple_collisions;
+ uint32_t tx_total_collisions;
+ uint32_t tx_pause;
+ uint32_t tx_tco;
+ uint32_t rx_good;
+ uint32_t rx_crc_errors;
+ uint32_t rx_alignment_errors;
+ uint32_t rx_rnr_errors;
+ uint32_t rx_overrun_errors;
+ uint32_t rx_cdt_errors;
+ uint32_t rx_shortframes;
+ uint32_t rx_pause;
+ uint32_t rx_controls;
+ uint32_t rx_tco;
+};
+
/*
* NOTE: Elements are ordered for optimal cacheline behavior, and NOT
* for functional grouping.
@@ -175,6 +199,7 @@
int tx_queued; /* # of active TxCB's */
struct fxp_stats *fxp_stats; /* Pointer to interface stats */
uint32_t stats_addr; /* DMA address of the stats structure */
+ struct fxp_hwstats fxp_hwstats;
int rx_idle_secs; /* # of seconds RX has been idle */
struct callout stat_ch; /* stat callout */
int watchdog_timer; /* seconds until chip reset */
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/iwn/if_iwn.c#2 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/iwn/if_iwn.c,v 1.35 2010/05/03 07:32:50 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/iwn/if_iwn.c,v 1.36 2010/05/06 17:53:04 bschmidt Exp $");
#include <sys/param.h>
#include <sys/sockio.h>
@@ -4730,7 +4730,7 @@
chan->passive = htole16(78);
else
chan->passive = htole16(110);
- hdr->crc_threshold = htole16(1);
+ hdr->crc_threshold = 0xffff;
} else if (!(c->ic_flags & IEEE80211_CHAN_PASSIVE)) {
chan->rf_gain = 0x28;
chan->active = htole16(36);
@@ -4743,7 +4743,7 @@
chan->passive = htole16(88);
else
chan->passive = htole16(120);
- hdr->crc_threshold = htole16(1);
+ hdr->crc_threshold = 0xffff;
}
DPRINTF(sc, IWN_DEBUG_STATE,
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/mxge/if_mxge.c#2 (text+ko) ====
@@ -28,7 +28,7 @@
***************************************************************************/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.78 2010/04/15 14:26:52 gallatin Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.79 2010/05/07 22:09:17 fabient Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -2400,10 +2400,7 @@
mxge_rx_ring_t *rx = &ss->rx_big;
int cnt, err, i;
- if (rx->cl_size == MCLBYTES)
- m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
- else
- m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, rx->cl_size);
+ m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, rx->cl_size);
if (m == NULL) {
rx->alloc_fail++;
err = ENOBUFS;
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/re/if_re.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.168 2010/04/09 22:50:28 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.169 2010/05/07 23:05:27 yongari Exp $");
/*
* RealTek 8139C+/8169/8169S/8110S/8168/8111/8101E PCI NIC driver
@@ -1162,9 +1162,11 @@
msic = 0;
if (pci_find_extcap(dev, PCIY_EXPRESS, ®) == 0) {
sc->rl_flags |= RL_FLAG_PCIE;
- /* Set PCIe maximum read request size to 2048. */
- if (pci_get_max_read_req(dev) < 2048)
- pci_set_max_read_req(dev, 2048);
+ if (devid != RT_DEVICEID_8101E) {
+ /* Set PCIe maximum read request size to 2048. */
+ if (pci_get_max_read_req(dev) < 2048)
+ pci_set_max_read_req(dev, 2048);
+ }
msic = pci_msi_count(dev);
if (bootverbose)
device_printf(dev, "MSI count : %d\n", msic);
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/dev/usb/wlan/if_rum.c#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/usb/wlan/if_rum.c,v 1.29 2010/05/03 07:32:50 sobomax Exp $ */
+/* $FreeBSD: src/sys/dev/usb/wlan/if_rum.c,v 1.30 2010/05/08 11:56:00 emaste Exp $ */
/*-
* Copyright (c) 2005-2007 Damien Bergamini <damien.bergamini at free.fr>
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/wlan/if_rum.c,v 1.29 2010/05/03 07:32:50 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/wlan/if_rum.c,v 1.30 2010/05/08 11:56:00 emaste Exp $");
/*-
* Ralink Technology RT2501USB/RT2601USB chipset driver
@@ -197,6 +197,7 @@
static void rum_update_slot(struct ifnet *);
static void rum_set_bssid(struct rum_softc *, const uint8_t *);
static void rum_set_macaddr(struct rum_softc *, const uint8_t *);
+static void rum_update_mcast(struct ifnet *);
static void rum_update_promisc(struct ifnet *);
static void rum_setpromisc(struct rum_softc *);
static const char *rum_get_rf(int);
@@ -514,6 +515,7 @@
ic->ic_vap_create = rum_vap_create;
ic->ic_vap_delete = rum_vap_delete;
+ ic->ic_update_mcast = rum_update_mcast;
ieee80211_radiotap_attach(ic,
&sc->sc_txtap.wt_ihdr, sizeof(sc->sc_txtap),
@@ -1815,6 +1817,13 @@
RUM_UNLOCK(sc);
}
+static void
+rum_update_mcast(struct ifnet *ifp)
+{
+
+ /* XXX do nothing? */
+}
+
static const char *
rum_get_rf(int rev)
{
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/devfs/devfs_devs.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*
* From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vfsops.c 1.36
*
- * $FreeBSD: src/sys/fs/devfs/devfs_devs.c,v 1.60 2010/04/16 07:02:28 jh Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_devs.c,v 1.61 2010/05/06 19:22:50 kib Exp $
*/
#include <sys/param.h>
@@ -115,17 +115,21 @@
0, sizeof(struct cdev_priv), "sizeof(struct cdev_priv)");
struct cdev *
-devfs_alloc(void)
+devfs_alloc(int flags)
{
struct cdev_priv *cdp;
struct cdev *cdev;
struct timespec ts;
- cdp = malloc(sizeof *cdp, M_CDEVP, M_USE_RESERVE | M_ZERO | M_WAITOK);
+ cdp = malloc(sizeof *cdp, M_CDEVP, M_USE_RESERVE | M_ZERO |
+ ((flags & MAKEDEV_NOWAIT) ? M_NOWAIT : M_WAITOK));
+ if (cdp == NULL)
+ return (NULL);
cdp->cdp_dirents = &cdp->cdp_dirent0;
cdp->cdp_dirent0 = NULL;
cdp->cdp_maxdirent = 0;
+ cdp->cdp_inode = 0;
cdev = &cdp->cdp_c;
@@ -133,6 +137,7 @@
LIST_INIT(&cdev->si_children);
vfs_timestamp(&ts);
cdev->si_atime = cdev->si_mtime = cdev->si_ctime = ts;
+ cdev->si_cred = NULL;
return (cdev);
}
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/devfs/devfs_int.h#2 (text+ko) ====
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/fs/devfs/devfs_int.h,v 1.8 2010/04/16 07:02:28 jh Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_int.h,v 1.9 2010/05/06 19:22:50 kib Exp $
*/
/*
@@ -70,7 +70,7 @@
#define cdev2priv(c) member2struct(cdev_priv, cdp_c, c)
-struct cdev *devfs_alloc(void);
+struct cdev *devfs_alloc(int);
void devfs_free(struct cdev *);
void devfs_create(struct cdev *dev);
void devfs_destroy(struct cdev *dev);
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/msdosfs/msdosfs_vnops.c#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vnops.c,v 1.198 2010/05/05 16:44:25 trasz Exp $ */
+/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vnops.c,v 1.199 2010/05/06 18:43:19 trasz Exp $ */
/* $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg Exp $ */
/*-
@@ -652,7 +652,6 @@
struct buf *bp;
int ioflag = ap->a_ioflag;
struct uio *uio = ap->a_uio;
- struct thread *td = uio->uio_td;
struct vnode *vp = ap->a_vp;
struct vnode *thisvp;
struct denode *dep = VTODE(vp);
@@ -696,7 +695,7 @@
/*
* If they've exceeded their filesize limit, tell them about it.
*/
- if (vn_rlimit_fsize(vp, uio, td))
+ if (vn_rlimit_fsize(vp, uio, uio->uio_td))
return (EFBIG);
/*
==== //depot/projects/soc2010/kibab_sysctlreg/src_sys/fs/nfs/nfs_commonkrpc.c#2 (text+ko) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list