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;


--------------------------------------------------
Andrew Boyer    abo...@averesystems.com




_______________________________________________
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"

Reply via email to