Commit 81668838 authored by Sean Hefty's avatar Sean Hefty Committed by Roland Dreier

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: default avatarSean 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: default avatarOr Gerlitz <ogerlitz@voltaire.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 08c283ac
...@@ -113,7 +113,27 @@ struct ipoib_pseudoheader { ...@@ -113,7 +113,27 @@ struct ipoib_pseudoheader {
u8 hwaddr[INFINIBAND_ALEN]; u8 hwaddr[INFINIBAND_ALEN];
}; };
struct ipoib_mcast; /* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
struct ipoib_mcast {
struct ib_sa_mcmember_rec mcmember;
struct ib_sa_multicast *mc;
struct ipoib_ah *ah;
struct rb_node rb_node;
struct list_head list;
unsigned long created;
unsigned long backoff;
unsigned long flags;
unsigned char logcount;
struct list_head neigh_list;
struct sk_buff_head pkt_queue;
struct net_device *dev;
};
struct ipoib_rx_buf { struct ipoib_rx_buf {
struct sk_buff *skb; struct sk_buff *skb;
......
...@@ -471,6 +471,7 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid) ...@@ -471,6 +471,7 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid)
path->pathrec.sgid = priv->local_gid; path->pathrec.sgid = priv->local_gid;
path->pathrec.pkey = cpu_to_be16(priv->pkey); path->pathrec.pkey = cpu_to_be16(priv->pkey);
path->pathrec.numb_path = 1; path->pathrec.numb_path = 1;
path->pathrec.traffic_class = priv->broadcast->mcmember.traffic_class;
return path; return path;
} }
...@@ -491,6 +492,7 @@ static int path_rec_start(struct net_device *dev, ...@@ -491,6 +492,7 @@ static int path_rec_start(struct net_device *dev,
IB_SA_PATH_REC_DGID | IB_SA_PATH_REC_DGID |
IB_SA_PATH_REC_SGID | IB_SA_PATH_REC_SGID |
IB_SA_PATH_REC_NUMB_PATH | IB_SA_PATH_REC_NUMB_PATH |
IB_SA_PATH_REC_TRAFFIC_CLASS |
IB_SA_PATH_REC_PKEY, IB_SA_PATH_REC_PKEY,
1000, GFP_ATOMIC, 1000, GFP_ATOMIC,
path_rec_completion, path_rec_completion,
......
...@@ -57,28 +57,6 @@ MODULE_PARM_DESC(mcast_debug_level, ...@@ -57,28 +57,6 @@ MODULE_PARM_DESC(mcast_debug_level,
static DEFINE_MUTEX(mcast_mutex); static DEFINE_MUTEX(mcast_mutex);
/* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
struct ipoib_mcast {
struct ib_sa_mcmember_rec mcmember;
struct ib_sa_multicast *mc;
struct ipoib_ah *ah;
struct rb_node rb_node;
struct list_head list;
unsigned long created;
unsigned long backoff;
unsigned long flags;
unsigned char logcount;
struct list_head neigh_list;
struct sk_buff_head pkt_queue;
struct net_device *dev;
};
struct ipoib_mcast_iter { struct ipoib_mcast_iter {
struct net_device *dev; struct net_device *dev;
union ib_gid mgid; union ib_gid mgid;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment