On Thu, Jun 10, 2010 at 5:12 PM, Andrew Boyer <abo...@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 _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"