Skip to content

Commit

Permalink
bonding: Fix LACPDU rx_dropped commit.
Browse files Browse the repository at this point in the history
I applied the wrong version of Jiri's bonding fix in commit
13a8e0c ("bonding: don't increase
rx_dropped after processing LACPDUs")

I applied v3, which introduces warnings I asked him to fix,
instead of v4 which properly takes care of those issues.

This inter-diffs such that the warnings are now gone.

Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
davem330 committed May 13, 2012
1 parent cf00c55 commit b99215c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
12 changes: 7 additions & 5 deletions drivers/net/bonding/bond_alb.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,33 +342,35 @@ static void rlb_update_entry_from_arp(struct bonding *bond, struct arp_pkt *arp)
_unlock_rx_hashtbl_bh(bond);
}

static void rlb_arp_recv(struct sk_buff *skb, struct bonding *bond,
static int rlb_arp_recv(struct sk_buff *skb, struct bonding *bond,
struct slave *slave)
{
struct arp_pkt *arp;

if (skb->protocol != cpu_to_be16(ETH_P_ARP))
return;
goto out;

arp = (struct arp_pkt *) skb->data;
if (!arp) {
pr_debug("Packet has no ARP data\n");
return;
goto out;
}

if (!pskb_may_pull(skb, arp_hdr_len(bond->dev)))
return;
goto out;

if (skb->len < sizeof(struct arp_pkt)) {
pr_debug("Packet is too small to be an ARP\n");
return;
goto out;
}

if (arp->op_code == htons(ARPOP_REPLY)) {
/* update rx hash table for this ARP */
rlb_update_entry_from_arp(bond, arp);
pr_debug("Server received an ARP Reply from client\n");
}
out:
return RX_HANDLER_ANOTHER;
}

/* Caller must hold bond lock for read */
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/bonding/bonding.h
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ struct bonding {
struct slave *primary_slave;
bool force_primary;
s32 slave_cnt; /* never change this value outside the attach/detach wrappers */
void (*recv_probe)(struct sk_buff *, struct bonding *,
int (*recv_probe)(struct sk_buff *, struct bonding *,
struct slave *);
rwlock_t lock;
rwlock_t curr_slave_lock;
Expand Down

0 comments on commit b99215c

Please sign in to comment.