Dual-rate transceivers with ixgbe?

Alexander Sack pisymbol at gmail.com
Thu Jun 10 21:25:13 UTC 2010


On Thu, Jun 10, 2010 at 5:12 PM, Andrew Boyer <aboyer at averesystems.com> wrote:
>
> On Jun 10, 2010, at 3:59 PM, Alexander Sack wrote:
>>
>>> One thing that the base driver probably ought to do is not fail in
>>> attach if there's an unrecognized SFP+ module.  Since we get
>>> interrupts on module change (although this doesn't seem to always work
>>> *entirely* right in the stock sources, mostly wrt stored values of
>>> AUTOC and the like) it should be possible to bring the interface up
>>> with the unsupported (and disabled) SFP+ module and do the SFP+ module
>>> probing we already do on hot-swap.
>>
>> Alright, let me see if I can test that.  Let me rephrase so I validate
>> what you are saying:
>>
>> The driver can come up with an unsupported module but disable the
>> interface (ifconfig shows the interface, etc.).
>>
>> If you then hot-swap a supported SFP, it should come up then with a
>> ifconfig down/up cycle.  Right?
>>
>> As it stand now, if you load the driver with an unsupported module, it
>> will not attach at all causing you to reload the entire driver OR
>> reboot the box to have it reattach to the other SFP.
>>
>
> We use this patch to allow the driver to attach when no module is installed.  This might be a starting point for you.  I haven't tested it without all of our other changes in place so my apologies if it doesn't quite work.  We only have Intel modules around for testing.
>
> -Andrew
>
> --- ixgbe.c     2010-06-10 16:53:08.000000000 -0400
> +++ ixgbe.c     2010-06-10 16:55:26.000000000 -0400
> @@ -566,7 +566,7 @@
>        } else if (error == IXGBE_ERR_SFP_NOT_SUPPORTED)
>                device_printf(dev,"Unsupported SFP+ Module\n");
>
> -       if (error) {
> +       if (error && error != IXGBE_ERR_SFP_NOT_PRESENT) {
>                error = EIO;
>                device_printf(dev,"Hardware Initialization Failure\n");
>                goto err_late;
>
> --- ixgbe_82598.c       2010-06-10 16:53:24.000000000 -0400
> +++ ixgbe_82598.c       2010-06-10 16:56:31.000000000 -0400
> @@ -257,10 +257,6 @@
>                ret_val = ixgbe_get_sfp_init_sequence_offsets(hw,
>                                                            &list_offset,
>                                                            &data_offset);
> -               if (ret_val != IXGBE_SUCCESS) {
> -                       ret_val = IXGBE_ERR_SFP_NOT_SUPPORTED;
> -                       goto out;
> -               }
>                break;
>        default:
>                break;

Thank you Andrew!  I am on the same path as above! (though I also had
82599 changes which may not be meaningful to your application).

I will have access to numerous SFP/SFP+ very soon (all Finisar based -
though I think the Intel supplied ones are Finisar too anyway).   I
will test the dual-rate as well with both 10G and 1G traffic.

Stay tuned, I want to test all of this in the lab.

-aps


More information about the freebsd-net mailing list