aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp/ipoib/ipoib.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib.h')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib.h27
1 files changed, 17 insertions, 10 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 2f85a9a831b1..b640107fb732 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -72,13 +72,14 @@ enum {
72 IPOIB_MAX_MCAST_QUEUE = 3, 72 IPOIB_MAX_MCAST_QUEUE = 3,
73 73
74 IPOIB_FLAG_OPER_UP = 0, 74 IPOIB_FLAG_OPER_UP = 0,
75 IPOIB_FLAG_ADMIN_UP = 1, 75 IPOIB_FLAG_INITIALIZED = 1,
76 IPOIB_PKEY_ASSIGNED = 2, 76 IPOIB_FLAG_ADMIN_UP = 2,
77 IPOIB_PKEY_STOP = 3, 77 IPOIB_PKEY_ASSIGNED = 3,
78 IPOIB_FLAG_SUBINTERFACE = 4, 78 IPOIB_PKEY_STOP = 4,
79 IPOIB_MCAST_RUN = 5, 79 IPOIB_FLAG_SUBINTERFACE = 5,
80 IPOIB_STOP_REAPER = 6, 80 IPOIB_MCAST_RUN = 6,
81 IPOIB_MCAST_STARTED = 7, 81 IPOIB_STOP_REAPER = 7,
82 IPOIB_MCAST_STARTED = 8,
82 83
83 IPOIB_MAX_BACKOFF_SECONDS = 16, 84 IPOIB_MAX_BACKOFF_SECONDS = 16,
84 85
@@ -217,10 +218,16 @@ struct ipoib_neigh {
217 struct list_head list; 218 struct list_head list;
218}; 219};
219 220
221/*
222 * We stash a pointer to our private neighbour information after our
223 * hardware address in neigh->ha. The ALIGN() expression here makes
224 * sure that this pointer is stored aligned so that an unaligned
225 * load is not needed to dereference it.
226 */
220static inline struct ipoib_neigh **to_ipoib_neigh(struct neighbour *neigh) 227static inline struct ipoib_neigh **to_ipoib_neigh(struct neighbour *neigh)
221{ 228{
222 return (struct ipoib_neigh **) (neigh->ha + 24 - 229 return (void*) neigh + ALIGN(offsetof(struct neighbour, ha) +
223 (offsetof(struct neighbour, ha) & 4)); 230 INFINIBAND_ALEN, sizeof(void *));
224} 231}
225 232
226extern struct workqueue_struct *ipoib_workqueue; 233extern struct workqueue_struct *ipoib_workqueue;
@@ -253,7 +260,7 @@ void ipoib_ib_dev_cleanup(struct net_device *dev);
253 260
254int ipoib_ib_dev_open(struct net_device *dev); 261int ipoib_ib_dev_open(struct net_device *dev);
255int ipoib_ib_dev_up(struct net_device *dev); 262int ipoib_ib_dev_up(struct net_device *dev);
256int ipoib_ib_dev_down(struct net_device *dev); 263int ipoib_ib_dev_down(struct net_device *dev, int flush);
257int ipoib_ib_dev_stop(struct net_device *dev); 264int ipoib_ib_dev_stop(struct net_device *dev);
258 265
259int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port); 266int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port);