svn commit: r214439 -
projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib
Jeff Roberson
jeff at FreeBSD.org
Wed Oct 27 23:24:38 UTC 2010
Author: jeff
Date: Wed Oct 27 23:24:37 2010
New Revision: 214439
URL: http://svn.freebsd.org/changeset/base/214439
Log:
- Correct the ipoib gid debug prints.
- Fix the length supplied to ipoib_multicast_addr_valid.
Sponsored by: Isilon Systems, iX Systems, and Panasas.
Modified:
projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
==============================================================================
--- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Wed Oct 27 23:23:17 2010 (r214438)
+++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Wed Oct 27 23:24:37 2010 (r214439)
@@ -468,6 +468,7 @@ void ipoib_mcast_carrier_on_task(struct
void ipoib_mcast_send(struct ifnet *dev, void *mgid, struct mbuf *mb);
void ipoib_mcast_restart_task(struct work_struct *work);
+void ipoib_mcast_restart(struct ipoib_dev_priv *);
int ipoib_mcast_start_thread(struct ifnet *dev);
int ipoib_mcast_stop_thread(struct ifnet *dev, int flush);
Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
==============================================================================
--- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Wed Oct 27 23:23:17 2010 (r214438)
+++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Wed Oct 27 23:24:37 2010 (r214439)
@@ -428,9 +428,9 @@ ipoib_mark_paths_invalid(struct ifnet *d
spin_lock_irq(&priv->lock);
list_for_each_entry_safe(path, tp, &priv->path_list, list) {
- ipoib_dbg(priv, "mark path LID 0x%04x GID %pI6 invalid\n",
+ ipoib_dbg(priv, "mark path LID 0x%04x GID %16D invalid\n",
be16_to_cpu(path->pathrec.dlid),
- path->pathrec.dgid.raw);
+ path->pathrec.dgid.raw, ":");
path->valid = 0;
}
@@ -477,11 +477,11 @@ path_rec_completion(int status, struct i
unsigned long flags;
if (!status)
- ipoib_dbg(priv, "PathRec LID 0x%04x for GID %pI6\n",
- be16_to_cpu(pathrec->dlid), pathrec->dgid.raw);
+ ipoib_dbg(priv, "PathRec LID 0x%04x for GID %16D\n",
+ be16_to_cpu(pathrec->dlid), pathrec->dgid.raw, ":");
else
- ipoib_dbg(priv, "PathRec status %d for GID %pI6\n",
- status, path->pathrec.dgid.raw);
+ ipoib_dbg(priv, "PathRec status %d for GID %16D\n",
+ status, path->pathrec.dgid.raw, ":");
bzero(&mbqueue, sizeof(mbqueue));
@@ -596,8 +596,8 @@ path_rec_start(struct ifnet *dev, struct
p_rec.mtu_selector = 0;
}
- ipoib_dbg(priv, "Start path record lookup for %pI6 MTU > %d\n",
- p_rec.dgid.raw,
+ ipoib_dbg(priv, "Start path record lookup for %16D MTU > %d\n",
+ p_rec.dgid.raw, ":",
comp_mask ? ib_mtu_enum_to_int(p_rec.mtu) : 0);
init_completion(&path->done);
Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
==============================================================================
--- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c Wed Oct 27 23:23:17 2010 (r214438)
+++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c Wed Oct 27 23:24:37 2010 (r214439)
@@ -61,8 +61,8 @@ static void ipoib_mcast_free(struct ipoi
struct ifnet *dev = mcast->dev;
int tx_dropped = 0;
- ipoib_dbg_mcast(dev->if_softc, "deleting multicast group %pI6\n",
- mcast->mcmember.mgid.raw);
+ ipoib_dbg_mcast(dev->if_softc, "deleting multicast group %16D\n",
+ mcast->mcmember.mgid.raw, ":");
if (mcast->ah)
ipoib_put_ah(mcast->ah);
@@ -173,8 +173,8 @@ static int ipoib_mcast_join_finish(struc
if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
if (test_and_set_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags)) {
- ipoib_warn(priv, "multicast group %pI6 already attached\n",
- mcast->mcmember.mgid.raw);
+ ipoib_warn(priv, "multicast group %16D already attached\n",
+ mcast->mcmember.mgid.raw, ":");
return 0;
}
@@ -182,8 +182,8 @@ static int ipoib_mcast_join_finish(struc
ret = ipoib_mcast_attach(dev, be16_to_cpu(mcast->mcmember.mlid),
&mcast->mcmember.mgid, set_qkey);
if (ret < 0) {
- ipoib_warn(priv, "couldn't attach QP to multicast group %pI6\n",
- mcast->mcmember.mgid.raw);
+ ipoib_warn(priv, "couldn't attach QP to multicast group %16D\n",
+ mcast->mcmember.mgid.raw, ":");
clear_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags);
return ret;
@@ -214,8 +214,8 @@ static int ipoib_mcast_join_finish(struc
mcast->ah = ah;
spin_unlock_irq(&priv->lock);
- ipoib_dbg_mcast(priv, "MGID %pI6 AV %p, LID 0x%04x, SL %d\n",
- mcast->mcmember.mgid.raw,
+ ipoib_dbg_mcast(priv, "MGID %16D AV %p, LID 0x%04x, SL %d\n",
+ mcast->mcmember.mgid.raw, ":",
mcast->ah->ah,
be16_to_cpu(mcast->mcmember.mlid),
mcast->mcmember.sl);
@@ -252,8 +252,8 @@ ipoib_mcast_sendonly_join_complete(int s
if (status) {
if (mcast->logcount++ < 20)
- ipoib_dbg_mcast(dev->if_softc, "multicast join failed for %pI6, status %d\n",
- mcast->mcmember.mgid.raw, status);
+ ipoib_dbg_mcast(dev->if_softc, "multicast join failed for %16D, status %d\n",
+ mcast->mcmember.mgid.raw, ":", status);
/* Flush out any queued packets */
dev->if_oerrors += mcast->pkt_queue.ifq_len;
@@ -308,8 +308,8 @@ static int ipoib_mcast_sendonly_join(str
ipoib_warn(priv, "ib_sa_join_multicast failed (ret = %d)\n",
ret);
} else {
- ipoib_dbg_mcast(priv, "no multicast record for %pI6, starting join\n",
- mcast->mcmember.mgid.raw);
+ ipoib_dbg_mcast(priv, "no multicast record for %16D, starting join\n",
+ mcast->mcmember.mgid.raw, ":");
}
return ret;
@@ -340,8 +340,8 @@ static int ipoib_mcast_join_complete(int
struct ifnet *dev = mcast->dev;
struct ipoib_dev_priv *priv = dev->if_softc;
- ipoib_dbg_mcast(priv, "join completion for %pI6 (status %d)\n",
- mcast->mcmember.mgid.raw, status);
+ ipoib_dbg_mcast(priv, "join completion for %16D (status %d)\n",
+ mcast->mcmember.mgid.raw, ":", status);
/* We trap for port events ourselves. */
if (status == -ENETRESET)
@@ -370,11 +370,11 @@ static int ipoib_mcast_join_complete(int
if (mcast->logcount++ < 20) {
if (status == -ETIMEDOUT || status == -EAGAIN) {
- ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n",
- mcast->mcmember.mgid.raw, status);
+ ipoib_dbg_mcast(priv, "multicast join failed for %16D, status %d\n",
+ mcast->mcmember.mgid.raw, ":", status);
} else {
- ipoib_warn(priv, "multicast join failed for %pI6, status %d\n",
- mcast->mcmember.mgid.raw, status);
+ ipoib_warn(priv, "multicast join failed for %16D, status %d\n",
+ mcast->mcmember.mgid.raw, ":", status);
}
}
@@ -406,7 +406,8 @@ static void ipoib_mcast_join(struct ifne
ib_sa_comp_mask comp_mask;
int ret = 0;
- ipoib_dbg_mcast(priv, "joining MGID %pI6\n", mcast->mcmember.mgid.raw);
+ ipoib_dbg_mcast(priv, "joining MGID %16D\n",
+ mcast->mcmember.mgid.raw, ":");
rec.mgid = mcast->mcmember.mgid;
rec.port_gid = priv->local_gid;
@@ -605,8 +606,8 @@ static int ipoib_mcast_leave(struct ifne
ib_sa_free_multicast(mcast->mc);
if (test_and_clear_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags)) {
- ipoib_dbg_mcast(priv, "leaving MGID %pI6\n",
- mcast->mcmember.mgid.raw);
+ ipoib_dbg_mcast(priv, "leaving MGID %16D\n",
+ mcast->mcmember.mgid.raw, ":");
/* Remove ourselves from the multicast group */
ret = ib_detach_mcast(priv->qp, &mcast->mcmember.mgid,
@@ -635,8 +636,8 @@ ipoib_mcast_send(struct ifnet *dev, void
mcast = __ipoib_mcast_find(dev, mgid);
if (!mcast) {
/* Let's create a new send only group now */
- ipoib_dbg_mcast(priv, "setting up send only multicast group for %pI6\n",
- mgid);
+ ipoib_dbg_mcast(priv, "setting up send only multicast group for %16D\n",
+ mgid, ":");
mcast = ipoib_mcast_alloc(dev, 0);
if (!mcast) {
@@ -728,11 +729,17 @@ void ipoib_mcast_restart_task(struct wor
{
struct ipoib_dev_priv *priv =
container_of(work, struct ipoib_dev_priv, restart_task);
+ ipoib_mcast_restart(priv);
+}
+
+void ipoib_mcast_restart(struct ipoib_dev_priv *priv)
+{
struct ifnet *dev = priv->dev;
struct ifmultiaddr *ifma;;
struct ipoib_mcast *mcast, *tmcast;
LIST_HEAD(remove_list);
struct ib_sa_mcmember_rec rec;
+ int addrlen;
ipoib_dbg_mcast(priv, "restarting multicast task flags 0x%lX\n",
priv->flags);
@@ -762,8 +769,8 @@ void ipoib_mcast_restart_task(struct wor
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
addr = LLADDR((struct sockaddr_dl *)ifma->ifma_addr);
- if (!ipoib_mcast_addr_is_valid(addr,
- ifma->ifma_addr->sa_len,
+ addrlen = ((struct sockaddr_dl *)ifma->ifma_addr)->sdl_alen;
+ if (!ipoib_mcast_addr_is_valid(addr, addrlen,
dev->if_broadcastaddr))
continue;
@@ -776,14 +783,14 @@ void ipoib_mcast_restart_task(struct wor
/* ignore group which is directly joined by userspace */
if (test_bit(IPOIB_FLAG_UMCAST, &priv->flags) &&
!ib_sa_get_mcmember_rec(priv->ca, priv->port, &mgid, &rec)) {
- ipoib_dbg_mcast(priv, "ignoring multicast entry for mgid %pI6\n",
- mgid.raw);
+ ipoib_dbg_mcast(priv, "ignoring multicast entry for mgid %16D\n",
+ mgid.raw, ":");
continue;
}
/* Not found or send-only group, let's add a new entry */
- ipoib_dbg_mcast(priv, "adding multicast entry for mgid %pI6\n",
- mgid.raw);
+ ipoib_dbg_mcast(priv, "adding multicast entry for mgid %16D\n",
+ mgid.raw, ":");
nmcast = ipoib_mcast_alloc(dev, 0);
if (!nmcast) {
@@ -816,8 +823,8 @@ void ipoib_mcast_restart_task(struct wor
list_for_each_entry_safe(mcast, tmcast, &priv->multicast_list, list) {
if (!test_bit(IPOIB_MCAST_FLAG_FOUND, &mcast->flags) &&
!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
- ipoib_dbg_mcast(priv, "deleting multicast group %pI6\n",
- mcast->mcmember.mgid.raw);
+ ipoib_dbg_mcast(priv, "deleting multicast group %16D\n",
+ mcast->mcmember.mgid.raw, ":");
rb_erase(&mcast->rb_node, &priv->multicast_tree);
More information about the svn-src-projects
mailing list