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.
next prev parent 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