• Jack F Vogel's avatar
    Part 2 of 2 New deltas for the 1G drivers. · fd33ce41
    Jack F Vogel authored
    There have still been intermittent problems with apparent TX
    hangs for some customers. These have been problematic to reproduce
    but I believe these changes will address them. Testing on a number
    of fronts have been positive.
    EM: there is an important 'chicken bit' fix for 82574 in the shared
    code this is supported in the core here.
        - The TX path has been tightened up to improve performance. In
          particular UDP with jumbo frames was having problems, and the
          changes here have improved that.
        - OACTIVE has been used more carefully on the theory that some
          hangs may be due to a problem in this interaction
        - Problems with the RX init code, the "lazy" allocation and
          ring initialization has been found to cause problems in some
          newer client systems, and as it really is not that big a win
          (its not in a hot path) it seems best to remove it.
        - HWTSO was broken when VLAN HWTAGGING or HWFILTER is used, I
          found this was due to an error in setting up the descriptors
          in em_xmit.
        - TX is also improved here. With multiqueue I realized its very
          important to handle OACTIVE only under the CORE lock so there
          are no races between the queues.
        - Flow Control handling was broken in a couple ways, I have changed
          and I hope improved that in this delta.
        - UDP also had a problem in the TX path here, it was change to
          improve that.
        - On some hardware, with the driver static, a weird stray interrupt
          seems to sometimes fire and cause a panic in the RX mbuf refresh
          code. This is addressed by setting interrupts late in the init
          path, and also to set all interrupts bits off at the start of that.