diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib.h')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib.h | 27 |
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 | */ | ||
220 | static inline struct ipoib_neigh **to_ipoib_neigh(struct neighbour *neigh) | 227 | static 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 | ||
226 | extern struct workqueue_struct *ipoib_workqueue; | 233 | extern struct workqueue_struct *ipoib_workqueue; |
@@ -253,7 +260,7 @@ void ipoib_ib_dev_cleanup(struct net_device *dev); | |||
253 | 260 | ||
254 | int ipoib_ib_dev_open(struct net_device *dev); | 261 | int ipoib_ib_dev_open(struct net_device *dev); |
255 | int ipoib_ib_dev_up(struct net_device *dev); | 262 | int ipoib_ib_dev_up(struct net_device *dev); |
256 | int ipoib_ib_dev_down(struct net_device *dev); | 263 | int ipoib_ib_dev_down(struct net_device *dev, int flush); |
257 | int ipoib_ib_dev_stop(struct net_device *dev); | 264 | int ipoib_ib_dev_stop(struct net_device *dev); |
258 | 265 | ||
259 | int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port); | 266 | int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port); |