From: Antonio Quartulli <antonio@meshcoding.com>
To: Marek Lindner <mareklindner@neomailbox.ch>
Cc: The list for a Better Approach To Mobile Ad-hoc Networking
<b.a.t.m.a.n@lists.open-mesh.org>
Subject: Re: [B.A.T.M.A.N.] [PATCH-next 1/4] batman-adv: fix alignment for batadv_coded_packet
Date: Sun, 15 Dec 2013 16:38:31 +0100 [thread overview]
Message-ID: <52ADCCF7.80109@meshcoding.com> (raw)
In-Reply-To: <1386013113-25471-1-git-send-email-sw@simonwunderlich.de>
[-- Attachment #1.1: Type: text/plain, Size: 219 bytes --]
Marek,
when merging next into master you will hit a number of conflicts (as you
already realized).
Here you have the diff showing how I solved them.
I hope it can help.
Cheers,
--
Antonio Quartulli
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: solve-conflict.patch --]
[-- Type: text/x-patch; name="solve-conflict.patch", Size: 9182 bytes --]
diff --git a/bat_iv_ogm.c b/bat_iv_ogm.c
index f8b9770..aaec261 100644
--- a/bat_iv_ogm.c
+++ b/bat_iv_ogm.c
@@ -484,31 +484,7 @@ static void batadv_iv_ogm_emit(struct batadv_forw_packet *forw_packet)
if (WARN_ON(forw_packet->if_outgoing->soft_iface != soft_iface))
goto out;
-<<<<<<< HEAD
if (forw_packet->if_incoming->if_status != BATADV_IF_ACTIVE)
-=======
- /* multihomed peer assumed
- * non-primary OGMs are only broadcasted on their interface
- */
- if ((directlink && (batadv_ogm_packet->ttl == 1)) ||
- (forw_packet->own && (forw_packet->if_incoming != primary_if))) {
- /* FIXME: what about aggregated packets ? */
- batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
- "%s packet (originator %pM, seqno %u, TTL %d) on interface %s [%pM]\n",
- (forw_packet->own ? "Sending own" : "Forwarding"),
- batadv_ogm_packet->orig,
- ntohl(batadv_ogm_packet->seqno),
- batadv_ogm_packet->ttl,
- forw_packet->if_incoming->net_dev->name,
- forw_packet->if_incoming->net_dev->dev_addr);
-
- /* skb is only used once and than forw_packet is free'd */
- batadv_send_skb_packet(forw_packet->skb,
- forw_packet->if_incoming,
- batadv_broadcast_addr);
- forw_packet->skb = NULL;
-
->>>>>>> origin/next
goto out;
primary_if = batadv_primary_if_get_selected(bat_priv);
@@ -1067,13 +1043,8 @@ batadv_iv_ogm_orig_update(struct batadv_priv *bat_priv,
spin_unlock_bh(&neigh_node->ifinfo_lock);
if (dup_status == BATADV_NO_DUP) {
-<<<<<<< HEAD
- orig_ifinfo->last_ttl = batadv_ogm_packet->header.ttl;
- neigh_ifinfo->last_ttl = batadv_ogm_packet->header.ttl;
-=======
- orig_node->last_ttl = batadv_ogm_packet->ttl;
- neigh_node->last_ttl = batadv_ogm_packet->ttl;
->>>>>>> origin/next
+ orig_ifinfo->last_ttl = batadv_ogm_packet->ttl;
+ neigh_ifinfo->last_ttl = batadv_ogm_packet->ttl;
}
/* if this neighbor already is our next hop there is nothing
@@ -1412,12 +1383,8 @@ batadv_iv_ogm_process_per_outif(const struct sk_buff *skb, int ogm_offset,
/* create a private copy of the skb, as some functions change tq value
* and/or flags.
*/
-<<<<<<< HEAD
skb_priv = skb_copy(skb, GFP_ATOMIC);
if (!skb_priv)
-=======
- if (batadv_ogm_packet->packet_type != BATADV_IV_OGM)
->>>>>>> origin/next
return;
ethhdr = eth_hdr(skb_priv);
@@ -1428,107 +1395,6 @@ batadv_iv_ogm_process_per_outif(const struct sk_buff *skb, int ogm_offset,
if (batadv_compare_eth(ethhdr->h_source, ogm_packet->orig))
is_single_hop_neigh = true;
-<<<<<<< HEAD
-=======
- batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
- "Received BATMAN packet via NB: %pM, IF: %s [%pM] (from OG: %pM, via prev OG: %pM, seqno %u, tq %d, TTL %d, V %d, IDF %d)\n",
- ethhdr->h_source, if_incoming->net_dev->name,
- if_incoming->net_dev->dev_addr, batadv_ogm_packet->orig,
- batadv_ogm_packet->prev_sender,
- ntohl(batadv_ogm_packet->seqno), batadv_ogm_packet->tq,
- batadv_ogm_packet->ttl,
- batadv_ogm_packet->version, has_directlink_flag);
-
- rcu_read_lock();
- list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
- if (hard_iface->if_status != BATADV_IF_ACTIVE)
- continue;
-
- if (hard_iface->soft_iface != if_incoming->soft_iface)
- continue;
-
- if (batadv_compare_eth(ethhdr->h_source,
- hard_iface->net_dev->dev_addr))
- is_my_addr = 1;
-
- if (batadv_compare_eth(batadv_ogm_packet->orig,
- hard_iface->net_dev->dev_addr))
- is_my_orig = 1;
-
- if (batadv_compare_eth(batadv_ogm_packet->prev_sender,
- hard_iface->net_dev->dev_addr))
- is_my_oldorig = 1;
- }
- rcu_read_unlock();
-
- if (is_my_addr) {
- batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
- "Drop packet: received my own broadcast (sender: %pM)\n",
- ethhdr->h_source);
- return;
- }
-
- if (is_my_orig) {
- unsigned long *word;
- int offset;
- int32_t bit_pos;
- int16_t if_num;
- uint8_t *weight;
-
- orig_neigh_node = batadv_iv_ogm_orig_get(bat_priv,
- ethhdr->h_source);
- if (!orig_neigh_node)
- return;
-
- /* neighbor has to indicate direct link and it has to
- * come via the corresponding interface
- * save packet seqno for bidirectional check
- */
- if (has_directlink_flag &&
- batadv_compare_eth(if_incoming->net_dev->dev_addr,
- batadv_ogm_packet->orig)) {
- if_num = if_incoming->if_num;
- offset = if_num * BATADV_NUM_WORDS;
-
- spin_lock_bh(&orig_neigh_node->bat_iv.ogm_cnt_lock);
- word = &(orig_neigh_node->bat_iv.bcast_own[offset]);
- bit_pos = if_incoming_seqno - 2;
- bit_pos -= ntohl(batadv_ogm_packet->seqno);
- batadv_set_bit(word, bit_pos);
- weight = &orig_neigh_node->bat_iv.bcast_own_sum[if_num];
- *weight = bitmap_weight(word,
- BATADV_TQ_LOCAL_WINDOW_SIZE);
- spin_unlock_bh(&orig_neigh_node->bat_iv.ogm_cnt_lock);
- }
-
- batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
- "Drop packet: originator packet from myself (via neighbor)\n");
- batadv_orig_node_free_ref(orig_neigh_node);
- return;
- }
-
- if (is_my_oldorig) {
- batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
- "Drop packet: ignoring all rebroadcast echos (sender: %pM)\n",
- ethhdr->h_source);
- return;
- }
-
- if (batadv_ogm_packet->flags & BATADV_NOT_BEST_NEXT_HOP) {
- batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
- "Drop packet: ignoring all packets not forwarded from the best next hop (sender: %pM)\n",
- ethhdr->h_source);
- return;
- }
-
- orig_node = batadv_iv_ogm_orig_get(bat_priv, batadv_ogm_packet->orig);
- if (!orig_node)
- return;
-
- dup_status = batadv_iv_ogm_update_seqnos(ethhdr, batadv_ogm_packet,
- if_incoming);
-
->>>>>>> origin/next
if (dup_status == BATADV_PROTECTED) {
batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
"Drop packet: packet within seqno protection time (sender: %pM)\n",
@@ -1603,17 +1469,12 @@ batadv_iv_ogm_process_per_outif(const struct sk_buff *skb, int ogm_offset,
/* update ranking if it is not a duplicate or has the same
* seqno and similar ttl as the non-duplicate
*/
-<<<<<<< HEAD
orig_ifinfo = batadv_orig_ifinfo_new(orig_node, if_outgoing);
if (!orig_ifinfo)
goto out_neigh;
sameseq = orig_ifinfo->last_real_seqno == ntohl(ogm_packet->seqno);
- similar_ttl = (orig_ifinfo->last_ttl - 3) <= ogm_packet->header.ttl;
-=======
- sameseq = orig_node->last_real_seqno == ntohl(batadv_ogm_packet->seqno);
- similar_ttl = orig_node->last_ttl - 3 <= batadv_ogm_packet->ttl;
->>>>>>> origin/next
+ similar_ttl = (orig_ifinfo->last_ttl - 3) <= ogm_packet->ttl;
if (is_bidirect && ((dup_status == BATADV_NO_DUP) ||
(sameseq && similar_ttl))) {
batadv_iv_ogm_orig_update(bat_priv, orig_node,
@@ -1632,8 +1493,7 @@ batadv_iv_ogm_process_per_outif(const struct sk_buff *skb, int ogm_offset,
/* OGMs from secondary interfaces should only scheduled once
* per interface where it has been received, not multiple times
*/
- if ((ogm_packet->header.ttl <= 2) &&
- (if_incoming != if_outgoing)) {
+ if ((ogm_packet->ttl <= 2) && (if_incoming != if_outgoing)) {
batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
"Drop packet: OGM from secondary interface and wrong outgoing interface\n");
goto out_neigh;
@@ -1717,7 +1577,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset,
* packet in an aggregation. Here we expect that the padding
* is always zero (or not 0x01)
*/
- if (ogm_packet->header.packet_type != BATADV_IV_OGM)
+ if (ogm_packet->packet_type != BATADV_IV_OGM)
return;
/* could be changed by schedule_own_packet() */
@@ -1733,8 +1593,8 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset,
ethhdr->h_source, if_incoming->net_dev->name,
if_incoming->net_dev->dev_addr, ogm_packet->orig,
ogm_packet->prev_sender, ntohl(ogm_packet->seqno),
- ogm_packet->tq, ogm_packet->header.ttl,
- ogm_packet->header.version, has_directlink_flag);
+ ogm_packet->tq, ogm_packet->ttl,
+ ogm_packet->version, has_directlink_flag);
rcu_read_lock();
list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
diff --git a/network-coding.c b/network-coding.c
index 7d13666..6a0b328 100644
--- a/network-coding.c
+++ b/network-coding.c
@@ -725,7 +725,6 @@ static bool batadv_can_nc_with_orig(struct batadv_priv *bat_priv,
orig_ifinfo = batadv_orig_ifinfo_get(orig_node, BATADV_IF_DEFAULT);
if (!orig_ifinfo)
return false;
-<<<<<<< HEAD
last_ttl = orig_ifinfo->last_ttl;
last_real_seqno = orig_ifinfo->last_real_seqno;
@@ -733,10 +732,7 @@ static bool batadv_can_nc_with_orig(struct batadv_priv *bat_priv,
if (last_real_seqno != ntohl(ogm_packet->seqno))
return false;
- if (last_ttl != ogm_packet->header.ttl + 1)
-=======
- if (orig_node->last_ttl != ogm_packet->ttl + 1)
->>>>>>> origin/next
+ if (last_ttl != ogm_packet->ttl + 1)
return false;
if (!batadv_compare_eth(ogm_packet->orig, ogm_packet->prev_sender))
return false;
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
prev parent reply other threads:[~2013-12-15 15:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-02 19:38 [B.A.T.M.A.N.] [PATCH-next 1/4] batman-adv: fix alignment for batadv_coded_packet Simon Wunderlich
2013-12-02 19:38 ` [B.A.T.M.A.N.] [PATCH-next 2/4] batman-adv: fix header alignment by unrolling batadv_header Simon Wunderlich
2013-12-12 5:44 ` Marek Lindner
2013-12-02 19:38 ` [B.A.T.M.A.N.] [PATCH-next 3/4] batman-adv: fix size of batadv_icmp_header Simon Wunderlich
2013-12-02 20:16 ` Antonio Quartulli
2013-12-03 10:54 ` Simon Wunderlich
2013-12-05 1:00 ` Antonio Quartulli
2013-12-05 14:20 ` [B.A.T.M.A.N.] [PATCHv2 next " Antonio Quartulli
2013-12-05 14:30 ` Antonio Quartulli
2013-12-02 19:38 ` [B.A.T.M.A.N.] [PATCH-next 4/4] batman-adv: fix size of batadv_bla_claim_dst Simon Wunderlich
2013-12-14 9:43 ` Marek Lindner
2013-12-12 5:42 ` [B.A.T.M.A.N.] [PATCH-next 1/4] batman-adv: fix alignment for batadv_coded_packet Marek Lindner
2013-12-15 15:38 ` Antonio Quartulli [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=52ADCCF7.80109@meshcoding.com \
--to=antonio@meshcoding.com \
--cc=b.a.t.m.a.n@lists.open-mesh.org \
--cc=mareklindner@neomailbox.ch \
/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.