Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Minor comment merge conflict in mlx5. Staging driver has a fixup due to the skb->xmit_more changes in 'net-next', but was removed in 'net'. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -109,6 +109,15 @@ static void netvsc_set_rx_mode(struct net_device *net)
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
static void netvsc_tx_enable(struct netvsc_device *nvscdev,
|
||||
struct net_device *ndev)
|
||||
{
|
||||
nvscdev->tx_disable = false;
|
||||
virt_wmb(); /* ensure queue wake up mechanism is on */
|
||||
|
||||
netif_tx_wake_all_queues(ndev);
|
||||
}
|
||||
|
||||
static int netvsc_open(struct net_device *net)
|
||||
{
|
||||
struct net_device_context *ndev_ctx = netdev_priv(net);
|
||||
@@ -129,7 +138,7 @@ static int netvsc_open(struct net_device *net)
|
||||
rdev = nvdev->extension;
|
||||
if (!rdev->link_state) {
|
||||
netif_carrier_on(net);
|
||||
netif_tx_wake_all_queues(net);
|
||||
netvsc_tx_enable(nvdev, net);
|
||||
}
|
||||
|
||||
if (vf_netdev) {
|
||||
@@ -184,6 +193,17 @@ static int netvsc_wait_until_empty(struct netvsc_device *nvdev)
|
||||
}
|
||||
}
|
||||
|
||||
static void netvsc_tx_disable(struct netvsc_device *nvscdev,
|
||||
struct net_device *ndev)
|
||||
{
|
||||
if (nvscdev) {
|
||||
nvscdev->tx_disable = true;
|
||||
virt_wmb(); /* ensure txq will not wake up after stop */
|
||||
}
|
||||
|
||||
netif_tx_disable(ndev);
|
||||
}
|
||||
|
||||
static int netvsc_close(struct net_device *net)
|
||||
{
|
||||
struct net_device_context *net_device_ctx = netdev_priv(net);
|
||||
@@ -192,7 +212,7 @@ static int netvsc_close(struct net_device *net)
|
||||
struct netvsc_device *nvdev = rtnl_dereference(net_device_ctx->nvdev);
|
||||
int ret;
|
||||
|
||||
netif_tx_disable(net);
|
||||
netvsc_tx_disable(nvdev, net);
|
||||
|
||||
/* No need to close rndis filter if it is removed already */
|
||||
if (!nvdev)
|
||||
@@ -918,7 +938,7 @@ static int netvsc_detach(struct net_device *ndev,
|
||||
|
||||
/* If device was up (receiving) then shutdown */
|
||||
if (netif_running(ndev)) {
|
||||
netif_tx_disable(ndev);
|
||||
netvsc_tx_disable(nvdev, ndev);
|
||||
|
||||
ret = rndis_filter_close(nvdev);
|
||||
if (ret) {
|
||||
@@ -1906,7 +1926,7 @@ static void netvsc_link_change(struct work_struct *w)
|
||||
if (rdev->link_state) {
|
||||
rdev->link_state = false;
|
||||
netif_carrier_on(net);
|
||||
netif_tx_wake_all_queues(net);
|
||||
netvsc_tx_enable(net_device, net);
|
||||
} else {
|
||||
notify = true;
|
||||
}
|
||||
@@ -1916,7 +1936,7 @@ static void netvsc_link_change(struct work_struct *w)
|
||||
if (!rdev->link_state) {
|
||||
rdev->link_state = true;
|
||||
netif_carrier_off(net);
|
||||
netif_tx_stop_all_queues(net);
|
||||
netvsc_tx_disable(net_device, net);
|
||||
}
|
||||
kfree(event);
|
||||
break;
|
||||
@@ -1925,7 +1945,7 @@ static void netvsc_link_change(struct work_struct *w)
|
||||
if (!rdev->link_state) {
|
||||
rdev->link_state = true;
|
||||
netif_carrier_off(net);
|
||||
netif_tx_stop_all_queues(net);
|
||||
netvsc_tx_disable(net_device, net);
|
||||
event->event = RNDIS_STATUS_MEDIA_CONNECT;
|
||||
spin_lock_irqsave(&ndev_ctx->lock, flags);
|
||||
list_add(&event->list, &ndev_ctx->reconfig_events);
|
||||
|
Reference in New Issue
Block a user