diff options
author | Dave Airlie <airlied@redhat.com> | 2014-01-19 19:21:54 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-01-19 19:21:54 -0500 |
commit | cfd72a4c2089aa3938f37281a34d6eb3306d5fd8 (patch) | |
tree | e63f6df423aeb59d1ea5f7af3597d6718e75c335 /drivers/net/bonding/bond_3ad.c | |
parent | 9354eafd893f45320a37da360e1728104e49cc2f (diff) | |
parent | 0d9d349d8788d30f3fc3bb39279c370f94d9dbec (diff) |
Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next
drm-intel-next-2014-01-10:
- final bits for runtime D3 on Haswell from Paul (now enabled fully)
- parse the backlight modulation freq information in the VBT from Jani
(but not yet used)
- more watermark improvements from Ville for ilk-ivb and bdw
- bugfixes for fastboot from Jesse
- watermark fix for i830M (but not yet everything)
- vlv vga hotplug w/a (Imre)
- piles of other small improvements, cleanups and fixes all over
Note that the pull request includes a backmerge of the last drm-fixes
pulled into Linus' tree - things where getting a bit too messy. So the
shortlog also contains a bunch of patches from Linus tree. Please yell if
you want me to frob it for you a bit.
* 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel: (609 commits)
drm/i915/bdw: make sure south port interrupts are enabled properly v2
drm/i915: Include more information in disabled hotplug interrupt warning
drm/i915: Only complain about a rogue hotplug IRQ after disabling
drm/i915: Only WARN about a stuck hotplug irq ONCE
drm/i915: s/hotplugt_status_gen4/hotplug_status_g4x/
Diffstat (limited to 'drivers/net/bonding/bond_3ad.c')
-rw-r--r-- | drivers/net/bonding/bond_3ad.c | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 187b1b7772ef..4ced59436558 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
@@ -2201,20 +2201,25 @@ void bond_3ad_adapter_speed_changed(struct slave *slave) | |||
2201 | 2201 | ||
2202 | port = &(SLAVE_AD_INFO(slave).port); | 2202 | port = &(SLAVE_AD_INFO(slave).port); |
2203 | 2203 | ||
2204 | // if slave is null, the whole port is not initialized | 2204 | /* if slave is null, the whole port is not initialized */ |
2205 | if (!port->slave) { | 2205 | if (!port->slave) { |
2206 | pr_warning("Warning: %s: speed changed for uninitialized port on %s\n", | 2206 | pr_warning("Warning: %s: speed changed for uninitialized port on %s\n", |
2207 | slave->bond->dev->name, slave->dev->name); | 2207 | slave->bond->dev->name, slave->dev->name); |
2208 | return; | 2208 | return; |
2209 | } | 2209 | } |
2210 | 2210 | ||
2211 | __get_state_machine_lock(port); | ||
2212 | |||
2211 | port->actor_admin_port_key &= ~AD_SPEED_KEY_BITS; | 2213 | port->actor_admin_port_key &= ~AD_SPEED_KEY_BITS; |
2212 | port->actor_oper_port_key = port->actor_admin_port_key |= | 2214 | port->actor_oper_port_key = port->actor_admin_port_key |= |
2213 | (__get_link_speed(port) << 1); | 2215 | (__get_link_speed(port) << 1); |
2214 | pr_debug("Port %d changed speed\n", port->actor_port_number); | 2216 | pr_debug("Port %d changed speed\n", port->actor_port_number); |
2215 | // there is no need to reselect a new aggregator, just signal the | 2217 | /* there is no need to reselect a new aggregator, just signal the |
2216 | // state machines to reinitialize | 2218 | * state machines to reinitialize |
2219 | */ | ||
2217 | port->sm_vars |= AD_PORT_BEGIN; | 2220 | port->sm_vars |= AD_PORT_BEGIN; |
2221 | |||
2222 | __release_state_machine_lock(port); | ||
2218 | } | 2223 | } |
2219 | 2224 | ||
2220 | /** | 2225 | /** |
@@ -2229,20 +2234,25 @@ void bond_3ad_adapter_duplex_changed(struct slave *slave) | |||
2229 | 2234 | ||
2230 | port = &(SLAVE_AD_INFO(slave).port); | 2235 | port = &(SLAVE_AD_INFO(slave).port); |
2231 | 2236 | ||
2232 | // if slave is null, the whole port is not initialized | 2237 | /* if slave is null, the whole port is not initialized */ |
2233 | if (!port->slave) { | 2238 | if (!port->slave) { |
2234 | pr_warning("%s: Warning: duplex changed for uninitialized port on %s\n", | 2239 | pr_warning("%s: Warning: duplex changed for uninitialized port on %s\n", |
2235 | slave->bond->dev->name, slave->dev->name); | 2240 | slave->bond->dev->name, slave->dev->name); |
2236 | return; | 2241 | return; |
2237 | } | 2242 | } |
2238 | 2243 | ||
2244 | __get_state_machine_lock(port); | ||
2245 | |||
2239 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_BITS; | 2246 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_BITS; |
2240 | port->actor_oper_port_key = port->actor_admin_port_key |= | 2247 | port->actor_oper_port_key = port->actor_admin_port_key |= |
2241 | __get_duplex(port); | 2248 | __get_duplex(port); |
2242 | pr_debug("Port %d changed duplex\n", port->actor_port_number); | 2249 | pr_debug("Port %d changed duplex\n", port->actor_port_number); |
2243 | // there is no need to reselect a new aggregator, just signal the | 2250 | /* there is no need to reselect a new aggregator, just signal the |
2244 | // state machines to reinitialize | 2251 | * state machines to reinitialize |
2252 | */ | ||
2245 | port->sm_vars |= AD_PORT_BEGIN; | 2253 | port->sm_vars |= AD_PORT_BEGIN; |
2254 | |||
2255 | __release_state_machine_lock(port); | ||
2246 | } | 2256 | } |
2247 | 2257 | ||
2248 | /** | 2258 | /** |
@@ -2258,15 +2268,21 @@ void bond_3ad_handle_link_change(struct slave *slave, char link) | |||
2258 | 2268 | ||
2259 | port = &(SLAVE_AD_INFO(slave).port); | 2269 | port = &(SLAVE_AD_INFO(slave).port); |
2260 | 2270 | ||
2261 | // if slave is null, the whole port is not initialized | 2271 | /* if slave is null, the whole port is not initialized */ |
2262 | if (!port->slave) { | 2272 | if (!port->slave) { |
2263 | pr_warning("Warning: %s: link status changed for uninitialized port on %s\n", | 2273 | pr_warning("Warning: %s: link status changed for uninitialized port on %s\n", |
2264 | slave->bond->dev->name, slave->dev->name); | 2274 | slave->bond->dev->name, slave->dev->name); |
2265 | return; | 2275 | return; |
2266 | } | 2276 | } |
2267 | 2277 | ||
2268 | // on link down we are zeroing duplex and speed since some of the adaptors(ce1000.lan) report full duplex/speed instead of N/A(duplex) / 0(speed) | 2278 | __get_state_machine_lock(port); |
2269 | // on link up we are forcing recheck on the duplex and speed since some of he adaptors(ce1000.lan) report | 2279 | /* on link down we are zeroing duplex and speed since |
2280 | * some of the adaptors(ce1000.lan) report full duplex/speed | ||
2281 | * instead of N/A(duplex) / 0(speed). | ||
2282 | * | ||
2283 | * on link up we are forcing recheck on the duplex and speed since | ||
2284 | * some of he adaptors(ce1000.lan) report. | ||
2285 | */ | ||
2270 | if (link == BOND_LINK_UP) { | 2286 | if (link == BOND_LINK_UP) { |
2271 | port->is_enabled = true; | 2287 | port->is_enabled = true; |
2272 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_BITS; | 2288 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_BITS; |
@@ -2282,10 +2298,15 @@ void bond_3ad_handle_link_change(struct slave *slave, char link) | |||
2282 | port->actor_oper_port_key = (port->actor_admin_port_key &= | 2298 | port->actor_oper_port_key = (port->actor_admin_port_key &= |
2283 | ~AD_SPEED_KEY_BITS); | 2299 | ~AD_SPEED_KEY_BITS); |
2284 | } | 2300 | } |
2285 | //BOND_PRINT_DBG(("Port %d changed link status to %s", port->actor_port_number, ((link == BOND_LINK_UP)?"UP":"DOWN"))); | 2301 | pr_debug("Port %d changed link status to %s", |
2286 | // there is no need to reselect a new aggregator, just signal the | 2302 | port->actor_port_number, |
2287 | // state machines to reinitialize | 2303 | (link == BOND_LINK_UP) ? "UP" : "DOWN"); |
2304 | /* there is no need to reselect a new aggregator, just signal the | ||
2305 | * state machines to reinitialize | ||
2306 | */ | ||
2288 | port->sm_vars |= AD_PORT_BEGIN; | 2307 | port->sm_vars |= AD_PORT_BEGIN; |
2308 | |||
2309 | __release_state_machine_lock(port); | ||
2289 | } | 2310 | } |
2290 | 2311 | ||
2291 | /* | 2312 | /* |