dragonfly.git
15 years agogetc(3) and putc(3): macros are functions now
Stathis Kamperis [Tue, 10 Mar 2009 19:36:31 +0000 (19:36 +0000)]
getc(3) and putc(3): macros are functions now

15 years agoaio_write(2): fix capital letter in the middle of sentence
Stathis Kamperis [Wed, 11 Mar 2009 11:54:53 +0000 (11:54 +0000)]
aio_write(2): fix capital letter in the middle of sentence

15 years agoInstall ciss(4) headers to /usr/include so that userland can find cissio.h.
Sascha Wildner [Sun, 22 Feb 2009 12:21:57 +0000 (13:21 +0100)]
Install ciss(4) headers to /usr/include so that userland can find cissio.h.

15 years agolocaltime(3) & zic(8): Clean up definitions a bit.
Sascha Wildner [Sun, 22 Mar 2009 08:24:30 +0000 (09:24 +0100)]
localtime(3) & zic(8): Clean up definitions a bit.

15 years agonetisr: Set M_HASH and pkthdr.hash if software calculates the packet hash.
Sepherosa Ziehau [Sun, 22 Mar 2009 08:10:42 +0000 (16:10 +0800)]
netisr: Set M_HASH and pkthdr.hash if software calculates the packet hash.

15 years agoemx(4): Pass packet info to ether_input_chain()
Sepherosa Ziehau [Sun, 22 Mar 2009 07:45:14 +0000 (15:45 +0800)]
emx(4): Pass packet info to ether_input_chain()

15 years agoemx(4): Correct RSS configuration.
Sepherosa Ziehau [Sun, 22 Mar 2009 04:59:15 +0000 (12:59 +0800)]
emx(4): Correct RSS configuration.

15 years agoether_input: Gather some RSS debug statistics.
Sepherosa Ziehau [Sat, 21 Mar 2009 12:36:28 +0000 (20:36 +0800)]
ether_input: Gather some RSS debug statistics.

15 years agojme(4): Don't deliver packet info if the packet has unknown layer3
Sepherosa Ziehau [Sat, 21 Mar 2009 11:48:13 +0000 (19:48 +0800)]
jme(4): Don't deliver packet info if the packet has unknown layer3
protocol and is not a fragment.

15 years agojme(4): Allow stats to be writable
Sepherosa Ziehau [Sat, 21 Mar 2009 11:30:52 +0000 (19:30 +0800)]
jme(4): Allow stats to be writable

15 years agoip_demux: Add ip_mport_pktinfo() to map IP packets using packet info
Sepherosa Ziehau [Sat, 21 Mar 2009 10:38:44 +0000 (18:38 +0800)]
ip_demux: Add ip_mport_pktinfo() to map IP packets using packet info

15 years agojme(4): Pass packet info to ether_input_chain()
Sepherosa Ziehau [Sat, 21 Mar 2009 09:49:04 +0000 (17:49 +0800)]
jme(4): Pass packet info to ether_input_chain()

15 years agojme(4): Disable TXCSUM by default to improve bulk data transmit performance
Sepherosa Ziehau [Sat, 21 Mar 2009 06:11:20 +0000 (14:11 +0800)]
jme(4): Disable TXCSUM by default to improve bulk data transmit performance

It looks like when the hardware does the TX checksum in the internal TX
FIFO, the DMA read logic is kinda changed; the bursty read effect seems
to get discounted.

After the TX csum offloading is disabled, the device bulk data transmit
speed finally reach gigE line speed and the tiny packets transmit
performance is only reduced marginally (-6Kpps~-8Kpps).

15 years agotoeplitz: Promote net/toeplitz.c to 'standard' file
Sepherosa Ziehau [Sat, 21 Mar 2009 05:06:48 +0000 (13:06 +0800)]
toeplitz: Promote net/toeplitz.c to 'standard' file

Major part of net/toeplitz.c is not compiled if RSS kernel option
is not specified; only necessary symbols for device drivers are
compiled, so I don't need to put "#ifdef RSS" all over the device
drivers code.

15 years agotoeplitz: Hash function renaming
Sepherosa Ziehau [Sat, 21 Mar 2009 04:19:27 +0000 (12:19 +0800)]
toeplitz: Hash function renaming

toeplitz_hash     -> toeplitz_rawhash_addr
toeplitz_hash_tcp -> toeplitz_rawhash_addrport

Add toeplitz_hash() which mask the raw Toeplitz hash value with
ncpus2_mask.  This function will be used by device drivers too.

15 years agojme(4): Don't mess with M_PKTHDR
Sepherosa Ziehau [Sat, 21 Mar 2009 03:43:46 +0000 (11:43 +0800)]
jme(4): Don't mess with M_PKTHDR

15 years agoether_input/ktr: Add ether_input_chain end KTR into several proper places.
Sepherosa Ziehau [Sat, 21 Mar 2009 03:10:52 +0000 (11:10 +0800)]
ether_input/ktr: Add ether_input_chain end KTR into several proper places.

15 years agoether_input/rss: Pass packet info to ether_input_chain.
Sepherosa Ziehau [Sat, 21 Mar 2009 02:46:12 +0000 (10:46 +0800)]
ether_input/rss: Pass packet info to ether_input_chain.

- Pass packet info to ether_input_chain(), if netisr_find_pktinfo_port()
  could locate the msgport, then short circuit the rest of the ether_input
  code and dispatch the ethernet packet directly.
- Revoke the pi_hash field in pktinfo and extend the pktinfo_portfn_t to
  accpet an mbuf parameter, so that pktinfo_portfn_t could change the mbuf
  hash value.  e.g. pktinfo_portfn_cpu0() will always set m_pkthdr.hash
  to 0.
- Adjust ether_input_chain() callers accordingly.

15 years agombuf: Add M_HASH mbuf flag and use the 'pad' field in pkthdr as 'hash'
Sepherosa Ziehau [Sat, 21 Mar 2009 01:35:09 +0000 (09:35 +0800)]
mbuf: Add M_HASH mbuf flag and use the 'pad' field in pkthdr as 'hash'

'hash' field in pkthdr is valid iff M_HASH is set.

15 years agoether_input: Factor out ether_dispatch()
Sepherosa Ziehau [Fri, 20 Mar 2009 11:41:09 +0000 (19:41 +0800)]
ether_input: Factor out ether_dispatch()

This function send the ethernet packet to the target msgport or
just queue it to the mbuf chain.

15 years agonetisr: Add pktinfo struct; add new netisr method to find msgport using pktinfo
Sepherosa Ziehau [Fri, 20 Mar 2009 11:17:58 +0000 (19:17 +0800)]
netisr: Add pktinfo struct; add new netisr method to find msgport using pktinfo

The new netisr method, ni_mport_pktinfo, returns NULL if the passed in pktinfo
does not contain enough information to determine the msgport.

15 years agoRename lwkt_portfn_t to pkt_portfn_t
Sepherosa Ziehau [Thu, 19 Mar 2009 11:09:43 +0000 (19:09 +0800)]
Rename lwkt_portfn_t to pkt_portfn_t

Well, this function actually maps a network packet to a lwkt_port

15 years agojme(4): Using code logic to create redirect table.
Sepherosa Ziehau [Wed, 18 Mar 2009 13:11:19 +0000 (21:11 +0800)]
jme(4): Using code logic to create redirect table.

- Avoid using magic number when creating redirect table, apply
  code logic instead.
- Add comment about how the redirect table is filled.

15 years agojme(4): Get key from Toeplitz code
Sepherosa Ziehau [Wed, 18 Mar 2009 12:20:27 +0000 (20:20 +0800)]
jme(4): Get key from Toeplitz code

15 years agotoeplitz: Add toeplitz_get_key() and nuke toeplitz_get_keyseed()
Sepherosa Ziehau [Wed, 18 Mar 2009 12:17:42 +0000 (20:17 +0800)]
toeplitz: Add toeplitz_get_key() and nuke toeplitz_get_keyseed()

toeplitz_get_key() hides more implementation details (i.e. key
seed replication) from callers than toeplitz_get_keyseed().

15 years agopax(1): Remove argument names from prototypes.
Sascha Wildner [Wed, 18 Mar 2009 10:39:52 +0000 (11:39 +0100)]
pax(1): Remove argument names from prototypes.

15 years agopax(1): Fix WARNS regression
Sascha Wildner [Wed, 18 Mar 2009 10:30:53 +0000 (11:30 +0100)]
pax(1): Fix WARNS regression

15 years agomotd(5) manual page: "Update" the example for DragonFly.
Sascha Wildner [Tue, 17 Mar 2009 21:43:45 +0000 (22:43 +0100)]
motd(5) manual page: "Update" the example for DragonFly.

Reported-by: free-coder
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1316>

15 years agoshlock(1) manual page: Fix typo
Sascha Wildner [Tue, 17 Mar 2009 21:40:33 +0000 (22:40 +0100)]
shlock(1) manual page: Fix typo

Reported-by: free-coder
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1316>

15 years agoCreate destination on copy if it doesn't exists.
Hasso Tepper [Tue, 17 Mar 2009 14:41:03 +0000 (16:41 +0200)]
Create destination on copy if it doesn't exists.

Should conform to SUSv3 and fixes a lot of building failures in pkgsrc.

Digged-out-by: Alex Hornung
15 years agoatphy: Reset PHY after extracting MII capabilities, since reset will
Sepherosa Ziehau [Tue, 17 Mar 2009 12:58:18 +0000 (20:58 +0800)]
atphy: Reset PHY after extracting MII capabilities, since reset will
trigger auto negotiation, which depends on MII capabilities.

15 years agoale(4): Don't read/write 1000baseT specific MII registers on 10/100M only device
Sepherosa Ziehau [Tue, 17 Mar 2009 12:53:37 +0000 (20:53 +0800)]
ale(4): Don't read/write 1000baseT specific MII registers on 10/100M only device

It looks like on 10/100M only device they do contain "valid" 1000baseT values.

15 years agobce/bge(4): Allow txcsum/rxcsum to be set individually
Sepherosa Ziehau [Tue, 17 Mar 2009 12:41:48 +0000 (20:41 +0800)]
bce/bge(4): Allow txcsum/rxcsum to be set individually

15 years agotcp_wrapper: Make sure that the buf has more than 1byte, before calling fgets()
Sepherosa Ziehau [Tue, 17 Mar 2009 11:46:52 +0000 (19:46 +0800)]
tcp_wrapper: Make sure that the buf has more than 1byte, before calling fgets()

FreeBSD-PR: kern/132705
Obtained-from: OpenBSD

15 years agoether_demux: Add comment
Sepherosa Ziehau [Tue, 17 Mar 2009 11:09:27 +0000 (19:09 +0800)]
ether_demux: Add comment

15 years agobridge: If we could enter bridge_input, then M_ETHER_BRIDGED will not be set.
Sepherosa Ziehau [Tue, 17 Mar 2009 11:04:32 +0000 (19:04 +0800)]
bridge: If we could enter bridge_input, then M_ETHER_BRIDGED will not be set.

15 years agoether_input: Add M_ETHER_VLANCHECKED
Sepherosa Ziehau [Tue, 17 Mar 2009 11:00:37 +0000 (19:00 +0800)]
ether_input: Add M_ETHER_VLANCHECKED

- In ether_input_handler(), if ether_vlancheck() has not been called
  (M_ETHER_VLANCHECKED) call it there; this could happen with upcoming
  RSS changes.
- Clear ethernet protocol mbuf flags before entering upper layer.

15 years agoether_input: Factor out ether_vlancheck()
Sepherosa Ziehau [Mon, 16 Mar 2009 12:39:53 +0000 (20:39 +0800)]
ether_input: Factor out ether_vlancheck()

15 years agoAdd M_LENCHECKED mbuf flag.
Sepherosa Ziehau [Sun, 15 Mar 2009 09:40:24 +0000 (17:40 +0800)]
Add M_LENCHECKED mbuf flag.

This flag indicates that various protocol length fields of the packet
are checked.  It is only used by IPv4 currently (ip_lengthcheck()).

15 years agoDefine M_ETHER_BRIDGED to M_PROTO1
Sepherosa Ziehau [Sun, 15 Mar 2009 08:42:07 +0000 (16:42 +0800)]
Define M_ETHER_BRIDGED to M_PROTO1

15 years agoDuplicated M_PROTO1 in M_COPYFLAGS
Sepherosa Ziehau [Sun, 15 Mar 2009 08:31:44 +0000 (16:31 +0800)]
Duplicated M_PROTO1 in M_COPYFLAGS

15 years ago802.11: Clear M_PROTO? flags before calling ifnet.if_input
Sepherosa Ziehau [Sun, 15 Mar 2009 08:19:00 +0000 (16:19 +0800)]
802.11: Clear M_PROTO? flags before calling ifnet.if_input

15 years agoDefer ethernet mcast/bcast address detection to ether_input_handler()
Sepherosa Ziehau [Sun, 15 Mar 2009 03:20:40 +0000 (11:20 +0800)]
Defer ethernet mcast/bcast address detection to ether_input_handler()

15 years agoip_demux: If RSS kernel option is set, use Toeplitz hash function
Sepherosa Ziehau [Sat, 14 Mar 2009 12:59:11 +0000 (20:59 +0800)]
ip_demux: If RSS kernel option is set, use Toeplitz hash function

15 years agoSync zoneinfo database with tzdata2009c from elsie.
Sascha Wildner [Mon, 16 Mar 2009 21:52:42 +0000 (22:52 +0100)]
Sync zoneinfo database with tzdata2009c from elsie.

northamerica:   8.26 -> 8.27

Cuba started DST one week earlier than previously thought.

15 years agoRemove CVS Id from DragonFly fortune file
Matthias Schmidt [Mon, 16 Mar 2009 14:26:06 +0000 (15:26 +0100)]
Remove CVS Id from DragonFly fortune file

Remove the ID as the information is now misleading.  The content is
newer as the ID suggests.

Spotted-by: hasso@
15 years agoHAMMER VFS - rebalancing, zero unused fields in boundary element
Matthew Dillon [Mon, 16 Mar 2009 04:45:57 +0000 (21:45 -0700)]
HAMMER VFS - rebalancing, zero unused fields in boundary element

The rebalancer was not zeroing certain unused fields in a newly created
boundary element when truncating an existing internal B-Tree node.

While these fields are not used by the filesystem for boundary elements,
they are still expected to be zero'd out.

15 years agoHAMMER VFS - Add a B-Tree rebalancing feature.
Matthew Dillon [Sun, 15 Mar 2009 22:28:38 +0000 (15:28 -0700)]
HAMMER VFS - Add a B-Tree rebalancing feature.

This is the initial commit of B-Tree rebalancing support for HAMMER.
The rebalancer may be run using the 'hammer rebalance' utility directive.

The leafs in a HAMMER B-Tree all reside at the same depth.  Insertions and
deletions only collapse the B-Tree when a leaf node becomes empty and then
only if any necessary recursion (possibly reaching the root node) succeeds.
No balancing occurs during normal operation and B-Tree nodes can wind up
with wildly different element counts which bloats the tree and makes
searches less efficient.

The rebalancer effectively does a depth-first traversal of the B-Tree,
visiting leaf nodes first and parent nodes as a trailing function on the
way back up the tree.  For any given internal node the sum total of
elements contained in its children is divided by the number of children.
The effective number of children is reduced as is practical to obtain a 75%
fill level.  The elements are then packed into the children and any
wholely empty children left over are deleted.  The rebalancer does not
create new B-Tree nodes.

Element packing is fairly complex, requiring tracked cursors, on-media
parent pointers, mirror TIDs, and boundary elements to be updated.  The
rebalancer must hold a large number of B-Tree nodes exclusively locked
while running.

15 years agoRemove conditionals based on #if defined(i386) which wrapped code which was
Matthew Dillon [Sun, 15 Mar 2009 19:26:06 +0000 (12:26 -0700)]
Remove conditionals based on #if defined(i386) which wrapped code which was
unused.  Gcc does not define 'i386' anyway, it uses __i386__.

This also fixes some clang issues.

Requested-by: Alex Hornung
15 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Sun, 15 Mar 2009 00:35:39 +0000 (17:35 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

15 years agoHAMMER Utility: Change B-Tree, inodes, and dir reblocking params, add rebalance
Matthew Dillon [Sun, 15 Mar 2009 00:22:40 +0000 (17:22 -0700)]
HAMMER Utility: Change B-Tree, inodes, and dir reblocking params, add rebalance

* The normal cleanup operations now reblock all B-Tree, inode, and directory
  elements in the normal daily reblock mode instead of only the ones in
  fragmented big-blocks.  Bulk data is handled by the 30-day recopy mode.

* Add a new directive 'rebalance' (a future VFS ioctl).  This directive will
  tell the HAMMER VFS to rebalance the B-Tree.  HAMMER B-Trees are always
  balanced by depth but degenerate cases with minimal elements in a node
  can easily build up.  The new directive will rebalance the elements in
  each B-Tree node.

* The hammer cleanup directive was not reblocking directories.  Now it does.

It usually does not take very long to reblock the B-Tree nodes, inodes, or
directory elements.  Reblocking these unconditionally, instead of just
reblocking fragmented allocation areas, keeps the B-Tree in a more optimal
layout, though there is still a lack of correlation between inode numbers
and directory scan order.

15 years agorss: Add RSS_DEBUG kernel option
Sepherosa Ziehau [Sat, 14 Mar 2009 09:02:12 +0000 (17:02 +0800)]
rss: Add RSS_DEBUG kernel option

15 years agorss: Add Toeplitz hash function
Sepherosa Ziehau [Sat, 14 Mar 2009 08:14:45 +0000 (16:14 +0800)]
rss: Add Toeplitz hash function

15 years agoip_demux: Wrap INP_MPORT_HASH_{TCP,UDP}() around INP_MPORT_HASH()
Sepherosa Ziehau [Sat, 14 Mar 2009 06:11:16 +0000 (14:11 +0800)]
ip_demux: Wrap INP_MPORT_HASH_{TCP,UDP}() around INP_MPORT_HASH()

15 years agoip_demux: Test IN_MULTICAST() if RSS kernel option is not enabled.
Sepherosa Ziehau [Sat, 14 Mar 2009 06:01:29 +0000 (14:01 +0800)]
ip_demux: Test IN_MULTICAST() if RSS kernel option is not enabled.

15 years agoAdd static ARP support.
Sepherosa Ziehau [Sat, 14 Mar 2009 03:41:35 +0000 (11:41 +0800)]
Add static ARP support.

Obtained-from: FreeBSD

15 years agoemx(4): Fix comment
Sepherosa Ziehau [Sat, 14 Mar 2009 02:56:25 +0000 (10:56 +0800)]
emx(4): Fix comment

15 years agoifconfig(8): Remove string of if_flags, which will never be adopted.
Sepherosa Ziehau [Sat, 14 Mar 2009 02:54:42 +0000 (10:54 +0800)]
ifconfig(8): Remove string of if_flags, which will never be adopted.

15 years agojme(4): Correct SIOCSIFCAP ioctl handling
Sepherosa Ziehau [Sat, 14 Mar 2009 02:22:25 +0000 (10:22 +0800)]
jme(4): Correct SIOCSIFCAP ioctl handling

- Upper layer will always check if_capabilities against ifreq,
  so we don't need to check if_capabilities again.
- When IFCAP_RSS changes, the jme_init() should be called only if
  the interface is running.
- Don't use compile time condition for the code handling IFCAP_RSS.

15 years agoemx(4): Support IFCAP_RSS
Sepherosa Ziehau [Sat, 14 Mar 2009 02:20:53 +0000 (10:20 +0800)]
emx(4): Support IFCAP_RSS

15 years agorss: Add RSS kernel option; Add IFCAP_RSS iface capability
Sepherosa Ziehau [Fri, 13 Mar 2009 12:46:37 +0000 (20:46 +0800)]
rss: Add RSS kernel option; Add IFCAP_RSS iface capability

Convert jme(4) to use the new IFCAP_RSS.

15 years agoUpdate cpdup rev to 1.12.
Matthew Dillon [Fri, 13 Mar 2009 04:15:46 +0000 (21:15 -0700)]
Update cpdup rev to 1.12.

15 years agoFix kernel panic on NULL pointer deref w/ certain ktrace commands, allow -c -f.
Matthew Dillon [Thu, 12 Mar 2009 16:15:10 +0000 (09:15 -0700)]
Fix kernel panic on NULL pointer deref w/ certain ktrace commands, allow -c -f.

Fix a kernel panic on a NULL pointer dereference with certain ktrace -c
commands.

Allow the -c -f <file> combination (taken from FreeBSD).

Submitted-by: Stathis Kamperis <beket>
15 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Thu, 12 Mar 2009 16:08:55 +0000 (09:08 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

15 years agoHAMMER VFS - return shorter-form softlinks "@@-1:%05d" when appropriate.
Matthew Dillon [Thu, 12 Mar 2009 16:03:08 +0000 (09:03 -0700)]
HAMMER VFS - return shorter-form softlinks "@@-1:%05d" when appropriate.

The HAMMER VFS supports a short "@@-1:%05d" for master PFSs.  Adjust the
HAMMER VFS to return softlinks in that form and adjust the hammer cleanup
code to recognize softlinks in that form.

Note that PFS softlinks are created as "@@PFS%05d", but the HAMMER VFS
presents them in an expanded form which allows the HAMMER VFS to reflect
the latest synchronized transaction id on slave PFSs.  This also prevents
slave PFSs from confusing DragonFly's namecache as each snapshot will appear
to be an entirely different path.

Unfortunately this does mean that cpdup/cp/tar will pickup a translated
softlink and not the actual one.  It's just something else to remember
about these 'weird' PFS mount points.

Suggested-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
15 years agoemx(4): Move EMX_RSS_DEBUG into opt_emx.h
Sepherosa Ziehau [Thu, 12 Mar 2009 12:00:55 +0000 (20:00 +0800)]
emx(4): Move EMX_RSS_DEBUG into opt_emx.h

15 years agojme(4): Move JME_RSS_DEBUG into opt_jme.h
Sepherosa Ziehau [Thu, 12 Mar 2009 11:24:52 +0000 (19:24 +0800)]
jme(4): Move JME_RSS_DEBUG into opt_jme.h

15 years agoidentcpu.c: Add MOVBE feature string.
Sascha Wildner [Wed, 11 Mar 2009 19:02:10 +0000 (20:02 +0100)]
identcpu.c: Add MOVBE feature string.

15 years agoExtract PFS null mounts from anywhere in the filesystem, instead of just
Matthew Dillon [Wed, 11 Mar 2009 17:45:38 +0000 (10:45 -0700)]
Extract PFS null mounts from anywhere in the filesystem, instead of just
from the /pfs subdirectory.

Submitted-by: pgeorgi (via bugs)
15 years agoem(4): Enable RX after RDH is configured (backport from emx(4)).
Sepherosa Ziehau [Tue, 10 Mar 2009 13:14:22 +0000 (21:14 +0800)]
em(4): Enable RX after RDH is configured (backport from emx(4)).

According to Intel OpenSDM's RDH description:
"... If software were to write to this register while the receive
 function was enabled, the on-chip descriptor buffers can be
 invalidated and other indeterminate operations might result ..."

Maybe we were just that lucky, the driver actually worked ...

15 years agoem(4): Backport part of 62e0614e4c59f94c83cdf24ebf5995add53f03bf
Sepherosa Ziehau [Tue, 10 Mar 2009 13:10:23 +0000 (21:10 +0800)]
em(4): Backport part of 62e0614e4c59f94c83cdf24ebf5995add53f03bf

Used transmit descriptors do not need to be cleared in txeof and
tx_collect

15 years agoem(4): Backport cc8fffade4528dd788a4789998ed3d1e85f9644a
Sepherosa Ziehau [Tue, 10 Mar 2009 12:00:40 +0000 (20:00 +0800)]
em(4): Backport cc8fffade4528dd788a4789998ed3d1e85f9644a

Use E1000_ICR_ macros when check against value read from ICR

15 years agoem(4): Backport part of 62e0614e4c59f94c83cdf24ebf5995add53f03bf
Sepherosa Ziehau [Tue, 10 Mar 2009 11:58:10 +0000 (19:58 +0800)]
em(4): Backport part of 62e0614e4c59f94c83cdf24ebf5995add53f03bf

em_buffer.m_head is only set/cleared in the last em_buffer associated
with the packet, so we don't need to keep clearing it in transmit
descriptor setup loop.

15 years agonetwork: Turn on adaptive MPSAFE for network threads, and MPSAFE for IP and ARP
Sepherosa Ziehau [Tue, 10 Mar 2009 10:56:40 +0000 (18:56 +0800)]
network: Turn on adaptive MPSAFE for network threads, and MPSAFE for IP and ARP

Approved-by dillon@

15 years agoInstall ncurses_dll.h to unbreak devel/ncursesw from pkgsrc.
Hasso Tepper [Mon, 9 Mar 2009 13:52:11 +0000 (15:52 +0200)]
Install ncurses_dll.h to unbreak devel/ncursesw from pkgsrc.

Pkgsrc assumes that our ncurses is good enough to use, but installs
ncursesw/ncurses.h header which includes ncurses_dll.h. So, compiling
every piece of software using ncursesw/ncurses.h just failed.

15 years agosignals: rename CURSIGNB to CURSIG_NOBLOCK and unify implementation
Simon Schubert [Sat, 7 Mar 2009 18:35:10 +0000 (19:35 +0100)]
signals: rename CURSIGNB to CURSIG_NOBLOCK and unify implementation

CURSIG() is defined as __cursig() and CURSIGNB() as __cursignb().
However both __cursig() and __cursignb() do almost the same thing, so
consolidate the code into one function.

15 years agosignals: rework when CURSIG/issignal can stop a thread for tracing
Simon Schubert [Sat, 7 Mar 2009 17:09:13 +0000 (18:09 +0100)]
signals: rework when CURSIG/issignal can stop a thread for tracing

When tracing a process, it can happen that the thread would get stopped
due to the signal and its tracing.  In this case the tracing parent
would get notified and it might choose to let the process to serve the
signal.

However if this stop+trace is happening somewhere deep in the kernel due
to a call to CURSIG(), it might happen that the same signal again is the
cause for a stop+trace cycle because of another call to CURSIG() while
the call stack is unwinding.

Introduce CURSIG_TRACE(), which explicitly allows stopping for tracing
signal delivery.  This is only called from userret().
All other instances of CURSIG() may still block/sleep because of SA_STOP
signals, but these invocations may not trace + repost signals.

As such, the only place where trace + repost of signals can happen now
is userret().  Nevertheless, CURSIG() still decides not to ignore a
currently ignored signal and rather lets the kernel unwind until this
signal arrives in the CURSIG_TRACE() called from userret().

15 years agosignals: stop all threads of a process before taking a checkpoint
Simon Schubert [Sat, 7 Mar 2009 16:35:02 +0000 (17:35 +0100)]
signals: stop all threads of a process before taking a checkpoint

If we want to checkpoint a multi-threaded process, we need to wait until
the process is in a quiescent state, otherwise our checkpoint might be
incorrect.

15 years agostay in tstop() as long as the process is stopped
Simon Schubert [Sat, 7 Mar 2009 16:54:37 +0000 (17:54 +0100)]
stay in tstop() as long as the process is stopped

Under some conditions (mainly related to multi-threaded processes and
tracing (gdb)), wakeups, scheduling and stops can lead to a race which
will leave the process stopped and wait()ed, but the P_WAITED flag
cleared.  This happens because a thread in tstop() might have been woken
up, but not yet scheduled.  If the process in turn would get stopped
again (another bug), the thread in tstop() would be counted as stopped,
but would only be waiting to be scheduled to transition into LSRUN.

Prevent this by checking for SSLEEP in tstop() before returning.

15 years agodon't loop printing the diagnostic "waiting for lwps to exit"
Simon Schubert [Sat, 7 Mar 2009 16:37:16 +0000 (17:37 +0100)]
don't loop printing the diagnostic "waiting for lwps to exit"

This diagnostic never was really useful and only clutters the message
buffer.  Also don't poll the process state once a second, but rely on
the wakeups from exiting threads.

15 years agoemx(4): Add tunable to enable/disable multi-RX queue support
Sepherosa Ziehau [Mon, 9 Mar 2009 13:13:59 +0000 (21:13 +0800)]
emx(4): Add tunable to enable/disable multi-RX queue support

Multi-RX queue support is disabled on UP kernel, even if this
tunable is enabled.

15 years agoemx(4): Add multi-RX queue support
Sepherosa Ziehau [Sun, 8 Mar 2009 12:59:27 +0000 (20:59 +0800)]
emx(4): Add multi-RX queue support

15 years agoAdd an objcache(9) manual page.
Sascha Wildner [Mon, 9 Mar 2009 09:07:10 +0000 (10:07 +0100)]
Add an objcache(9) manual page.

Submitted-by: Stathis Kamperis <ekamperi@gmail.com>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1251>

15 years agoemx(4): Use E1000_ICR_ macros when check against value read from ICR
Sepherosa Ziehau [Sun, 8 Mar 2009 04:08:30 +0000 (12:08 +0800)]
emx(4): Use E1000_ICR_ macros when check against value read from ICR

15 years agoemx(4): this driver does not support 82543
Sepherosa Ziehau [Sun, 8 Mar 2009 03:51:38 +0000 (11:51 +0800)]
emx(4): this driver does not support 82543

15 years agoemx(4): Let the hardware strip the ethernet CRC on RX path
Sepherosa Ziehau [Sat, 7 Mar 2009 13:09:09 +0000 (21:09 +0800)]
emx(4): Let the hardware strip the ethernet CRC on RX path

15 years agoemx(4): Prepare multi-RX queue support -- use extended RX descriptor
Sepherosa Ziehau [Sat, 7 Mar 2009 11:29:59 +0000 (19:29 +0800)]
emx(4): Prepare multi-RX queue support -- use extended RX descriptor

15 years agoemx(4): Prepare multi-RX queue support -- use different struct for RX/TX buffer
Sepherosa Ziehau [Sat, 7 Mar 2009 05:08:34 +0000 (13:08 +0800)]
emx(4): Prepare multi-RX queue support -- use different struct for RX/TX buffer

Extended RX descriptor will be needed for multi-RX queue support.  However,
hardware will write information into RX buffer address field of extended
RX descriptors, so we will need to save "device visible" address in RX buffer.

15 years agoemx(4): Prepare multi-RX queue support -- group RX related fields together
Sepherosa Ziehau [Sat, 7 Mar 2009 04:01:11 +0000 (12:01 +0800)]
emx(4): Prepare multi-RX queue support -- group RX related fields together

15 years agoemx(4): Factor out emx_dma_{alloc,free}()
Sepherosa Ziehau [Fri, 6 Mar 2009 11:17:45 +0000 (19:17 +0800)]
emx(4): Factor out emx_dma_{alloc,free}()

15 years agoemx(4): Remove emx_dma_{malloc,free}() and related struct.
Sepherosa Ziehau [Thu, 5 Mar 2009 12:52:02 +0000 (20:52 +0800)]
emx(4): Remove emx_dma_{malloc,free}() and related struct.

15 years agoemx(4): Move TX/RX desc ring alloc/free into ring creation/destroy functions
Sepherosa Ziehau [Thu, 5 Mar 2009 11:49:28 +0000 (19:49 +0800)]
emx(4): Move TX/RX desc ring alloc/free into ring creation/destroy functions

15 years agoemx(4): Regroup RX/TX ring creation code
Sepherosa Ziehau [Thu, 5 Mar 2009 11:25:23 +0000 (19:25 +0800)]
emx(4): Regroup RX/TX ring creation code

15 years agoundo: don't run diff between last tid and tid_max
Simon Schubert [Fri, 6 Mar 2009 14:41:25 +0000 (15:41 +0100)]
undo: don't run diff between last tid and tid_max

Diff works on pairs of tids and not on only the first tid passed in to
the generator.  As a result, there is nothing to do for the last pair of
tids: the last tid and max_tid refer to the same version.  Avoid running
the generator in this case.

15 years agoundo: use MAX_TID for tid_max, or else HAMMER won't find the latest change
Simon Schubert [Fri, 6 Mar 2009 14:29:40 +0000 (15:29 +0100)]
undo: use MAX_TID for tid_max, or else HAMMER won't find the latest change

We should anyways use HAMMER_MAX_TID.  This also works around the bug in
<http://bugs.dragonflybsd.org/issue1307>.

15 years agoundo: for one-shot operations, pass in the last tid and not tid_max
Simon Schubert [Fri, 6 Mar 2009 14:26:46 +0000 (15:26 +0100)]
undo: for one-shot operations, pass in the last tid and not tid_max

This allows diff to print a sensible time of the last modification and
not print the start of the epoch.

15 years agocleanup: typo in comment
Simon Schubert [Wed, 4 Mar 2009 14:00:05 +0000 (15:00 +0100)]
cleanup: typo in comment

15 years agoktrdump: print ktr data using vfprintf()
Simon Schubert [Tue, 3 Mar 2009 17:23:48 +0000 (18:23 +0100)]
ktrdump: print ktr data using vfprintf()

The code previously assumed that there is a maximum of 10 arguments which
are all integer (sized).  Printing of more or differently sized arguments
seemed to work on occasion, or not.

15 years agoemx(4): Compact transmit path a little bit
Sepherosa Ziehau [Wed, 4 Mar 2009 13:31:32 +0000 (21:31 +0800)]
emx(4): Compact transmit path a little bit

- emx_buf.m_head is only set/cleared in the last emx_buf associated with
  the packet, so we don't need to keep clearing it in transmit descriptor
  setup loop.
- Used transmit descriptors do not need to be cleared in txeof and tx_collect

15 years agoem/emx(4): Remove dead code; add comment.
Sepherosa Ziehau [Wed, 4 Mar 2009 12:56:59 +0000 (20:56 +0800)]
em/emx(4): Remove dead code; add comment.