From: Simon Wunderlich <sw@simonwunderlich.de>
To: Andrew Lunn <andrew@lunn.ch>
Cc: b.a.t.m.a.n@lists.open-mesh.org,
"B.A.T.M.A.N" <b.a.t.m.a.n@lists.open-mesh.net>
Subject: Re: [B.A.T.M.A.N.] skb->priority and fragments
Date: Wed, 13 Apr 2016 14:19:47 +0200 [thread overview]
Message-ID: <1499929.cbPIaZeezG@prime> (raw)
In-Reply-To: <20160413121416.GA22733@lunn.ch>
[-- Attachment #1: Type: text/plain, Size: 2051 bytes --]
Hi Andrew,
On Wednesday 13 April 2016 14:14:16 Andrew Lunn wrote:
> [...]
> > There are two cases:
> >
> > 1.) On the original sender, both fragments could adopt the priority as you
> > suggest. The code probably doesn't take care of that yet, so that could be
> > fixed.
>
> I will cook up a patch for this.
Excellent!
> > 2.) On routers on the way, the priority could only be set based on the
> > first fragment, since the second fragment will not have a valid header to
> > parse. And unless we remember the priority from the first fragment, we
> > have no way to know to which priority we should set the second fragment.
>
> I don't think remembering works. It looks like it fragments from the
> tail towards the head. So we are not going to receive the IP header
> until we get the last fragment.
>
Ah, you are deeper into that. But my hunch was also that it would be messy,
since we can't guarantee the order of the fragments anyway.
> > I believe case 1 can be fixed easily, for case 2 I don't have an idea
> > right
> > now. :)
>
> There is one reasonable option i can think
> of. batadv_skb_set_priority() extracts three bits of priority
> information, either from the TOS bits, or the 801.q header.
>
> The fragment header is:
>
> struct batadv_frag_packet {
> u8 packet_type;
> u8 version; /* batman version field */
> u8 ttl;
> #if defined(__BIG_ENDIAN_BITFIELD)
> u8 no:4;
> u8 reserved:4;
> #elif defined(__LITTLE_ENDIAN_BITFIELD)
> u8 reserved:4;
> u8 no:4;
> #else
> #error "unknown bitfield endianness"
> #endif
> u8 dest[ETH_ALEN];
> u8 orig[ETH_ALEN];
> __be16 seqno;
> __be16 total_size;
> };
>
> Place the priority information into 3 of the 4 reserved bits. The
> receiver can then set the skb->priority of the fragment before passing
> it to the hard interface.
Ah, yes that sounds like an excellent idea! I like that. The default should be
zero right now, which would also fit. :)
Thanks!
Simon
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
prev parent reply other threads:[~2016-04-13 12:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-12 20:42 [B.A.T.M.A.N.] skb->priority and fragments Andrew Lunn
2016-04-13 11:11 ` Simon Wunderlich
2016-04-13 12:14 ` Andrew Lunn
2016-04-13 12:19 ` Simon Wunderlich [this message]
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=1499929.cbPIaZeezG@prime \
--to=sw@simonwunderlich.de \
--cc=andrew@lunn.ch \
--cc=b.a.t.m.a.n@lists.open-mesh.net \
--cc=b.a.t.m.a.n@lists.open-mesh.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.