[ofa-general] Re: [RFC] [PATCH 1/5 v3] ib/ipoib: specify Traffic Class with PR queries for QoS support

Or Gerlitz ogerlitz at voltaire.com
Sun Sep 16 02:04:54 PDT 2007


Sean Hefty wrote:
> 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 at 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 at voltaire.com>

> ---
> Added missing traffic class to PR component mask.
> 
>  drivers/infiniband/ulp/ipoib/ipoib.h           |   22 
> +++++++++++++++++++++-
>  drivers/infiniband/ulp/ipoib/ipoib_main.c      |    8 +++++---
>  drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   22 
> ----------------------
>  3 files changed, 26 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h 
> b/drivers/infiniband/ulp/ipoib/ipoib.h
> index 285c143..fc16bce 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib.h
> +++ b/drivers/infiniband/ulp/ipoib/ipoib.h
> @@ -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;
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c 
> b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> index 894b1dc..841e068 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)
>         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;
>  }
> @@ -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,
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> index aae3670..94a5709 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,
> 
>  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;
> 





More information about the general mailing list