Skip to content

Commit

Permalink
IPoIB: Specify Traffic Class with path record queries for QoS support
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sean Hefty authored and Roland Dreier committed Oct 10, 2007
1 parent 08c283a commit 8166883
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
22 changes: 21 additions & 1 deletion drivers/infiniband/ulp/ipoib/ipoib.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,27 @@ struct ipoib_pseudoheader {
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 sk_buff *skb;
Expand Down
8 changes: 5 additions & 3 deletions drivers/infiniband/ulp/ipoib/ipoib_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -468,9 +468,10 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid)
INIT_LIST_HEAD(&path->neigh_list);

memcpy(path->pathrec.dgid.raw, gid, sizeof (union ib_gid));
path->pathrec.sgid = priv->local_gid;
path->pathrec.pkey = cpu_to_be16(priv->pkey);
path->pathrec.numb_path = 1;
path->pathrec.sgid = priv->local_gid;
path->pathrec.pkey = cpu_to_be16(priv->pkey);
path->pathrec.numb_path = 1;
path->pathrec.traffic_class = priv->broadcast->mcmember.traffic_class;

return path;
}
Expand All @@ -491,6 +492,7 @@ static int path_rec_start(struct net_device *dev,
IB_SA_PATH_REC_DGID |
IB_SA_PATH_REC_SGID |
IB_SA_PATH_REC_NUMB_PATH |
IB_SA_PATH_REC_TRAFFIC_CLASS |
IB_SA_PATH_REC_PKEY,
1000, GFP_ATOMIC,
path_rec_completion,
Expand Down
22 changes: 0 additions & 22 deletions drivers/infiniband/ulp/ipoib/ipoib_multicast.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,28 +57,6 @@ MODULE_PARM_DESC(mcast_debug_level,

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 net_device *dev;
union ib_gid mgid;
Expand Down

0 comments on commit 8166883

Please sign in to comment.