提交 fed97810 编写于 作者: M Matt Carlson 提交者: David S. Miller

tg3: Enable NAPI instances for other int vectors

This patch adds code to enable and disable the rest of the NAPI
instances.
Signed-off-by: NMatt Carlson <mcarlson@broadcom.com>
Reviewed-by: NBenjamin Li <benli@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 fe5f5787
...@@ -694,25 +694,39 @@ static void tg3_int_reenable(struct tg3_napi *tnapi) ...@@ -694,25 +694,39 @@ static void tg3_int_reenable(struct tg3_napi *tnapi)
HOSTCC_MODE_ENABLE | tnapi->coal_now); HOSTCC_MODE_ENABLE | tnapi->coal_now);
} }
static void tg3_napi_disable(struct tg3 *tp)
{
int i;
for (i = tp->irq_cnt - 1; i >= 0; i--)
napi_disable(&tp->napi[i].napi);
}
static void tg3_napi_enable(struct tg3 *tp)
{
int i;
for (i = 0; i < tp->irq_cnt; i++)
napi_enable(&tp->napi[i].napi);
}
static inline void tg3_netif_stop(struct tg3 *tp) static inline void tg3_netif_stop(struct tg3 *tp)
{ {
tp->dev->trans_start = jiffies; /* prevent tx timeout */ tp->dev->trans_start = jiffies; /* prevent tx timeout */
napi_disable(&tp->napi[0].napi); tg3_napi_disable(tp);
netif_tx_disable(tp->dev); netif_tx_disable(tp->dev);
} }
static inline void tg3_netif_start(struct tg3 *tp) static inline void tg3_netif_start(struct tg3 *tp)
{ {
struct tg3_napi *tnapi = &tp->napi[0];
/* NOTE: unconditional netif_tx_wake_all_queues is only /* NOTE: unconditional netif_tx_wake_all_queues is only
* appropriate so long as all callers are assured to * appropriate so long as all callers are assured to
* have free tx slots (such as after tg3_init_hw) * have free tx slots (such as after tg3_init_hw)
*/ */
netif_tx_wake_all_queues(tp->dev); netif_tx_wake_all_queues(tp->dev);
napi_enable(&tnapi->napi); tg3_napi_enable(tp);
tnapi->hw_status->status |= SD_STATUS_UPDATED; tp->napi[0].hw_status->status |= SD_STATUS_UPDATED;
tg3_enable_ints(tp); tg3_enable_ints(tp);
} }
...@@ -4958,7 +4972,7 @@ static int tg3_restart_hw(struct tg3 *tp, int reset_phy) ...@@ -4958,7 +4972,7 @@ static int tg3_restart_hw(struct tg3 *tp, int reset_phy)
tg3_full_unlock(tp); tg3_full_unlock(tp);
del_timer_sync(&tp->timer); del_timer_sync(&tp->timer);
tp->irq_sync = 0; tp->irq_sync = 0;
napi_enable(&tp->napi[0].napi); tg3_napi_enable(tp);
dev_close(tp->dev); dev_close(tp->dev);
tg3_full_lock(tp, 0); tg3_full_lock(tp, 0);
} }
...@@ -8153,7 +8167,7 @@ static int tg3_open(struct net_device *dev) ...@@ -8153,7 +8167,7 @@ static int tg3_open(struct net_device *dev)
if (err) if (err)
goto err_out1; goto err_out1;
napi_enable(&tp->napi[0].napi); tg3_napi_enable(tp);
for (i = 0; i < tp->irq_cnt; i++) { for (i = 0; i < tp->irq_cnt; i++) {
struct tg3_napi *tnapi = &tp->napi[i]; struct tg3_napi *tnapi = &tp->napi[i];
...@@ -8240,7 +8254,7 @@ static int tg3_open(struct net_device *dev) ...@@ -8240,7 +8254,7 @@ static int tg3_open(struct net_device *dev)
} }
err_out2: err_out2:
napi_disable(&tp->napi[0].napi); tg3_napi_disable(tp);
tg3_free_consistent(tp); tg3_free_consistent(tp);
err_out1: err_out1:
...@@ -8486,7 +8500,7 @@ static int tg3_close(struct net_device *dev) ...@@ -8486,7 +8500,7 @@ static int tg3_close(struct net_device *dev)
int i; int i;
struct tg3 *tp = netdev_priv(dev); struct tg3 *tp = netdev_priv(dev);
napi_disable(&tp->napi[0].napi); tg3_napi_disable(tp);
cancel_work_sync(&tp->reset_task); cancel_work_sync(&tp->reset_task);
netif_tx_stop_all_queues(dev); netif_tx_stop_all_queues(dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册