Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 327391
b: refs/heads/master
c: 425f09a
h: refs/heads/master
i:
  327389: fb8f785
  327387: fbd25ec
  327383: 0937c92
  327375: a59f9e2
  327359: 7212347
v: v3
  • Loading branch information
Eric Dumazet authored and David S. Miller committed Aug 7, 2012
1 parent e2ccb99 commit 3ceb893
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e07b94f1352723994d8b588ac5ed8af91bcc9fb6
refs/heads/master: 425f09ab7d1c9da6ca4137dd639cb6fe3f8a88f3
10 changes: 7 additions & 3 deletions trunk/include/net/dst.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,11 +396,15 @@ static inline void dst_confirm(struct dst_entry *dst)
static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n,
struct sk_buff *skb)
{
struct hh_cache *hh;
const struct hh_cache *hh;

if (dst->pending_confirm) {
unsigned long now = jiffies;

if (unlikely(dst->pending_confirm)) {
n->confirmed = jiffies;
dst->pending_confirm = 0;
/* avoid dirtying neighbour */
if (n->confirmed != now)
n->confirmed = now;
}

hh = &n->hh;
Expand Down
14 changes: 9 additions & 5 deletions trunk/include/net/neighbour.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,18 +334,22 @@ static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb)
}
#endif

static inline int neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb)
static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb)
{
unsigned int seq;
int hh_len;

do {
int hh_alen;

seq = read_seqbegin(&hh->hh_lock);
hh_len = hh->hh_len;
hh_alen = HH_DATA_ALIGN(hh_len);
memcpy(skb->data - hh_alen, hh->hh_data, hh_alen);
if (likely(hh_len <= HH_DATA_MOD)) {
/* this is inlined by gcc */
memcpy(skb->data - HH_DATA_MOD, hh->hh_data, HH_DATA_MOD);
} else {
int hh_alen = HH_DATA_ALIGN(hh_len);

memcpy(skb->data - hh_alen, hh->hh_data, hh_alen);
}
} while (read_seqretry(&hh->hh_lock, seq));

skb_push(skb, hh_len);
Expand Down

0 comments on commit 3ceb893

Please sign in to comment.