aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorSean Hefty <sean.hefty@intel.com>2007-08-02 15:21:31 -0400
committerRoland Dreier <rolandd@cisco.com>2007-10-09 22:59:11 -0400
commit81668838c4583b19276b16382e0c61e21ef5adf0 (patch)
treeeae4f3250ea914332ed4e46ddbd267b858bedd4c /drivers/infiniband
parent08c283ac262d7ab21c5733ff469ff88985381ca9 (diff)
IPoIB: Specify Traffic Class with path record queries for QoS support
To support QoS within and between subnets, modify IPoIB to request specific Traffic Class values with path record queries, using the value associated with the IPoIB broadcast group. Signed-off-by: Sean Hefty <sean.hefty@intel.com> [ See some comments I made on this at v1 and v2 of the posts <http://lists.openfabrics.org/pipermail/general/2007-August/039275.html> <http://lists.openfabrics.org/pipermail/general/2007-September/040312.html> ] Reviewed-by: Or Gerlitz <ogerlitz@voltaire.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib.h22
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c8
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c22
3 files changed, 26 insertions, 26 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 285c143115cc..fc16bced8e54 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -113,7 +113,27 @@ struct ipoib_pseudoheader {
113 u8 hwaddr[INFINIBAND_ALEN]; 113 u8 hwaddr[INFINIBAND_ALEN];
114}; 114};
115 115
116struct ipoib_mcast; 116/* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
117struct ipoib_mcast {
118 struct ib_sa_mcmember_rec mcmember;
119 struct ib_sa_multicast *mc;
120 struct ipoib_ah *ah;
121
122 struct rb_node rb_node;
123 struct list_head list;
124
125 unsigned long created;
126 unsigned long backoff;
127
128 unsigned long flags;
129 unsigned char logcount;
130
131 struct list_head neigh_list;
132
133 struct sk_buff_head pkt_queue;
134
135 struct net_device *dev;
136};
117 137
118struct ipoib_rx_buf { 138struct ipoib_rx_buf {
119 struct sk_buff *skb; 139 struct sk_buff *skb;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 5f948b9a9943..900335a36e45 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -468,9 +468,10 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid)
468 INIT_LIST_HEAD(&path->neigh_list); 468 INIT_LIST_HEAD(&path->neigh_list);
469 469
470 memcpy(path->pathrec.dgid.raw, gid, sizeof (union ib_gid)); 470 memcpy(path->pathrec.dgid.raw, gid, sizeof (union ib_gid));
471 path->pathrec.sgid = priv->local_gid; 471 path->pathrec.sgid = priv->local_gid;
472 path->pathrec.pkey = cpu_to_be16(priv->pkey); 472 path->pathrec.pkey = cpu_to_be16(priv->pkey);
473 path->pathrec.numb_path = 1; 473 path->pathrec.numb_path = 1;
474 path->pathrec.traffic_class = priv->broadcast->mcmember.traffic_class;
474 475
475 return path; 476 return path;
476} 477}
@@ -491,6 +492,7 @@ static int path_rec_start(struct net_device *dev,
491 IB_SA_PATH_REC_DGID | 492 IB_SA_PATH_REC_DGID |
492 IB_SA_PATH_REC_SGID | 493 IB_SA_PATH_REC_SGID |
493 IB_SA_PATH_REC_NUMB_PATH | 494 IB_SA_PATH_REC_NUMB_PATH |
495 IB_SA_PATH_REC_TRAFFIC_CLASS |
494 IB_SA_PATH_REC_PKEY, 496 IB_SA_PATH_REC_PKEY,
495 1000, GFP_ATOMIC, 497 1000, GFP_ATOMIC,
496 path_rec_completion, 498 path_rec_completion,
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index aae367057a56..94a57097e2b4 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -57,28 +57,6 @@ MODULE_PARM_DESC(mcast_debug_level,
57 57
58static DEFINE_MUTEX(mcast_mutex); 58static DEFINE_MUTEX(mcast_mutex);
59 59
60/* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
61struct ipoib_mcast {
62 struct ib_sa_mcmember_rec mcmember;
63 struct ib_sa_multicast *mc;
64 struct ipoib_ah *ah;
65
66 struct rb_node rb_node;
67 struct list_head list;
68
69 unsigned long created;
70 unsigned long backoff;
71
72 unsigned long flags;
73 unsigned char logcount;
74
75 struct list_head neigh_list;
76
77 struct sk_buff_head pkt_queue;
78
79 struct net_device *dev;
80};
81
82struct ipoib_mcast_iter { 60struct ipoib_mcast_iter {
83 struct net_device *dev; 61 struct net_device *dev;
84 union ib_gid mgid; 62 union ib_gid mgid;