diff options
author | Hal Rosenstock <halr@voltaire.com> | 2005-07-28 16:17:26 -0400 |
---|---|---|
committer | Roland Dreier <roland@eddore.topspincom.com> | 2005-07-28 16:17:26 -0400 |
commit | 0dca0f7bf82face7b700890318d5550fd542cabf (patch) | |
tree | 38f7a290fcca12bb13c7af19c5dafb99ca3bcaaa /drivers/infiniband/ulp/ipoib/ipoib_main.c | |
parent | 4e38d36d88ead4e56f3155573976da84d5df18b3 (diff) |
[PATCH] [IPoIB] Handle sending of unicast RARP responses
RARP replies are another valid case where IPoIB may need to send a
unicast packet with no neighbour structure.
Signed-off-by: Hal Rosenstock <halr@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_main.c')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 6f60abbaebd5..fa00816a3cf7 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -600,9 +600,10 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
600 | 600 | ||
601 | ipoib_mcast_send(dev, (union ib_gid *) (phdr->hwaddr + 4), skb); | 601 | ipoib_mcast_send(dev, (union ib_gid *) (phdr->hwaddr + 4), skb); |
602 | } else { | 602 | } else { |
603 | /* unicast GID -- should be ARP reply */ | 603 | /* unicast GID -- should be ARP or RARP reply */ |
604 | 604 | ||
605 | if (be16_to_cpup((u16 *) skb->data) != ETH_P_ARP) { | 605 | if ((be16_to_cpup((__be16 *) skb->data) != ETH_P_ARP) && |
606 | (be16_to_cpup((__be16 *) skb->data) != ETH_P_RARP)) { | ||
606 | ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x " | 607 | ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x " |
607 | IPOIB_GID_FMT "\n", | 608 | IPOIB_GID_FMT "\n", |
608 | skb->dst ? "neigh" : "dst", | 609 | skb->dst ? "neigh" : "dst", |