• Jeffrey Lee's avatar
    Improvements to SMSC 95xx backend and common MII handling · 0c3e4b43
    Jeffrey Lee authored
      c/smsc95xx - Convert code to use the common MII backend. Reduce verbosity of debug output. Fix two sets of status callbacks running (callback_status_adapter + device_status). Tweak/refactor a couple of other bits as necessary in order to get 10M links working reliably.
      c/mii, h/mii, h/net - Allow backends to indicate their level of support for PAUSE functionality, so that we can advertise it correctly when performing auto-negotiation (previously no pause ability would have been advertised)
      c/config - Ensure config_parse_arguments passes through the PAUSE capabilities to the output net_config_t. Use the (currently unused) ERR_BAD_CONFIG for if autonegotiation is disabled but either speed or duplex setting not specified (avoids MII code or backends getting confused as to what options they should use)
      Resources/UK/Messages - Tweak wording of ERR_BAD_CONFIG so that it's more sensible for the new usage
      doc/!ReadMe - Remove the note about 10M links not being supported by the SMSC 95xx backend. Update the changelog to point people towards CVS for recent changes.
      Tested on PandaBoard + Raspberry Pi 3, using SMSC 95xx and AX88772 devices
      SMSC testing results:
      * Previously, 10M links were non-functional
      * Previously, manually-configured 100M full duplex links would suffer terrible performance
      * Previously, any attempt to reconfigure a link on Pi 3 would result in a "Device broken or misbehaving" error? (or at least, that's how 0.38 is behaving for me now)
      * Now, all combinations of configuration (speed + link + auto/noauto) appear to work correctly, except for manually-configured full-duplex links, which still suffer from terrible performance
      AX88772 was used to verify MII changes haven't broken anything for other backends; testing showed no significant differences to previous version (all speed + link + auto/noauto modes working)
      Resolves ticket #342:
      Note that currently the SMSC 95xx backend is the only backend to advertise PAUSE functionality via the common MII code; a future improvement would be to set up the other backends appropriately (set correct flags in net_abilities_t)
    Version 0.39. Tagged as 'EtherUSB-0_39'