Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Nov 2012 15:53:13 -0800
From:      Garrett Cooper <yanegomi@gmail.com>
To:        John Nielsen <lists@jnielsen.net>
Cc:        freebsd-infiniband@freebsd.org
Subject:   Re: using ConnectX card as Ethernet (mlxen)
Message-ID:  <CAGH67wTVH2TmfDvqy-ZKs6Ge=T-sbARmwJ-Jw2RK8JtWjK=LGg@mail.gmail.com>
In-Reply-To: <53A5EDFD-B2C5-4E24-9AB9-5504AA693602@jnielsen.net>
References:  <3A359B33-380C-4230-A62C-623765E9376A@jnielsen.net> <FB2BC2D5-46CC-4CF6-8EC8-5C2836253D14@jnielsen.net> <CAGH67wRDDjkLxJhQwYFnez2bpV6gTDPi2WMC58W6oURDH15WKQ@mail.gmail.com> <53A5EDFD-B2C5-4E24-9AB9-5504AA693602@jnielsen.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Nov 14, 2012 at 3:32 PM, John Nielsen <lists@jnielsen.net> wrote:

> On Nov 9, 2012, at 9:51 PM, Garrett Cooper <yanegomi@gmail.com> wrote:
>
> > On Fri, Nov 9, 2012 at 7:44 PM, John Nielsen <lists@jnielsen.net> wrote:
> > On the off chance there's someone on this list already that didn't see
> my earlier (unanswered) question, I'm reposting it below. I don't have
> FreeBSD on this hardware any more but I would like to know for future
> reference if using these cards with an Ethernet switch is an option.
> >
> >     I know this might seem dumb, but what if you did
> sys.device.mlx4_core0.mlx4_port1="`printf 'en\n'`" (the newline's
> important).
>
> I'll try it next time I have an opportunity. Can you explain why the
> newline might make a difference? Also, I don't think I ever tried 'en',
> just 'eth'. Can someone say what the right value is or should be?
>

It was a WAG based on this section of code (from
sys/ofed/drivers/net/mlx4/main.c)...

 469 static ssize_t set_port_type(struct device *dev,
 470                              struct device_attribute *attr,
 471                              const char *buf, size_t count)
 472 {
 473         struct mlx4_port_info *info = container_of(attr, struct
mlx4_port_i     nfo,
 474                                                    port_attr);
 475         struct mlx4_dev *mdev = info->dev;
 476         struct mlx4_priv *priv = mlx4_priv(mdev);
 477         enum mlx4_port_type types[MLX4_MAX_PORTS];
 478         enum mlx4_port_type new_types[MLX4_MAX_PORTS];
 479         int i;
 480         int err = 0;
 481
 482         if (!strcmp(buf, "ib\n"))
 483                 info->tmp_type = MLX4_PORT_TYPE_IB;
 484         else if (!strcmp(buf, "eth\n"))
 485                 info->tmp_type = MLX4_PORT_TYPE_ETH;
 486         else if (!strcmp(buf, "auto\n"))
 487                 info->tmp_type = MLX4_PORT_TYPE_AUTO;
 488         else {
 489                 mlx4_err(mdev, "%s is not supported port type\n", buf);
 490                 return -EINVAL;
 491         }

I don't have one of these cards so I can't verify whether or not that's the
issue today, but it seemed like a likely cause.

This being there is probably the remnant of a pseudo-valid hacky assumption
on Linux (you're echo'ing to a sysfs node and it's tacking on a newline),
but an invalid assumption on FreeBSD (the sysctl<->sysfs compat layer
doesn't make any translation assumptions w.r.t. newlines, etc).

Thanks!
-Garrett



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGH67wTVH2TmfDvqy-ZKs6Ge=T-sbARmwJ-Jw2RK8JtWjK=LGg>