First commit, same as patch submitted to netdev on 04/22/2014.