public inbox for linux-x25@vger.kernel.org
 help / color / mirror / Atom feed
From: Martin Schiller <ms@dev.tdt.de>
To: Jakub Kicinski <kuba@kernel.org>
Cc: andrew.hendry@gmail.com, davem@davemloft.net,
	xie.he.0141@gmail.com, linux-x25@vger.kernel.org,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v6 2/5] net/lapb: support netdev events
Date: Thu, 26 Nov 2020 06:57:44 +0100	[thread overview]
Message-ID: <82d7a9cb1375a24c8cf26615f71ca99b@dev.tdt.de> (raw)
In-Reply-To: <20201125134925.26d851f7@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>

On 2020-11-25 22:49, Jakub Kicinski wrote:
> On Tue, 24 Nov 2020 10:39:35 +0100 Martin Schiller wrote:
>> This patch allows layer2 (LAPB) to react to netdev events itself and
>> avoids the detour via layer3 (X.25).
>> 
>> 1. Establish layer2 on NETDEV_UP events, if the carrier is already up.
>> 
>> 2. Call lapb_disconnect_request() on NETDEV_GOING_DOWN events to 
>> signal
>>    the peer that the connection will go down.
>>    (Only when the carrier is up.)
>> 
>> 3. When a NETDEV_DOWN event occur, clear all queues, enter state
>>    LAPB_STATE_0 and stop all timers.
>> 
>> 4. The NETDEV_CHANGE event makes it possible to handle carrier loss 
>> and
>>    detection.
>> 
>>    In case of Carrier Loss, clear all queues, enter state LAPB_STATE_0
>>    and stop all timers.
>> 
>>    In case of Carrier Detection, we start timer t1 on a DCE interface,
>>    and on a DTE interface we change to state LAPB_STATE_1 and start
>>    sending SABM(E).
>> 
>> Signed-off-by: Martin Schiller <ms@dev.tdt.de>
> 
>> +/* Handle device status changes. */
>> +static int lapb_device_event(struct notifier_block *this, unsigned 
>> long event,
>> +			     void *ptr)
>> +{
>> +	struct net_device *dev = netdev_notifier_info_to_dev(ptr);
>> +	struct lapb_cb *lapb;
>> +
>> +	if (!net_eq(dev_net(dev), &init_net))
>> +		return NOTIFY_DONE;
>> +
>> +	if (dev->type == ARPHRD_X25) {
> 
> Flip condition, save indentation.
> 
> 	if (dev->type != ARPHRD_X25)
> 		return NOTIFY_DONE;
> 
> You can also pull out of all the cases:
> 
> 	lapb = lapb_devtostruct(dev);
> 	if (!lapb)
> 		return NOTIFY_DONE;
> 
> right?
> 
>> +		switch (event) {
>> +		case NETDEV_UP:
>> +			lapb_dbg(0, "(%p) Interface up: %s\n", dev,
>> +				 dev->name);
>> +
>> +			if (netif_carrier_ok(dev)) {
>> +				lapb = lapb_devtostruct(dev);
>> +				if (!lapb)
>> +					break;
> 
>>  static int __init lapb_init(void)
>>  {
>> +	register_netdevice_notifier(&lapb_dev_notifier);
> 
> This can fail, so:
> 
> 	return register_netdevice_notifier(&lapb_dev_notifier);
> 
>>  	return 0;
>>  }
>> 
>>  static void __exit lapb_exit(void)
>>  {
>>  	WARN_ON(!list_empty(&lapb_list));
>> +
>> +	unregister_netdevice_notifier(&lapb_dev_notifier);
>>  }
>> 
>>  MODULE_AUTHOR("Jonathan Naylor <g4klx@g4klx.demon.co.uk>");

Thanks for your hints! I will send an update.

  reply	other threads:[~2020-11-26  5:57 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-24  9:39 [PATCH net-next v6 0/5] net/x25: netdev event handling Martin Schiller
2020-11-24  9:39 ` [PATCH net-next v6 1/5] net/x25: handle additional netdev events Martin Schiller
2020-11-24  9:39 ` [PATCH net-next v6 2/5] net/lapb: support " Martin Schiller
2020-11-24 19:05   ` Xie He
2020-11-25 21:49   ` Jakub Kicinski
2020-11-26  5:57     ` Martin Schiller [this message]
2020-11-26  0:08   ` Xie He
2020-11-26  6:14     ` Martin Schiller
2020-11-24  9:39 ` [PATCH net-next v6 3/5] net/lapb: fix t1 timer handling for LAPB_STATE_0 Martin Schiller
2020-11-24  9:39 ` [PATCH net-next v6 4/5] net/x25: fix restart request/confirm handling Martin Schiller
2020-11-24  9:39 ` [PATCH net-next v6 5/5] net/x25: remove x25_kill_by_device() Martin Schiller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=82d7a9cb1375a24c8cf26615f71ca99b@dev.tdt.de \
    --to=ms@dev.tdt.de \
    --cc=andrew.hendry@gmail.com \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-x25@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=xie.he.0141@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox