Skip to content
  • Krishna Kumar's avatar
    [NET]: qdisc_restart - readability changes plus one bug fix. · 6c1361a6
    Krishna Kumar authored
    
    
    New changes :
    
    - Incorporated Peter Waskiewicz's comments.
    - Re-added back one warning message (on driver returning wrong value).
    
    Previous changes :
    
    - Converted to use switch/case code which looks neater.
    
    - "if (ret == NETDEV_TX_LOCKED && lockless)" is buggy, and the lockless
      check should be removed, since driver will return NETDEV_TX_LOCKED only
      if lockless is true and driver has to do the locking. In the original
      code as well as the latest code, this code can result in a bug where
      if LLTX is not set for a driver (lockless == 0) but the driver is written
      wrongly to do a trylock (despite LLTX being set), the driver returns
      LOCKED. But since lockless is zero, the packet is requeue'd instead of
      calling collision code which will issue warning and free up the skb.
      Instead this skb will be retried with this driver next time, and the same
      result will ensue. Removing this check will catch these driver bugs instead
      of hiding the problem. I am keeping this change to readability section
      since :
      	a. it is confusing to check two things as it is; and
      	b. it is difficult to keep this check in the changed 'switch' code.
    
    - Changed some names, like try_get_tx_pkt to dev_dequeue_skb (as that is
      the work being done and easier to understand) and do_dev_requeue to
      dev_requeue_skb, merged handle_dev_cpu_collision and tx_islocked to
      dev_handle_collision (handle_dev_cpu_collision is a small routine with only
      one caller, so there is no need to have two separate routines which also
      results in getting rid of two macros, etc.
    
    - Removed an XXX comment as it should never fail (I suspect this was related
      to batch skb WIP, Jamal ?). Converted some functions to original coding
      style of having the return values and the function name on same line, eg
      prio2list.
    
    Signed-off-by: default avatarKrishna Kumar <krkumar2@in.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6c1361a6