diff options
| -rw-r--r-- | drivers/net/jme.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/net/jme.c b/drivers/net/jme.c index cfc7b9824d6f..c0b59a555384 100644 --- a/drivers/net/jme.c +++ b/drivers/net/jme.c | |||
| @@ -2083,12 +2083,45 @@ jme_tx_timeout(struct net_device *netdev) | |||
| 2083 | jme_reset_link(jme); | 2083 | jme_reset_link(jme); |
| 2084 | } | 2084 | } |
| 2085 | 2085 | ||
| 2086 | static inline void jme_pause_rx(struct jme_adapter *jme) | ||
| 2087 | { | ||
| 2088 | atomic_dec(&jme->link_changing); | ||
| 2089 | |||
| 2090 | jme_set_rx_pcc(jme, PCC_OFF); | ||
| 2091 | if (test_bit(JME_FLAG_POLL, &jme->flags)) { | ||
| 2092 | JME_NAPI_DISABLE(jme); | ||
| 2093 | } else { | ||
| 2094 | tasklet_disable(&jme->rxclean_task); | ||
| 2095 | tasklet_disable(&jme->rxempty_task); | ||
| 2096 | } | ||
| 2097 | } | ||
| 2098 | |||
| 2099 | static inline void jme_resume_rx(struct jme_adapter *jme) | ||
| 2100 | { | ||
| 2101 | struct dynpcc_info *dpi = &(jme->dpi); | ||
| 2102 | |||
| 2103 | if (test_bit(JME_FLAG_POLL, &jme->flags)) { | ||
| 2104 | JME_NAPI_ENABLE(jme); | ||
| 2105 | } else { | ||
| 2106 | tasklet_hi_enable(&jme->rxclean_task); | ||
| 2107 | tasklet_hi_enable(&jme->rxempty_task); | ||
| 2108 | } | ||
| 2109 | dpi->cur = PCC_P1; | ||
| 2110 | dpi->attempt = PCC_P1; | ||
| 2111 | dpi->cnt = 0; | ||
| 2112 | jme_set_rx_pcc(jme, PCC_P1); | ||
| 2113 | |||
| 2114 | atomic_inc(&jme->link_changing); | ||
| 2115 | } | ||
| 2116 | |||
| 2086 | static void | 2117 | static void |
| 2087 | jme_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp) | 2118 | jme_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp) |
| 2088 | { | 2119 | { |
| 2089 | struct jme_adapter *jme = netdev_priv(netdev); | 2120 | struct jme_adapter *jme = netdev_priv(netdev); |
| 2090 | 2121 | ||
| 2122 | jme_pause_rx(jme); | ||
| 2091 | jme->vlgrp = grp; | 2123 | jme->vlgrp = grp; |
| 2124 | jme_resume_rx(jme); | ||
| 2092 | } | 2125 | } |
| 2093 | 2126 | ||
| 2094 | static void | 2127 | static void |
