Commit graph

531 commits

Author SHA1 Message Date
Roman Kurakin 67fb03d261 Fix comment. Code 0x95 means locking shift to codeset 5 according to
T1.617 AnnexD.
Locking shift procedure is described in ANSI T1.607.

MFC after:	3 days
2005-01-16 19:22:09 +00:00
Roman Kurakin d62d2396c3 Fix variable name in comment num=>alen. (Lost part of commit rev 1.2)
MFC after:	3 days
2005-01-16 19:12:27 +00:00
Gleb Smirnoff d0aa4b3fa0 Raise & drop IFF_RUNNING upon receival of netgraph flow control
messages.
2005-01-14 11:55:07 +00:00
Gleb Smirnoff e3d0434573 Consider IFF_UP as "administratively up" flag, and IFF_RUNNING as
"operationally up" flag. Hence this, revert 1.35 to use IFF_RUNNING.
2005-01-14 11:52:45 +00:00
Gleb Smirnoff d1426d7fc5 Locking and cleanup of tty netgraph node. Tty stack is Giant-locked,
so we need to acquire Giant in netgraph methods, so that we don't
race with line discipline methods. Remove NET_NEEDS_GIANT.

- Packets coming into node from netgraph are queued in ifqueue
  attached to node private data.
- Mutex in struct ifqueue is used to lock not only the queue, but
  the whole private data, and tp->t_lsc field.
- tp->t_lsc pointer is used to indicate whether line discipline is
  attached to netgraph or not.
- Use FLG_DIE flag to indicate that node may be destroyed.
  (This protection doesn't work, and it didn't before. Must be redesigned.)
- Increment ngt_unit atomically, removing mutex.
- Acquire Giant, when executing ngt_start() from netgraph context.
- Acquire Giant, when {,de}registering line discipline.
- Uncomment forcing queue mode on peers hook, since this is reasonable.
- Force queue mode on our hook, to avoid acquiring Giant when coming from
  network stack. We may already hold some mutexes at this point.

Cleanups:
- Use callout_pending() instead of our own flag.
- Remove spl(9) calls. Now we can use return() instead of ERROUT().

style(9):
- Sort includes.
- Sparse initializer for struct linesw.
- Remove some empty lines, sort declarations.

Reviewed by:	julian, phk
MFC after:	1 month
2005-01-13 07:43:12 +00:00
Gleb Smirnoff dc2f4d7f5f Utilize callout_pending() macro 2005-01-11 12:20:28 +00:00
Gleb Smirnoff 9ce4c18856 - Use ng_callout() instead of timeout(9).
- Remove spl(9) calls.

XXX:	not tested
2005-01-11 11:59:59 +00:00
Gleb Smirnoff c00e2d15b7 - Use ng_callout() instead of home-grown implementation.
Submitted by:	emax
2005-01-11 11:55:56 +00:00
Gleb Smirnoff 0ef8db8ff2 - Use ng_callout() instead of callout_reset(9).
- Use callout_pending() instead of our own flags.
- Remove home-grown protection of node, which has a scheduled
  callout().
- Remove spl(9) calls.

Tested by:	bz
2005-01-11 11:51:17 +00:00
Maksim Yevmenkin 980b8b89eb Make default RFCOMM session MTU match default L2CAP MTU.
This is just a workaround for a know problem with Motorola E1000
phone. Something is wrong with the configuration of L2CAP/RFCOMM
channel. Even though we set L2CAP MTU to 132 bytes (default RFCOMM
MTU 127 + 5 bytes RFCOMM frame header) and the phone accepts it,
the phone still sends oversized L2CAP packets. It appears that the
phone wants to use bigger (667 bytes) RFCOMM frames, but it does
not segment them according to the configured L2CAP MTU. The 667
bytes RFCOMM frame size corresponds to the default L2CAP MTU of
672 bytes (667 + 5 bytes RFCOMM frame header).

This problem only appears if connection was initiated from the
phone. I'm not sure who is at fault here, so for now just put
workaround in place. Quick look at the spec did not reveal any
anwser.

Tested by:	Jes < jjess at freebsd dot polarhome dot com >
MFC after:	3 days
2005-01-11 01:39:53 +00:00
Gleb Smirnoff 1c7899c74e This change adds reliability for Ethernet trunks built with ng_one2many:
- Introduce another ng_ether(4) callback ng_ether_link_state_p, which
  is called from if_link_state_change(), every time link is changed.
- In ng_ether_link_state() send netgraph control message notifying
  of link state change to a node connected to "lower" hook.

Reviewed by:	sam
MFC after:	2 weeks
2005-01-08 12:42:03 +00:00
Warner Losh c398230b64 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
Maksim Yevmenkin aa38f8f98c Introduce new startup level SI_SUB_NETGRAPH that is after
SI_SUB_INIT_IF but before SI_SUB_DRIVERS. Make Netgraph(4)
framework initialize at SI_SUB_NETGRAPH level.

This does not address the bigger problem: MODULE_DEPEND
does not seem to work when modules are compiled in the
kernel, but it fixes the problem with Netgraph Bluetooth
device drivers reported by a few folks.

PR:		i386/69876
Reviewed by:	julian, rik, scottl
MFC after:	3 days
2005-01-06 17:45:03 +00:00
Roman Kurakin a34891c667 Kill a half dead comment. It's first half was killed in rev 1.12.
MFC after:	3 days
2005-01-04 21:59:09 +00:00
Maksim Yevmenkin 6a2dbfa47f Rename 'class' field to 'uclass' in the ng_hci_inquiry_response structure.
class is a reserved word in C++

Submitted by:	Markus Brueffer < markus AT brueffer DOT de >
MFC after:	3 days
2005-01-04 20:13:48 +00:00
Gleb Smirnoff 3cbbee76f8 Remove a check that never returns true, because in this case we have panic
before the check.
2004-12-30 12:22:51 +00:00
Gleb Smirnoff 92d7d5b445 - Plug a memory leak in ng_netflow_cache_init().
- Initialize error to 0 in ng_netflow_flow_add() (a nop change).
- Update cache statistics holding workqueue mutex.

MFC after:	3 days
2004-12-28 12:11:32 +00:00
Roman Kurakin 47095f775f tsleep => msleep
read sys/kern/kern_synch.c, msleep ():

	KASSERT(timo != 0 || mtx_owned(&Giant) || mtx != NULL,
	    ("sleeping without a mutex"));

MFC after:	3 days
2004-12-26 20:47:41 +00:00
Roman Kurakin ff08c098f2 Fix creation on "dlciX" hook in ng_sample.
Approved by:	julian
MFC after:	3 days
2004-12-23 22:03:32 +00:00
Roman Kurakin 880904c323 Fix counting length of leadin for hook name (sizeof () => strlen ()).
Approved by:    julian
MFC after:      3 days
2004-12-23 18:39:13 +00:00
Gleb Smirnoff 8e853a2c74 Move systm.h up, since it is required by mbuf.h.
Requested by:	ru
2004-12-23 13:09:37 +00:00
Gleb Smirnoff 77a58296d8 - sort includes
- remove duplicate include sys/sysctl.h
2004-12-23 10:48:10 +00:00
Gleb Smirnoff d58e678f22 Assert queue mutex in ng_dequeue() and ng_queue_rw(). 2004-12-19 14:58:13 +00:00
Gleb Smirnoff e0d32af754 - Use ng_callout() instead of timeout.
- Schedule next timeout *after* finishing job of the current one.
- Remove spl(9) calls.

Tested by:	ru
Reviewed by:	julian
2004-12-14 08:05:29 +00:00
Gleb Smirnoff 089323f30d Use ng_callout() and ng_uncallout() instead of home-grown
implementation.

Tested by:	Savchuk Taras
Reviewed by:	archie
Approved by:	julian (mentor)
2004-12-09 07:49:02 +00:00
Gleb Smirnoff ef237c7faf - Use ng_callout() instead of timeout()
- remove spl(9) calls

Tested by:	Ilya Pizik
Approved by:	julian (mentor)
2004-12-08 13:27:54 +00:00
Gleb Smirnoff 9d952bd3fd - Use ng_callout() instead of timeout(9).
- Do not put/remove node references, since this no longer
  needed.
- Remove timerActive flag, use callout flags.
- Schedule next callout after doing current one.

Reviewed by:	archie
Approved by:	julian (mentor)
2004-12-06 19:49:55 +00:00
Gleb Smirnoff 9f3a2adc36 Use ng_callout() instead of timeout(9).
Approved by:	julian (mentor)
2004-12-05 22:58:13 +00:00
Gleb Smirnoff 176119c455 - Use uint16_t to pass argument for NGM_NETFLOW_IFINFO, bump cookie.
- Always check that index number passed from userland
  is <= NG_NETFLOW_MAXIFACES. [1]
- Increase NG_NETFLOW_MAXIFACES up to 512. [2]

Noticed by:	Roman Palagin [1]
Requested by:	Yuri Y. Bushmelev [2]
MFC after:	1 week
2004-12-05 14:30:38 +00:00
Gleb Smirnoff f9d9e1b4ec Mechanically rename s/ng_timeout/ng_callout/g, s/ng_untimeout/ng_uncallout/g.
This is done to keep both versions in RELENG_5 and support both APIs.

Reviewed by:	scottl
Approved by:	julian (mentor), implicitly
2004-12-01 11:56:32 +00:00
Max Laier 4f240aff01 Move ng_socket and ng_btsocket initialization to SI_SUB_PROTO_DOMAIN as they
call net_add_domain(). Calling this function too early (or late) breaks
assertations about the global domains list.
Actually it should be forbidden to call net_add_domain() outside of
SI_SUB_PROTO_DOMAIN completely as there are many places where we traverse
the domains list unprotected, but for now we allow late calls (mostly to
support netgraph). In order to really fix this we have to lock the domains
list in all places or find another way to ensure that we can safely walk the
list while another thread might be adding a new domain.

Spotted by:	se
Reviewed by:	julian, glebius
PR:		kern/73321	(partly)
2004-11-30 22:28:50 +00:00
Archie Cobbs 2adb8d6ab0 Disable protocol field compression on the inner PPP frame when also doing
normal PPP compression, as a workaround for certain (arguably) broken
Linux PPP implementations that can't handle this particular case.

MFC after:	1 week
2004-11-27 20:29:00 +00:00
Gleb Smirnoff 28b24b7b1a Netgraph flow control: change interface status when node receive
LINK_IS_UP/LINK_IS_DOWN messages.

Approved by:	julian (mentor), implicitly
MFC after:	1 week
2004-11-23 09:48:13 +00:00
Gleb Smirnoff 129353b81c Introduce new failure detection algorithm, called NG_ONE2MANY_FAIL_NOTIFY.
It means, that node listens to flow control messages from downstreams
and removes link from list of active links whenever a LINK_IS_DOWN message
is received. If LINK_IS_UP message is received, then links is put
back into list of active links.

Approved by:	julian (mentor), implicitly
MFC after:	1 week
2004-11-23 09:45:47 +00:00
Gleb Smirnoff ea9a9044b1 o Use ng_timeout() instead of timeout(9).
o Implement some netgraph flow control:
- Whenever status of HDLC heartbeat from pear is timed out,
  send NGM_LINK_IS_DOWN message.
- If HDLC link changes status from down to up, send
  NGM_LINK_IS_UP message.

Approved by:	julian (mentor), implicitly
MFC after:	1 week
2004-11-23 09:30:27 +00:00
Gleb Smirnoff 654ec77877 Remove unused macro.
Approved by:	julian (mentor)
2004-11-19 22:35:53 +00:00
Gleb Smirnoff 92947dc698 Cancel pending timeout before scheduling a new one. This fixes
item leak, I've introduced with previous change.

Approved by:	julian (mentor)
2004-11-19 20:23:46 +00:00
Maksim Yevmenkin bb50f99e30 Correct typo. Return ENXIO instead of EIO. 2004-11-19 18:54:54 +00:00
Gleb Smirnoff 81755e6eb6 Add myself to copyright.
Approved by:	marks
2004-11-10 11:18:05 +00:00
Poul-Henning Kamp 756d52a195 Initialize struct pr_userreqs in new/sparse style and fill in common
default elements in net_init_domain().

This makes it possible to grep these structures and see any bogosities.
2004-11-08 14:44:54 +00:00
Gleb Smirnoff 3eadb26df8 Partically backout previous commit. Since _callout_stop_safe() clears
out c->c_func, we can't take it after callout_stop(). To take it before
we need to acquire callout_lock, to avoid race. This commit narrows
down area where lock is held, but hack is still present.

This should be redesigned.

Approved by:	julian (mentor)
2004-11-04 21:30:18 +00:00
Hartmut Brandt a6fd48812e Adapt to the new ng_timeout/ng_untimeout arguments. These now use
the callout instead of the timeout interface.

Submitted by:	glebius
2004-11-04 12:33:55 +00:00
Maksim Yevmenkin b81d7730f3 Fix kernel build (caused by recent ng_{un}timeout API change)
Submitted by:	glebius
2004-11-03 18:00:49 +00:00
Gleb Smirnoff 30bef41b8a - Make ng_timeout() to use callout() interface instead of timeout().
- Remove callout-hacking from ng_untimeout().

Approved by:	julian (mentor)
MFC after:	1 month
2004-11-02 21:24:30 +00:00
Gleb Smirnoff d312eaf5ca Fix a harmless error in order of ng_timeout() arguments.
Approved by:	julian (mentor)
2004-11-02 20:26:41 +00:00
Maksim Yevmenkin cff5b6df1c Fix broken ng_h4(4). Basically, do not abuse t_sc field and use new t_lsc
field created for line disciplne drivers private use. Also add NET_NEEDS_GIANT
warning. For whatever reason ng_tty(4) was fixed but ng_h4(4) was not :(
2004-11-02 20:01:42 +00:00
Gleb Smirnoff 08e2a38eda Removed bogus comment. 2004-11-01 20:52:24 +00:00
Gleb Smirnoff 440df10b41 o style changes:
- tabs after defines
- tabs instead of many spaces
- sort local variables by size

o remove spl(9) calls

Approved by:	julian (mentor)
2004-11-01 20:12:03 +00:00
Gleb Smirnoff ec774932ba Since last change moved ';' from macro to code, we need to embrace
macros with 'do {} while (0)' to avoid error in case macro is
not defined.

Prodded by:	julian, archie
Pointy hat to:	glebius
2004-10-31 17:32:51 +00:00
Gleb Smirnoff f2b9562c53 Rename debug macro to DBG and indent it properly.
Requested by:	maxim
Approved by:	julian (mentor)
2004-10-28 18:23:44 +00:00