* pull request: wireless-next 2013-02-18
From: John W. Linville @ 2013-02-18 19:54 UTC (permalink / raw)
To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 31204 bytes --]
Dave,
This probably is the last big pull request for wireless bits
for 3.9. Of course, I'm sure there will be a few stragglers here
and there...surely a few bug fixes as well... :-) (In fact, I see
that Johannes has already queued-up a few more for me while I was
preparing this...)
Included are a number of pulls...
For mac80211-next, Johannes says:
"The biggest change I have is undoubtedly Marco's mesh powersave
implementation. Beyond that, I have a patch from Emmanuel to modify the
DTIM period API in mac80211, scan improvements and a removal of some
previous workaround code from Stanislaw, dynamic short slot time from
Thomas and 64-bit station byte counters from Vladimir. I also made a
number of changes myself, some related to WoWLAN, some auth/deauth
improvements and most of them BSS list cleanups."
"This time, I have relatively large number of fixes in various areas of
the code (a memory leak in regulatory, an RX race in mac80211, the new
radar checking caused a P2P device problem, some mesh issues with
stations, an older bug in tracing and for kernel-doc) as well as a
number of small new features. The biggest (in the diffstat) is my work
on hidden SSID tracking."
"Please pull to get
* radar detection work from Simon
* mesh improvements from Thomas
* a connection monitoring/powersave fix from Wojciech
* TDLS-related station management work from Jouni
* VLAN crypto fixes from Michael Braun
* CCK support in minstrel_ht from Felix
* an SMPS (not SMSP, oops) related improvement in mac80211 (Emmanuel)
* some WoWLAN work from Amitkumar Karwar: pattern match offset and a
documentation fix
* some WoWLAN work from myself (TCP connection wakeup feature API)
* and a lot of VHT (and some HT) work (also from myself)
And a number of more random cleanups/fixes. I merged mac80211/master to
avoid a merge problem there."
And regarding iwlwifi-next, Johannes says:
"We continue work on our new driver, but I also have a WoWLAN and AP mode
improvement for the previous driver and a change to use threaded
interrupts to prepare us for working with non-PCIe devices."
Regarding wl12xx, Luca says:
"A few more patches intended for 3.9. Mostly some clean-ups I've been
doing to make it easier to support device-tree. Also including one bug
fix for wl12xx where the rates we advertise were wrong and an update in
the wlconf structure to support newer firmwares."
For the nfc-next bits, Samuel says:
"This is the second NFC pull request for 3.9.
We have:
- A few pn533 fixes on top of Waldemar refactorization of the driver, one of
them fixes target mode.
- A new driver for Inside Secure microread chipset. It supports two
physical layers: i2c and MEI. The MEI one depends on a patchset that's
been sent to Greg Kroah-Hartman for inclusion into the 3.9 kernel [1]. The
dependency is a KConfig one which means this code is not buildable as long
as the MEI API is not usptream."
"This 3rd NFC pull request for 3.9 contains a fix for the microread MEI
physical layer support, as the MEI bus API changed.
From the MEI code, we now pass the MEI id back to the driver probe routine,
and we also pass a name and a MEI id table through the mei_bus_driver
structure. A few renames as well like e.g. mei_bus_driver to mei_driver or
mei_bus_client to mei_device in order to be closer to the driver model
practices."
For the ath6kl bits, Kalle says:
"There's not anything special here, most of the patches are just code
cleanup. The only functional changes are using the beacon interval from user
space and fixing a crash which happens when inserting and removing the
module in a loop."
Also, I pulled the wireless tree in order to resolve some pending
merge issues. On top of that, there is a bunch of work on brcmfmac
that leads up to P2P support. Also, mwifiex, rtlwifi, and a variety
of other drivers see some basic cleanups and minor enhancements.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 4153577a8d318ae02b3791341e10e78416de402f:
tg3: Use different macros for pci_chip_rev_id accesses (2013-02-18 12:45:53 -0500)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git for-davem
for you to fetch changes up to 98d5fac2330779e6eea6431a90b44c7476260dcc:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem (2013-02-18 13:47:13 -0500)
----------------------------------------------------------------
Alexander Bondar (1):
mac80211: add vif debugfs driver callbacks
Amitkumar Karwar (2):
nl80211: minor correction in sample wowlan mask calculation
nl80211: add packet offset information for wowlan pattern
Arend van Spriel (9):
brcmfmac: add chip information to the bus interface
brcmfmac: add function to retrieve chip information
brcmfmac: fix problem connecting to AP without security
brcmfmac: add peer-to-peer group discovery support
brcmfmac: add support for creating P2P client/GO interface
brcmfmac: fix compiler warning on printf format
brcmfmac: fix generation of the p2p related mac addresses
brcmfmac: implement support for deleting virtual interfaces
brcmfmac: change function signatures
Avinash Patil (5):
mwifiex: store card specific data in PCI device table entry
mwifiex: separate ring initialization and ring creation routines
mwifiex: define generic data type for PCIe ring buffers
mwifiex: add PCIe8897 support
mwifiex: device specific sleep cookie handling for PCIe
Beni Lev (1):
iwlwifi: mvm: fix TKIP key updating
Catalin Iacob (1):
rtlwifi: Initialize rate_init member of struct rate_control_ops
Christian Lamparter (1):
mac80211: protect rx-path with spinlock
Cong Ding (1):
net: wireless/rtlwifi: fix uninitialized variable issue
Dan Carpenter (2):
NFC: llcp: integer underflow in nfc_llcp_set_remote_gb()
brcmsmac: fix brcms_c_country_valid()
Emanuel Taube (1):
mac80211: Add the DS Params for mesh to every band
Emmanuel Grumbach (7):
mac80211: inform the driver about update of dtim_period
iwlwifi: don't ack the card state notification
iwlwifi: mvm: fix the keyidx assignment
iwlwifi: mvm: fix locking in iwl_mvm_ipv6_addr_change
mac80211: allow driver to be stateless wrt. SMSP requests
iwlwifi: mvm: use atomic interface iteration to avoid deadlock
iwlwifi: mvm: beautify code in rx_handlers
Eric Lapuyade (1):
NFC: Initial support for Inside Secure microread
Felix Fietkau (3):
mac80211/minstrel_ht: show the number of retries for each rate in debugfs
mac80211/minstrel_ht: remove the sampling bypass check for the lowest rate
mac80211/minstrel_ht: add support for using CCK rates
Hante Meuleman (32):
brcmfmac: Remove drvr_up from bus interface.
brcmfmac: Remove copy mac address from drvr at netdev up.
brcmfmac: Use struct brcmf_if in brcmf_configure_opensecurity.
brcmfmac: Track pending 8021x frames per ifp.
brcmfmac: Add logging for FIL int set/get cmds.
brcmfmac: Track statistics per ifp.
brcmfmac: Update tracelogging for multiple netdevs.
brcmfmac: Cleanup function brcmf_notifiy_connect_status_ap.
brcmfmac: Use single function for channel to chanspec.
brcmfmac: use brcmf_if::bssidx as index in interface list
brcmfmac: Check null pointer on brcmf_dev_reset.
brcmfmac: add support for P2P listen mode.
brcmfmac: update escan for multiple bss and simplify.
brcmfmac: update p2p add and delete vif routines.
brcmfmac: add p2p change vif routines.
brcmfmac: Fix bug mgmt_rx_register
brcmfmac: Update connect setup/handling routines for multiple bss.
brcmfmac: Update AP mode for GO creation.
brcmfmac: Add handling of receiving P2P action frames.
brcmfmac: P2P action frame tx.
brcmfmac: Use real cookie value for p2p remain on channel.
brcmfmac: Create p2p0 netdev via module variable.
brcmfmac: Use role from wdev on AP commands and fix stop_ap.
brcmfmac: Put printing action frames code under debug flag.
brcmfmac: Ignore E_ADD_IF for ifidx 0.
brcmfmac: Reject change vif for p2p if.
brcmfmac: Update netdev configuration in wiphy for p2p.
brcmfmac: Remove sleep on del_station.
brcmfmac: Fix rtnl_lock lockup when registering netdev.
brcmfmac: Cleanup of unused defines.
brcmfmac: Create netdev before returning from add_virtual_intf.
brcmfmac: Add tx p2p off-channel support.
Ilan Peer (3):
iwlwifi: mvm: Update quota settings for all bindings
iwlwifi: mvm: Change the Time Event type used for ROC
cfg80211: fix radar check for P2P_DEVICE
Jiri Slaby (1):
NET: ath5k, check ath5k_eeprom_mode_from_channel retval
Joe Perches (3):
mwl8k: Remove unnecessary alloc/OOM messages
brcmsmac: Downgrade d11hdrs_mac80211 error messages to warnings.
brcmsmac: Remove unnecessary memset casts
Johannes Berg (74):
Merge remote-tracking branch 'wireless-next/master' into HEAD
cfg80211: add SME state to warning in __cfg80211_mlme_disassoc
cfg80211/mac80211: support reporting wakeup reason
mac80211: remove assoc data "sent_assoc"
mac80211: remove last_probe_resp from bss
mac80211: remove unused mesh data from bss
cfg80211: remove free_priv BSS API
mac80211: start auth/assoc timeout on frame status
mac80211: send deauth when connection is lost
mac80211: always allow calling ieee80211_connection_loss()
cfg80211: refactor hidden SSID finding
cfg80211: fix BSS list hidden SSID lookup
cfg80211: simplify mesh BSS comparison
cfg80211: remove unused cfg80211_get_mesh
mac80211: remove unused SSID from BSS
cfg80211: fix BSS IE allocation comment
cfg80211: move locking into cfg80211_bss_age
mac80211: allow transmitting deauth with tainted key
mac80211: send deauth if connection was lost during suspend
cfg80211: use lockdep to assert lock is held
cfg80211: remove a local variable
cfg80211: wrap BSS kref
iwlwifi: use threaded interrupt handler
Merge remote-tracking branch 'wireless-next/master' into HEAD
cfg80211: pass wiphy to cfg80211_ref_bss/put_bss
wireless: fix kernel-doc
mac80211: fix AP beacon loss messages
mac80211: fix chandef tracing bug
mac80211: explicitly copy channels to VLANs where needed
cfg80211: track hidden SSID networks properly
cfg80211: remove scan ies NULL check
cfg80211: move TSF into IEs
mac80211: introduce beacon-only timing data
mac80211: remove dynamic PS driver interface
mac80211: remove IEEE80211_HW_SCAN_WHILE_IDLE
mac80211: simplify idle handling
mac80211: remove unused code to mark AP station authenticated
Merge remote-tracking branch 'wireless-next/master' into iwlwifi-next
iwlwifi: dvm: query and report WoWLAN wakeup reason
iwlwifi: mvm: report wakeup reasons
iwlwifi: dvm: apply beacon changes immediately
iwlwifi: mvm: don't delay the association until after beacon
iwlwifi: mvm: don't wait for session protection to start
iwlwifi: mvm: update station when marked associated
cfg80211: configuration for WoWLAN over TCP
mac80211: fix auth/assoc timeout handling
mac80211: don't call bss_info_changed on p2p-device/monitor
mac80211: always unblock CSA queue stop when disconnecting
mac80211: don't pick up WPA vendor IE
mac80211: use spin_lock_bh() for tim_lock
mac80211: use spin_lock_bh() for TKIP lock
Merge remote-tracking branch 'mac80211/master' into HEAD
mac80211: pass station to ieee80211_vht_cap_ie_to_sta_vht_cap
mac80211: stop toggling IEEE80211_HT_CAP_SUP_WIDTH_20_40
wireless: define operating mode action frame
mac80211: track number of spatial streams
mac80211: handle VHT operating mode notification
mac80211: init HT TX data before rate control
mac80211: fix HT/VHT disable flags
mac80211: fix ieee80211_change_chandef name
mac80211: handle operating mode notif in beacon/assoc response
mac80211: disable HT/VHT if AP has no HT/VHT capability
mac80211: clean up channel use in ieee80211_config_ht_tx
mac80211: add ieee80211_vif_change_bandwidth
mac80211: move ieee80211_determine_chantype function
mac80211: properly track HT/VHT operation changes
cfg80211: allow drivers to selectively disable 80/160 MHz
nl80211: advertise HT/VHT channel limitations
mac80211: constify IE parsing
mac80211: stop modifying HT SMPS capability
cfg80211: advertise extended capabilities to userspace
mac80211: advertise operating mode notification capability
nl80211: renumber NL80211_FEATURE_FULL_AP_CLIENT_STATE
mac80211: prevent spurious HT/VHT downgrade message
John W. Linville (10):
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-linville' of git://git.kernel.org/.../luca/wl12xx
Merge tag 'nfc-next-3.9-2' of git://git.kernel.org/.../sameo/nfc-next
Merge tag 'nfc-next-3.9-3' of git://git.kernel.org/.../sameo/nfc-next
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Merge branch 'master' of git://git.kernel.org/.../linville/wireless
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-linville' of git://github.com/kvalo/ath6kl
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into for-davem
Jonas Gorski (1):
mwl8k: add single band 88W8366 PCI device IDs
Jouni Malinen (2):
cfg80211: Pass station (extended) capability info to kernel
cfg80211: Pass TDLS peer's QoS/HT/VHT information during set_station
Julia Lawall (1):
drivers/net/wireless/ath/ath6kl/hif.c: drop if around WARN_ON
Karl Beldan (1):
mac80211_hwsim: ask mac80211 to reserve space for chanctx.drv_priv
Larry Finger (4):
rtlwifi: rtl8192cu: Fix NULL dereference BUG when using new_id
rtlwifi: rtl8192cu: Add new USB ID
cfg80211: Fix memory leak
rtlwifi: Rework Kconfig
Luciano Coelho (10):
wlcore: use single-role version when verifying the PLT firmware
wlcore: remove unused set_power method
wlcore: remove if_ops from platform_data
wlcore: use wl12xx_platform_data pointer from wlcore_pdev_data
wlcore: use PLATFORM_DEVID_AUTO for plat dev creation to avoid conflicts
wlcore: move wl12xx_platform_data up and make it truly optional
wlcore: don't hide real error code when booting fails
wlcore: fix wrong remote rates when starting STA role
wlcore: remove newly introduced alloc/OOM messages
cfg80211: check vendor IE length to avoid overrun
Marco Porsch (1):
mac80211: mesh power save basics
Michael Braun (2):
mac80211: free ps->bc_buf skbs on vlan device stop
mac80211: fix WPA with VLAN on AP side with ps-sta
Mohammed Shafi Shajakhan (9):
ath6kl: Fix a mismatch in power management debug message
ath6kl: Remove erroneous flag clearing
ath6kl: Use standard way to assign the boolean variable
ath6kl: remove unnecessary check for NULL skb
ath6kl: Fix kernel panic on continuous driver load/unload
ath6kl: trivial cleanup on interface type selection
ath6kl: Parse beacon interval from userspace
ath6kl: Move and rename ath6kl_cleanup_vif function
ath6kl: minor optimization using if, else if
Piotr Haber (3):
brcmfmac: fix mmc host locking issue
brcmfmac: turn clocks on when reading shared info
brcmfmac: remove unnecessary locking in trap info processing
Samuel Ortiz (3):
NFC: microread: Add i2c physical layer
NFC: microread: Add MEI physical layer
NFC: microread: Fix mei physical layer
Seth Forshee (2):
mac80211: Fix tx queue handling during scans
mac80211: Add flushes before going off-channel
Simon Wunderlich (2):
nl80211/cfg80211: add radar detection command/event
mac80211: add radar detection command/event
Stanislaw Gruszka (4):
mac80211: remove IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL
mac80211: improve latency and throughput while software scanning
rt2x00: check for dma mappings errors
iwlegacy: more checks for dma mapping errors
Sujith Manoharan (2):
ath9k: Fix ATH9K_HW_CAP_HT usage
ath9k: Fix IBSS joiner mode
Thierry Escande (1):
NFC: pn533: Fix target polling mode
Thomas Pedersen (6):
mac80211: dynamic short slot time for MBSSs
mac80211: stop plink timer only on mesh interfaces
mac80211: fix mesh sta teardown
mac80211: consolidate MBSS change notification
mac80211: cache mesh beacon
mac80211: generate mesh probe responses
Tim Gardner (2):
brcmsmac: fix u16 overflow warning
brcmsmac: avoid 512 byte stack variable
Tomasz Guszkowski (1):
p54usb: corrected USB ID for T-Com Sinus 154 data II
Victor Goldenshtein (1):
wl18xx: add new phy configuration parameters for telec support
Vladimir Kondratiev (2):
cfg80211: expand per-station byte counters to 64bit
ath6kl: provide 64-bit per-station byte counters
Waldemar Rymarkiewicz (2):
nfc: pn533: Use static poll_mod and std_frame_ops
nfc: pn533: Remove unreachable code
Wojciech Dubowik (1):
mac80211: fix ieee80211_sta_tx_notify for nullfunc
Xose Vazquez Perez (2):
wireless: rt2x00: rt2800usb add Sweex ids
wireless: rt2x00: rt2800usb add "unknown" devices
arch/arm/mach-omap2/board-omap3evm.c | 10 +-
drivers/net/wireless/ath/ath5k/phy.c | 4 +
drivers/net/wireless/ath/ath5k/reset.c | 2 +
drivers/net/wireless/ath/ath6kl/cfg80211.c | 117 +-
drivers/net/wireless/ath/ath6kl/cfg80211.h | 2 -
drivers/net/wireless/ath/ath6kl/core.h | 2 +-
drivers/net/wireless/ath/ath6kl/htc_pipe.c | 26 +-
drivers/net/wireless/ath/ath6kl/init.c | 36 +-
drivers/net/wireless/ath/ath6kl/usb.c | 6 +-
drivers/net/wireless/ath/ath6kl/wmi.c | 30 +-
drivers/net/wireless/ath/ath6kl/wmi.h | 6 +
drivers/net/wireless/ath/ath9k/ath9k.h | 1 +
drivers/net/wireless/ath/ath9k/beacon.c | 113 +-
drivers/net/wireless/ath/ath9k/main.c | 13 +-
drivers/net/wireless/ath/ath9k/rc.c | 2 +-
drivers/net/wireless/ath/ath9k/recv.c | 2 +-
drivers/net/wireless/ath/ath9k/xmit.c | 5 +-
drivers/net/wireless/ath/carl9170/main.c | 2 +-
drivers/net/wireless/ath/wil6210/cfg80211.c | 2 +-
drivers/net/wireless/ath/wil6210/wmi.c | 2 +-
drivers/net/wireless/brcm80211/brcmfmac/Makefile | 3 +-
drivers/net/wireless/brcm80211/brcmfmac/dhd.h | 57 +-
drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | 19 +-
drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c | 8 +
.../net/wireless/brcm80211/brcmfmac/dhd_linux.c | 311 +--
drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 25 +-
drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 11 +-
drivers/net/wireless/brcm80211/brcmfmac/fweh.h | 6 +-
drivers/net/wireless/brcm80211/brcmfmac/fwil.c | 7 +-
.../net/wireless/brcm80211/brcmfmac/fwil_types.h | 66 +
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 2277 ++++++++++++++++++++
drivers/net/wireless/brcm80211/brcmfmac/p2p.h | 183 ++
drivers/net/wireless/brcm80211/brcmfmac/usb.c | 11 +-
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 1375 ++++++++----
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | 113 +-
drivers/net/wireless/brcm80211/brcmsmac/channel.c | 3 +-
drivers/net/wireless/brcm80211/brcmsmac/main.c | 65 +-
drivers/net/wireless/iwlegacy/3945-mac.c | 51 +-
drivers/net/wireless/iwlegacy/4965-mac.c | 38 +-
drivers/net/wireless/iwlegacy/4965-rs.c | 3 +-
drivers/net/wireless/iwlegacy/common.c | 32 +-
drivers/net/wireless/iwlwifi/dvm/agn.h | 2 +-
drivers/net/wireless/iwlwifi/dvm/commands.h | 18 +
drivers/net/wireless/iwlwifi/dvm/mac80211.c | 166 +-
drivers/net/wireless/iwlwifi/dvm/rs.c | 12 +-
drivers/net/wireless/iwlwifi/dvm/rx.c | 2 +-
drivers/net/wireless/iwlwifi/dvm/rxon.c | 5 +-
drivers/net/wireless/iwlwifi/dvm/sta.c | 40 +-
drivers/net/wireless/iwlwifi/dvm/tx.c | 26 +-
drivers/net/wireless/iwlwifi/iwl-op-mode.h | 10 +-
drivers/net/wireless/iwlwifi/iwl-trans.h | 29 +-
drivers/net/wireless/iwlwifi/mvm/d3.c | 174 +-
drivers/net/wireless/iwlwifi/mvm/fw-api.h | 3 +
drivers/net/wireless/iwlwifi/mvm/fw.c | 4 -
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 6 +-
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 20 +-
drivers/net/wireless/iwlwifi/mvm/ops.c | 41 +-
drivers/net/wireless/iwlwifi/mvm/power.c | 2 +-
drivers/net/wireless/iwlwifi/mvm/quota.c | 29 +-
drivers/net/wireless/iwlwifi/mvm/rs.c | 30 +-
drivers/net/wireless/iwlwifi/mvm/rx.c | 2 +-
drivers/net/wireless/iwlwifi/mvm/sta.c | 40 +-
drivers/net/wireless/iwlwifi/mvm/sta.h | 6 +-
drivers/net/wireless/iwlwifi/mvm/time-event.c | 232 +-
drivers/net/wireless/iwlwifi/mvm/tx.c | 12 +-
drivers/net/wireless/iwlwifi/pcie/internal.h | 3 +-
drivers/net/wireless/iwlwifi/pcie/rx.c | 40 +-
drivers/net/wireless/iwlwifi/pcie/trans.c | 11 +-
drivers/net/wireless/iwlwifi/pcie/tx.c | 8 +-
drivers/net/wireless/libertas/cfg.c | 8 +-
drivers/net/wireless/mac80211_hwsim.c | 1 +
drivers/net/wireless/mwifiex/Kconfig | 4 +-
drivers/net/wireless/mwifiex/cfg80211.c | 2 +-
drivers/net/wireless/mwifiex/pcie.c | 769 ++++---
drivers/net/wireless/mwifiex/pcie.h | 215 +-
drivers/net/wireless/mwifiex/scan.c | 2 +-
drivers/net/wireless/mwifiex/sta_ioctl.c | 11 +-
drivers/net/wireless/mwl8k.c | 2 +
drivers/net/wireless/orinoco/scan.c | 4 +-
drivers/net/wireless/p54/p54usb.c | 2 +-
drivers/net/wireless/rndis_wlan.c | 4 +-
drivers/net/wireless/rt2x00/rt2400pci.c | 12 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 7 +-
drivers/net/wireless/rt2x00/rt2800usb.c | 21 +
drivers/net/wireless/rt2x00/rt2x00.h | 4 +-
drivers/net/wireless/rt2x00/rt2x00queue.c | 31 +-
drivers/net/wireless/rtlwifi/Kconfig | 50 +-
drivers/net/wireless/rtlwifi/base.c | 7 +-
drivers/net/wireless/rtlwifi/rc.c | 12 +-
drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 6 +-
drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 5 +-
drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 9 +-
drivers/net/wireless/rtlwifi/rtl8192de/hw.c | 3 +-
drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 3 +-
drivers/net/wireless/rtlwifi/rtl8192se/hw.c | 3 +-
drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 3 +-
drivers/net/wireless/rtlwifi/rtl8723ae/hw.c | 3 +-
drivers/net/wireless/rtlwifi/rtl8723ae/trx.c | 3 +-
drivers/net/wireless/rtlwifi/usb.c | 5 +-
drivers/net/wireless/rtlwifi/usb.h | 3 +-
drivers/net/wireless/ti/Kconfig | 9 +
drivers/net/wireless/ti/Makefile | 4 +-
...12xx_platform_data.c => wilink_platform_data.c} | 0
drivers/net/wireless/ti/wl1251/event.c | 6 +-
drivers/net/wireless/ti/wl1251/main.c | 24 +-
drivers/net/wireless/ti/wl12xx/main.c | 3 +-
drivers/net/wireless/ti/wl18xx/conf.h | 7 +-
drivers/net/wireless/ti/wl18xx/main.c | 7 +-
drivers/net/wireless/ti/wlcore/Kconfig | 5 -
drivers/net/wireless/ti/wlcore/Makefile | 3 -
drivers/net/wireless/ti/wlcore/boot.c | 4 +-
drivers/net/wireless/ti/wlcore/cmd.c | 8 +-
drivers/net/wireless/ti/wlcore/main.c | 18 +-
drivers/net/wireless/ti/wlcore/sdio.c | 35 +-
drivers/net/wireless/ti/wlcore/spi.c | 40 +-
drivers/net/wireless/ti/wlcore/wlcore.h | 1 -
drivers/net/wireless/ti/wlcore/wlcore_i.h | 5 +
drivers/nfc/Kconfig | 1 +
drivers/nfc/Makefile | 1 +
drivers/nfc/microread/Kconfig | 35 +
drivers/nfc/microread/Makefile | 10 +
drivers/nfc/microread/i2c.c | 340 +++
drivers/nfc/microread/mei.c | 246 +++
drivers/nfc/microread/microread.c | 728 +++++++
drivers/nfc/microread/microread.h | 33 +
drivers/nfc/pn533.c | 8 +-
drivers/staging/wlan-ng/cfg80211.c | 2 +-
include/linux/ieee80211.h | 50 +-
include/linux/platform_data/microread.h | 35 +
include/linux/wl12xx.h | 16 +-
include/net/cfg80211.h | 226 +-
include/net/mac80211.h | 170 +-
include/uapi/linux/nl80211.h | 274 ++-
net/mac80211/Kconfig | 11 +
net/mac80211/Makefile | 3 +-
net/mac80211/cfg.c | 95 +-
net/mac80211/chan.c | 155 +-
net/mac80211/debug.h | 10 +
net/mac80211/debugfs.c | 6 +-
net/mac80211/debugfs_netdev.c | 5 +
net/mac80211/debugfs_sta.c | 5 +-
net/mac80211/driver-ops.h | 54 +-
net/mac80211/ht.c | 110 +-
net/mac80211/ibss.c | 53 +-
net/mac80211/ieee80211_i.h | 196 +-
net/mac80211/iface.c | 132 +-
net/mac80211/main.c | 42 +-
net/mac80211/mesh.c | 284 ++-
net/mac80211/mesh.h | 40 +-
net/mac80211/mesh_hwmp.c | 49 +-
net/mac80211/mesh_pathtbl.c | 12 +-
net/mac80211/mesh_plink.c | 120 +-
net/mac80211/mesh_ps.c | 598 +++++
net/mac80211/mlme.c | 1081 ++++++----
net/mac80211/offchannel.c | 35 +-
net/mac80211/pm.c | 12 +
net/mac80211/rate.h | 2 +
net/mac80211/rc80211_minstrel.c | 29 +
net/mac80211/rc80211_minstrel.h | 2 +
net/mac80211/rc80211_minstrel_ht.c | 181 +-
net/mac80211/rc80211_minstrel_ht.h | 5 +-
net/mac80211/rc80211_minstrel_ht_debugfs.c | 112 +-
net/mac80211/rx.c | 161 +-
net/mac80211/scan.c | 66 +-
net/mac80211/sta_info.c | 38 +-
net/mac80211/sta_info.h | 20 +-
net/mac80211/status.c | 25 +-
net/mac80211/tkip.c | 10 +-
net/mac80211/trace.h | 23 +-
net/mac80211/tx.c | 109 +-
net/mac80211/util.c | 82 +-
net/mac80211/vht.c | 172 +-
net/mac80211/wme.c | 13 +-
net/mac80211/wpa.c | 5 +-
net/nfc/llcp/llcp.c | 5 +-
net/wireless/chan.c | 142 +-
net/wireless/core.c | 8 +-
net/wireless/core.h | 35 +-
net/wireless/ibss.c | 4 +-
net/wireless/mlme.c | 136 +-
net/wireless/nl80211.c | 783 ++++++-
net/wireless/nl80211.h | 7 +
net/wireless/reg.c | 20 +-
net/wireless/scan.c | 630 +++---
net/wireless/sme.c | 16 +-
net/wireless/sysfs.c | 2 -
net/wireless/trace.h | 80 +
net/wireless/util.c | 2 +-
189 files changed, 12387 insertions(+), 3236 deletions(-)
create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/p2p.c
create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/p2p.h
rename drivers/net/wireless/ti/{wlcore/wl12xx_platform_data.c => wilink_platform_data.c} (100%)
create mode 100644 drivers/nfc/microread/Kconfig
create mode 100644 drivers/nfc/microread/Makefile
create mode 100644 drivers/nfc/microread/i2c.c
create mode 100644 drivers/nfc/microread/mei.c
create mode 100644 drivers/nfc/microread/microread.c
create mode 100644 drivers/nfc/microread/microread.h
create mode 100644 include/linux/platform_data/microread.h
create mode 100644 net/mac80211/mesh_ps.c
--
John W. Linville Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org might be all we have. Be ready.
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* [PATCH linux-next] rt2x00: rt2x00pci_regbusy_read() - only print register access failure once
From: Tim Gardner @ 2013-02-18 19:56 UTC (permalink / raw)
To: linux-kernel
Cc: Tim Gardner, Ivo van Doorn, Gertjan van Wingerde, Helmut Schaa,
John W. Linville, linux-wireless, users, netdev, stable
BugLink: http://bugs.launchpad.net/bugs/1128840
It appears that when this register read fails it never recovers, so
I think there is no need to repeat the same error message ad infinitum.
Cc: Ivo van Doorn <IvDoorn@gmail.com>
Cc: Gertjan van Wingerde <gwingerde@gmail.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: users@rt2x00.serialmonkey.com
Cc: netdev@vger.kernel.org
Cc: stable@vger.kernel.org
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
---
This patch applies as far back as 3.0.65 (and maybe older but that is
as far back as I checked).
drivers/net/wireless/rt2x00/rt2x00pci.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
index a0c8cae..b1c673e 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
@@ -52,8 +52,8 @@ int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev,
udelay(REGISTER_BUSY_DELAY);
}
- ERROR(rt2x00dev, "Indirect register access failed: "
- "offset=0x%.08x, value=0x%.08x\n", offset, *reg);
+ printk_once(KERN_ERR "%s() Indirect register access failed: "
+ "offset=0x%.08x, value=0x%.08x\n", __func__, offset, *reg);
*reg = ~0;
return 0;
--
1.7.9.5
^ permalink raw reply related
* [PATCH net-next v2 1/2] ip_gre: allow CSUM capable devices to handle packets
From: Dmitry Kravkov @ 2013-02-18 19:50 UTC (permalink / raw)
To: davem, netdev; +Cc: Dmitry Kravkov
If device is not able to handle checksumming it will
be handled in dev_xmit
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
---
Changes from v1: fixed email address
net/ipv4/ip_gre.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index a56f118..cdc31ac 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -745,12 +745,9 @@ static struct sk_buff *handle_offloads(struct sk_buff *skb)
goto error;
skb_shinfo(skb)->gso_type |= SKB_GSO_GRE;
return skb;
- } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
- err = skb_checksum_help(skb);
- if (unlikely(err))
- goto error;
}
- skb->ip_summed = CHECKSUM_NONE;
+ if (skb->ip_summed != CHECKSUM_PARTIAL)
+ skb->ip_summed = CHECKSUM_NONE;
return skb;
--
1.7.7.2
^ permalink raw reply related
* Re: [RFC PATCH] xfrm: release neighbor upon dst destruction
From: David Miller @ 2013-02-18 19:58 UTC (permalink / raw)
To: r.kuntz; +Cc: netdev, steffen.klassert, yoshfuji
In-Reply-To: <311F962F-9DAF-4B24-B7FD-F158895D304D@ipflavors.com>
From: Romain KUNTZ <r.kuntz@ipflavors.com>
Date: Mon, 18 Feb 2013 13:36:24 +0100
> Neighbor is cloned in xfrm6_fill_dst but seems to never be released.
> Neighbor entry should be released when XFRM6 dst entry is destroyed
> in xfrm6_dst_destroy, otherwise references may be kept forever on
> the device pointed by the neighbor entry.
>
> I may not have understood all the subtleties of XFRM & dst so I would
> be happy to receive comments on this patch.
>
> Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com>
This patch is definitely correct.
Applied and queued up for -stable, thanks.
^ permalink raw reply
* Re: [PATCH v3] net: fec: Do a sanity check on the gpio number
From: David Miller @ 2013-02-18 20:00 UTC (permalink / raw)
To: festevam; +Cc: s.hauer, shawn.guo, marex, netdev, fabio.estevam
In-Reply-To: <CAOMZO5DyfksHf9CK9MUGmdwNPmwc2EXtY+3krNffYdivvPr=0Q@mail.gmail.com>
From: Fabio Estevam <festevam@gmail.com>
Date: Mon, 18 Feb 2013 16:51:49 -0300
> On Mon, Feb 18, 2013 at 4:47 PM, David Miller <davem@davemloft.net> wrote:
>> From: Fabio Estevam <festevam@gmail.com>
>> Date: Sun, 17 Feb 2013 12:29:24 -0300
>>
>>> Since commit 372e722ea4d (gpiolib: use descriptors internally) the following
>>> warning is seen on a mx28evk board:
>>
>> [davem@drr linux]$ git describe 372e722ea4d
>> fatal: Not a valid object name 372e722ea4d
>> [davem@drr linux]$
>>
>> That commit ID doesn't exist in any tree I have access to.
>
> It exists in linux-next.
linux-next commits are not valid to reference if they are not
either in the target tree where your patch belongs or Linus's
tree.
And if the change that causes the change to be needed doesn't even
exist in my tree or Linus's upstream, your "fix" has no business in my
tree either.
^ permalink raw reply
* Re: [PATCH 0/4] Minor vSockets fixes
From: David Miller @ 2013-02-18 20:03 UTC (permalink / raw)
To: acking; +Cc: pv-drivers, netdev, linux-kernel, virtualization
In-Reply-To: <1361203453-1347-1-git-send-email-acking@vmware.com>
From: Andy King <acking@vmware.com>
Date: Mon, 18 Feb 2013 08:04:09 -0800
> Minor vSockets fixes, two of which were reported on LKML.
Series applied, thanks.
^ permalink raw reply
* Re: pull request: wireless-next 2013-02-18
From: David Miller @ 2013-02-18 20:03 UTC (permalink / raw)
To: linville-2XuSBdqkA4R54TAoqtyWWQ
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20130218195448.GC12505-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
From: "John W. Linville" <linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Date: Mon, 18 Feb 2013 14:54:48 -0500
> Please let me know if there are problems!
I'll pull this and sans build problems will push it back out to
net-next, thanks John.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: SYSFS "errors"
From: Felipe Balbi @ 2013-02-18 20:05 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt,
Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem,
netdev, Doug Thompson, linux-edac, rjw, linux-pm
In-Reply-To: <20130218164638.7cb53baa@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 450 bytes --]
Hi,
On Mon, Feb 18, 2013 at 04:46:38PM -0300, Mauro Carvalho Chehab wrote:
> > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
> > >
> > > Odd, go ask the edac developers
> >
> > will do ;-)
>
> Well, the question is missing ;) /me assumes that you want to talk about
> suspending/resume and EDAC, right?
oops, my bad. The thing is that file has read permission but reading it
isn't allowed ;-)
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* [PATCH v2] net: fec: Fix the disabling of RX interrupt
From: Fabio Estevam @ 2013-02-18 20:04 UTC (permalink / raw)
To: davem; +Cc: Frank.Li, shawn.guo, marex, s.hauer, netdev, Fabio Estevam
The correct way to disable FEC RX interrupt is to clean only the FEC_ENET_RXF
bit.
Since commit dc975382d2e (net: fec: add napi support to improve proformance)
FEC_RX_DISABLED_IMASK is being written to the FEC_IMASK register, which also
incorrectly sets other bits as per the definitions below:
#define FEC_DEFAULT_IMASK (FEC_ENET_TXF | FEC_ENET_RXF | FEC_ENET_MII)
#define FEC_RX_DISABLED_IMASK (FEC_DEFAULT_IMASK & (~FEC_ENET_RXF))
This fixes the following kernel crash:
Unable to handle kernel NULL pointer dereference at virtual address 00000002
pgd = 80004000
[00000002] *pgd=00000000
Internal error: Oops: 5 [#1] SMP ARM
Modules linked in:
CPU: 0 Not tainted (3.8.0-rc7-next-20130218+ #1192)
PC is at fec_enet_interrupt+0xd0/0x354
LR is at fec_enet_interrupt+0xb8/0x354
pc : [<8034592c>] lr : [<80345914>] psr: 60000193
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v1:
- Fix it also inside fec_enet_init and fix the kernel crash.
drivers/net/ethernet/freescale/fec.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c
index 0fe68c4..4eb0201 100644
--- a/drivers/net/ethernet/freescale/fec.c
+++ b/drivers/net/ethernet/freescale/fec.c
@@ -811,6 +811,7 @@ fec_enet_interrupt(int irq, void *dev_id)
struct fec_enet_private *fep = netdev_priv(ndev);
uint int_events;
irqreturn_t ret = IRQ_NONE;
+ int reg;
do {
int_events = readl(fep->hwp + FEC_IEVENT);
@@ -821,8 +822,9 @@ fec_enet_interrupt(int irq, void *dev_id)
/* Disable the RX interrupt */
if (napi_schedule_prep(&fep->napi)) {
- writel(FEC_RX_DISABLED_IMASK,
- fep->hwp + FEC_IMASK);
+ reg = readl(fep->hwp + FEC_IMASK);
+ reg &= ~FEC_ENET_RXF;
+ writel(reg, fep->hwp + FEC_IMASK);
__napi_schedule(&fep->napi);
}
}
@@ -1598,7 +1600,7 @@ static int fec_enet_init(struct net_device *ndev)
struct fec_enet_private *fep = netdev_priv(ndev);
struct bufdesc *cbd_base;
struct bufdesc *bdp;
- int i;
+ int i, reg;
/* Allocate memory for buffer descriptors. */
cbd_base = dma_alloc_coherent(NULL, PAGE_SIZE, &fep->bd_dma,
@@ -1628,7 +1630,10 @@ static int fec_enet_init(struct net_device *ndev)
ndev->netdev_ops = &fec_netdev_ops;
ndev->ethtool_ops = &fec_enet_ethtool_ops;
- writel(FEC_RX_DISABLED_IMASK, fep->hwp + FEC_IMASK);
+ reg = readl(fep->hwp + FEC_IMASK);
+ reg &= ~FEC_ENET_RXF;
+ writel(reg, fep->hwp + FEC_IMASK);
+
netif_napi_add(ndev, &fep->napi, fec_enet_rx_napi, FEC_NAPI_WEIGHT);
/* Initialize the receive buffer descriptors. */
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH] b43: Increase number of RX DMA slots
From: Larry Finger @ 2013-02-18 20:10 UTC (permalink / raw)
To: Rafał Miłecki
Cc: linville, linux-wireless, netdev, Bastian Bittorf, Stable
In-Reply-To: <CACna6rwLgE+o2mcRTemLFAqzdsEoA9Xyx8GyEQTh5qbv1iZ04A@mail.gmail.com>
On 02/18/2013 10:18 AM, Rafał Miłecki wrote:
> 2013/2/18 Larry Finger <Larry.Finger@lwfinger.net>:
>> Bastian Bittorf reported that some of the silent freezes on a Linksys WRT54G
>> were due to overflow of the RX DMA ring buffer, which was created with 64
>> slots. That finding reminded me that I was seeing similar crashed on a netbook,
>> which also has a relatively slow processor. After increasing the number of
>> slots to 128, runs on the netbook that previously failed now worked; however,
>> I found that 109 slots had been used in one test. For that reason, the number
>> of slots is being increased to 256.
>
> So probably ideal solution is to use 128 *and* fix the driver's
> failing on overflow ;)
>
> Did you try it on some old device? Just for sure firmware&DMA will
> handle it correctly.
I tested on BCM4318 (which is pretty old), and two different BCM4312 (14e4:4315)
units. I think the firmware and DMA can handle it. After all, all the TX rings
have 256 slots. There is, however, a question of the memory. TX only acquires
the buffers when needed, but RX has to get them in advance, thus 256 slots there
will waste a lot of memory.
I agree that there be two patches, depending on Bastian's testing. The slot size
change can be backported to stable.
Larry
^ permalink raw reply
* [PATCH net-next] ipv6: fix a sparse warning
From: Eric Dumazet @ 2013-02-18 20:18 UTC (permalink / raw)
To: David Miller; +Cc: netdev
From: Eric Dumazet <edumazet@google.com>
net/ipv6/reassembly.c:82:72: warning: incorrect type in argument 3 (different base types)
net/ipv6/reassembly.c:82:72: expected unsigned int [unsigned] [usertype] c
net/ipv6/reassembly.c:82:72: got restricted __be32 [usertype] id
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
---
net/ipv6/reassembly.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
index 9a6428a..3c6a772 100644
--- a/net/ipv6/reassembly.c
+++ b/net/ipv6/reassembly.c
@@ -79,7 +79,8 @@ unsigned int inet6_hash_frag(__be32 id, const struct in6_addr *saddr,
{
u32 c;
- c = jhash_3words(ipv6_addr_hash(saddr), ipv6_addr_hash(daddr), id, rnd);
+ c = jhash_3words(ipv6_addr_hash(saddr), ipv6_addr_hash(daddr),
+ (__force u32)id, rnd);
return c & (INETFRAGS_HASHSZ - 1);
}
^ permalink raw reply related
* [PATCH v4] net: fec: Do a sanity check on the gpio number
From: Fabio Estevam @ 2013-02-18 20:20 UTC (permalink / raw)
To: davem; +Cc: shawn.guo, marex, s.hauer, netdev, Fabio Estevam
Check whether the phy-reset GPIO is valid, prior to requesting it.
In the case a board does not provide a phy-reset GPIO, just returns immediately.
With such gpio validation in place, it is also safe to change from pr_debug to
dev_err in the case the gpio request fails.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Change since v3:
- Do not refer to a commit that is in linux-next
Changes since v2:
- Merge the two patches into a single one, and use dev_err
Changes since v1:
- Added Shawn's ack
drivers/net/ethernet/freescale/fec.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c
index 0fe68c4..1a2071b 100644
--- a/drivers/net/ethernet/freescale/fec.c
+++ b/drivers/net/ethernet/freescale/fec.c
@@ -1689,10 +1689,13 @@ static void fec_reset_phy(struct platform_device *pdev)
msec = 1;
phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0);
+ if (!gpio_is_valid(phy_reset))
+ return;
+
err = devm_gpio_request_one(&pdev->dev, phy_reset,
GPIOF_OUT_INIT_LOW, "phy-reset");
if (err) {
- pr_debug("FEC: failed to get gpio phy-reset: %d\n", err);
+ dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err);
return;
}
msleep(msec);
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH net-next] ipv6: fix a sparse warning
From: David Miller @ 2013-02-18 20:28 UTC (permalink / raw)
To: erdnetdev; +Cc: netdev
In-Reply-To: <1361218732.19353.105.camel@edumazet-glaptop>
From: Eric Dumazet <erdnetdev@gmail.com>
Date: Mon, 18 Feb 2013 12:18:52 -0800
> From: Eric Dumazet <edumazet@google.com>
>
> net/ipv6/reassembly.c:82:72: warning: incorrect type in argument 3 (different base types)
> net/ipv6/reassembly.c:82:72: expected unsigned int [unsigned] [usertype] c
> net/ipv6/reassembly.c:82:72: got restricted __be32 [usertype] id
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Applied, thanks Eric.
^ permalink raw reply
* [PATCH] xen: netback: remove redundant xenvif_put
From: Andrew Jones @ 2013-02-18 20:29 UTC (permalink / raw)
To: xen-devel, ian.campbell; +Cc: netdev, linux-kernel
netbk_fatal_tx_err() calls xenvif_carrier_off(), which does
a xenvif_put(). As callers of netbk_fatal_tx_err should only
have one reference to the vif at this time, then the xenvif_put
in netbk_fatal_tx_err is one too many.
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
drivers/net/xen-netback/netback.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index 2b9520c..c23b9ec 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -893,7 +893,6 @@ static void netbk_fatal_tx_err(struct xenvif *vif)
{
netdev_err(vif->dev, "fatal error; disabling device\n");
xenvif_carrier_off(vif);
- xenvif_put(vif);
}
static int netbk_count_requests(struct xenvif *vif,
--
1.8.1.2
^ permalink raw reply related
* [PATCH linux-next] net: ipv6: Fix compiler warning
From: Stratos Karafotis @ 2013-02-18 20:38 UTC (permalink / raw)
To: Steffen Klassert, David S. Miller, Alexey Kuznetsov, James Morris,
Hideaki YOSHIFUJI
Cc: netdev, linux-kernel
Fix the following compiler warning (also a checkpatch error):
net/ipv6/xfrm6_mode_tunnel.c: In function ‘xfrm6_mode_tunnel_input’:
net/ipv6/xfrm6_mode_tunnel.c:72:2: warning: suggest parentheses around
assignment used as truth value [-Wparentheses]
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
---
net/ipv6/xfrm6_mode_tunnel.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c
index 93c41a8..9bf6a74 100644
--- a/net/ipv6/xfrm6_mode_tunnel.c
+++ b/net/ipv6/xfrm6_mode_tunnel.c
@@ -69,7 +69,8 @@ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
goto out;
- if (err = skb_unclone(skb, GFP_ATOMIC))
+ err = skb_unclone(skb, GFP_ATOMIC);
+ if (err)
goto out;
if (x->props.flags & XFRM_STATE_DECAP_DSCP)
--
1.8.1.2
^ permalink raw reply related
* [PATCH] b44: use netdev_alloc_skb_ip_align()
From: Hauke Mehrtens @ 2013-02-18 20:49 UTC (permalink / raw)
To: davem; +Cc: zambrano, netdev, Hauke Mehrtens
Without this patch b44 always allocates the 2 bytes needed for aligned
access on every platform, now it uses netdev_alloc_skb_ip_align().
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
drivers/net/ethernet/broadcom/b44.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index c030274..a7efec2 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -809,11 +809,10 @@ static int b44_rx(struct b44 *bp, int budget)
struct sk_buff *copy_skb;
b44_recycle_rx(bp, cons, bp->rx_prod);
- copy_skb = netdev_alloc_skb(bp->dev, len + 2);
+ copy_skb = netdev_alloc_skb_ip_align(bp->dev, len);
if (copy_skb == NULL)
goto drop_it_no_recycle;
- skb_reserve(copy_skb, 2);
skb_put(copy_skb, len);
/* DMA sync done above, copy just the actual packet */
skb_copy_from_linear_data_offset(skb, RX_PKT_OFFSET,
--
1.7.10.4
^ permalink raw reply related
* Re: [PATCH] xen: netback: remove redundant xenvif_put
From: Wei Liu @ 2013-02-18 20:58 UTC (permalink / raw)
To: Andrew Jones
Cc: netdev, xen-devel@lists.xensource.com, Ian Campbell, linux-kernel
In-Reply-To: <1361219360-29176-1-git-send-email-drjones@redhat.com>
[-- Attachment #1.1: Type: text/plain, Size: 1224 bytes --]
On Mon, Feb 18, 2013 at 8:29 PM, Andrew Jones <drjones@redhat.com> wrote:
> netbk_fatal_tx_err() calls xenvif_carrier_off(), which does
> a xenvif_put(). As callers of netbk_fatal_tx_err should only
> have one reference to the vif at this time, then the xenvif_put
> in netbk_fatal_tx_err is one too many.
>
>
Hmm... we had a discussion on this not long ago.
http://marc.info/?l=xen-devel&m=136084174026977&w=2
Do you actually experiencing problem?
Wei.
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> drivers/net/xen-netback/netback.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/net/xen-netback/netback.c
> b/drivers/net/xen-netback/netback.c
> index 2b9520c..c23b9ec 100644
> --- a/drivers/net/xen-netback/netback.c
> +++ b/drivers/net/xen-netback/netback.c
> @@ -893,7 +893,6 @@ static void netbk_fatal_tx_err(struct xenvif *vif)
> {
> netdev_err(vif->dev, "fatal error; disabling device\n");
> xenvif_carrier_off(vif);
> - xenvif_put(vif);
> }
>
> static int netbk_count_requests(struct xenvif *vif,
> --
> 1.8.1.2
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
>
[-- Attachment #1.2: Type: text/html, Size: 2340 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply
* Re: [PATCH net 1/3] bonding: Fix race condition between bond_enslave() and bond_3ad_update_lacp_rate()
From: Jay Vosburgh @ 2013-02-18 21:09 UTC (permalink / raw)
To: Nikolay Aleksandrov; +Cc: netdev, davem, andy
In-Reply-To: <1361210344-14907-1-git-send-email-nikolay@redhat.com>
Nikolay Aleksandrov <nikolay@redhat.com> wrote:
>port->slave can be NULL since it's being initialized in bond_enslave
>thus dereferencing a NULL pointer in bond_3ad_update_lacp_rate()
>Also fix a minor bug, which could cause a port not to have
>AD_STATE_LACP_TIMEOUT since there's no sync between
>bond_3ad_update_lacp_rate() and bond_3ad_bind_slave(), by changing
>the read_lock to a write_lock_bh in bond_3ad_update_lacp_rate().
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
>Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
>---
> drivers/net/bonding/bond_3ad.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
>index a030e63..1720742 100644
>--- a/drivers/net/bonding/bond_3ad.c
>+++ b/drivers/net/bonding/bond_3ad.c
>@@ -2494,11 +2494,13 @@ void bond_3ad_update_lacp_rate(struct bonding *bond)
> struct port *port = NULL;
> int lacp_fast;
>
>- read_lock(&bond->lock);
>+ write_lock_bh(&bond->lock);
> lacp_fast = bond->params.lacp_fast;
>
> bond_for_each_slave(bond, slave, i) {
> port = &(SLAVE_AD_INFO(slave).port);
>+ if (port->slave == NULL)
>+ continue;
> __get_state_machine_lock(port);
> if (lacp_fast)
> port->actor_oper_port_state |= AD_STATE_LACP_TIMEOUT;
>@@ -2507,5 +2509,5 @@ void bond_3ad_update_lacp_rate(struct bonding *bond)
> __release_state_machine_lock(port);
> }
>
>- read_unlock(&bond->lock);
>+ write_unlock_bh(&bond->lock);
> }
>--
>1.7.11.7
>
^ permalink raw reply
* Re: [PATCH net 2/3] bonding: Fix initialize after use for 3ad machine state spinlock
From: Jay Vosburgh @ 2013-02-18 21:33 UTC (permalink / raw)
To: Nikolay Aleksandrov; +Cc: netdev, davem, andy
In-Reply-To: <1361210344-14907-2-git-send-email-nikolay@redhat.com>
Nikolay Aleksandrov <nikolay@redhat.com> wrote:
>The 3ad machine state spinlock can be used before it is inititialized
>while doing bond_enslave() (and the port is being initialized) since
>port->slave is set before the lock is prepared, thus causing soft
>lock-ups and a multitude of other nasty bugs.
Does this change cause the "uninitialized port" warnings in
bond_3ad_state_machine_handler and bond_3ad_rx_indication to
intermittently print during the enslavement process? If so (and it
looks to me like it will), I think the warnings should be removed, since
after this change, port->slave being NULL isn't really an error
condition that needs a warning to the log.
>Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
>---
> drivers/net/bonding/bond_3ad.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
>index 1720742..96d471e 100644
>--- a/drivers/net/bonding/bond_3ad.c
>+++ b/drivers/net/bonding/bond_3ad.c
>@@ -389,13 +389,13 @@ static u8 __get_duplex(struct port *port)
>
> /**
> * __initialize_port_locks - initialize a port's STATE machine spinlock
>- * @port: the port we're looking at
>+ * @port: the slave of the port we're looking at
> *
> */
>-static inline void __initialize_port_locks(struct port *port)
>+static inline void __initialize_port_locks(struct slave *port)
> {
> // make sure it isn't called twice
>- spin_lock_init(&(SLAVE_AD_INFO(port->slave).state_machine_lock));
>+ spin_lock_init(&(SLAVE_AD_INFO(port).state_machine_lock));
Change the name of the variable here, too, not just the type.
This is confusing.
-J
> }
>
> //conversions
>@@ -1910,6 +1910,7 @@ int bond_3ad_bind_slave(struct slave *slave)
>
> ad_initialize_port(port, bond->params.lacp_fast);
>
>+ __initialize_port_locks(slave);
> port->slave = slave;
> port->actor_port_number = SLAVE_AD_INFO(slave).id;
> // key is determined according to the link speed, duplex and user key(which is yet not supported)
>@@ -1932,8 +1933,6 @@ int bond_3ad_bind_slave(struct slave *slave)
> port->next_port_in_aggregator = NULL;
>
> __disable_port(port);
>- __initialize_port_locks(port);
>-
>
> // aggregator initialization
> aggregator = &(SLAVE_AD_INFO(slave).aggregator);
>--
>1.7.11.7
>
---
-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
^ permalink raw reply
* Re: SYSFS "errors"
From: Mauro Carvalho Chehab @ 2013-02-18 21:47 UTC (permalink / raw)
To: balbi
Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt,
Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem,
netdev, Doug Thompson, linux-edac, rjw, linux-pm
In-Reply-To: <20130218200542.GB20137@arwen.pp.htv.fi>
Em Mon, 18 Feb 2013 22:05:42 +0200
Felipe Balbi <balbi@ti.com> escreveu:
> Hi,
>
> On Mon, Feb 18, 2013 at 04:46:38PM -0300, Mauro Carvalho Chehab wrote:
> > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
> > > >
> > > > Odd, go ask the edac developers
> > >
> > > will do ;-)
> >
> > Well, the question is missing ;) /me assumes that you want to talk about
> > suspending/resume and EDAC, right?
>
> oops, my bad. The thing is that file has read permission but reading it
> isn't allowed ;-)
That depends on the driver. See drivers/edac/edac_mc_sysfs.c:
static ssize_t mci_sdram_scrub_rate_show(struct device *dev,
struct device_attribute *mattr,
char *data)
{
struct mem_ctl_info *mci = to_mci(dev);
int bandwidth = 0;
if (!mci->get_sdram_scrub_rate)
return -ENODEV;
bandwidth = mci->get_sdram_scrub_rate(mci);
if (bandwidth < 0) {
edac_printk(KERN_DEBUG, EDAC_MC, "Error reading scrub rate\n");
return bandwidth;
}
return sprintf(data, "%d\n", bandwidth);
}
/* memory scrubber attribute file */
DEVICE_ATTR(sdram_scrub_rate, S_IRUGO | S_IWUSR, mci_sdram_scrub_rate_show,
mci_sdram_scrub_rate_store);
static struct attribute *mci_attrs[] = {
&dev_attr_reset_counters.attr,
&dev_attr_mc_name.attr,
&dev_attr_size_mb.attr,
&dev_attr_seconds_since_reset.attr,
&dev_attr_ue_noinfo_count.attr,
&dev_attr_ce_noinfo_count.attr,
&dev_attr_ue_count.attr,
&dev_attr_ce_count.attr,
&dev_attr_sdram_scrub_rate.attr,
&dev_attr_max_location.attr,
NULL
};
The capability of get and/or set the scrub rate is edac-driver specific.
Drivers that support it need to fill those callbacks:
mci->get_sdram_scrub_rate
mci->set_sdram_scrub_rate
In any case, the sysfs attribute is created even if the device doesn't
have support for read/set the scrub rate.
On devices where this is not supported, reading (and/or writing) to this
sysfs node will return -ENODEV.
In the past, the sysfs node creation was done using the raw sysfs support.
Doing dynamic creation with the old code were much more complex. I guess
that's the reason why the code was written this way. Now that the code
uses struct device, it shouldn't be hard to change the code to only
create this attribute if the device has support for scrub rate setting.
Yet, that would change the userspace API. I'm not sure what
applications would rely on the current behavior. So, changing it
would require some investigation in order to avoid regressions.
Regards,
Mauro
^ permalink raw reply
* Re: SYSFS "errors"
From: Alan Stern @ 2013-02-18 21:48 UTC (permalink / raw)
To: Felipe Balbi
Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt,
Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem,
netdev, Doug Thompson, linux-edac, rjw, linux-pm
In-Reply-To: <20130218184633.GC10755@arwen.pp.htv.fi>
On Mon, 18 Feb 2013, Felipe Balbi wrote:
> Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote:
> > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms
> >
> > The issue with this file is, if the power.use_autosuspend flag is not
> > set for the device, then it can't be read or written to. This flag
> > changes dynamically with the system state
> > (__pm_runtime_use_autosuspend() can change it), so we can't just not
> > show the file if the flag is not set properly, sorry.
> >
> > So the "error" is correct here, as is the 0644 file value.
>
> hmm... we could create the file at pm_runtime_enable() time and remove
> it on pm_runtime_disable() time, no ? Addin Rafael to Cc
In theory this could be done, although the times would be when runtime
autosuspend is turned on or off, not when pm_runtime_enable is called.
Alan Stern
^ permalink raw reply
* Re: [PATCH net 2/3] bonding: Fix initialize after use for 3ad machine state spinlock
From: Nikolay Aleksandrov @ 2013-02-18 21:51 UTC (permalink / raw)
To: Jay Vosburgh; +Cc: netdev, davem, andy
In-Reply-To: <21258.1361223190@death.nxdomain>
On 18/02/13 22:33, Jay Vosburgh wrote:
> Nikolay Aleksandrov <nikolay@redhat.com> wrote:
>
>> The 3ad machine state spinlock can be used before it is inititialized
>> while doing bond_enslave() (and the port is being initialized) since
>> port->slave is set before the lock is prepared, thus causing soft
>> lock-ups and a multitude of other nasty bugs.
>
> Does this change cause the "uninitialized port" warnings in
> bond_3ad_state_machine_handler and bond_3ad_rx_indication to
> intermittently print during the enslavement process? If so (and it
> looks to me like it will), I think the warnings should be removed, since
> after this change, port->slave being NULL isn't really an error
> condition that needs a warning to the log.
>
This change couldn't cause that, it only initializes the spin lock
before the slave is set, currently after the first patch of this series
this is no longer a requirement as far as I can tell the only code that
can access the lock before the slave is set was that one, but it still
is a bug that can manifest later. I don't think it has anything to do
with the warnings, the only change is that the spin lock is initialized
prior to setting the slave to the port.
Am I missing something here ?
>> Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
>> ---
>> drivers/net/bonding/bond_3ad.c | 9 ++++-----
>> 1 file changed, 4 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
>> index 1720742..96d471e 100644
>> --- a/drivers/net/bonding/bond_3ad.c
>> +++ b/drivers/net/bonding/bond_3ad.c
>> @@ -389,13 +389,13 @@ static u8 __get_duplex(struct port *port)
>>
>> /**
>> * __initialize_port_locks - initialize a port's STATE machine spinlock
>> - * @port: the port we're looking at
>> + * @port: the slave of the port we're looking at
>> *
>> */
>> -static inline void __initialize_port_locks(struct port *port)
>> +static inline void __initialize_port_locks(struct slave *port)
>> {
>> // make sure it isn't called twice
>> - spin_lock_init(&(SLAVE_AD_INFO(port->slave).state_machine_lock));
>> + spin_lock_init(&(SLAVE_AD_INFO(port).state_machine_lock));
>
> Change the name of the variable here, too, not just the type.
> This is confusing.
>
> -J
Thanks, I saw that after posting, I have prepared this change already.
>
>> }
>>
>> //conversions
>> @@ -1910,6 +1910,7 @@ int bond_3ad_bind_slave(struct slave *slave)
>>
>> ad_initialize_port(port, bond->params.lacp_fast);
>>
>> + __initialize_port_locks(slave);
>> port->slave = slave;
>> port->actor_port_number = SLAVE_AD_INFO(slave).id;
>> // key is determined according to the link speed, duplex and user key(which is yet not supported)
>> @@ -1932,8 +1933,6 @@ int bond_3ad_bind_slave(struct slave *slave)
>> port->next_port_in_aggregator = NULL;
>>
>> __disable_port(port);
>> - __initialize_port_locks(port);
>> -
>>
>> // aggregator initialization
>> aggregator = &(SLAVE_AD_INFO(slave).aggregator);
>> --
>> 1.7.11.7
>>
>
> ---
> -Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
>
^ permalink raw reply
* Re: SYSFS "errors"
From: Greg KH @ 2013-02-18 21:54 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: balbi, Linux Kernel Mailing List, Steven Rostedt,
Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem,
netdev, Doug Thompson, linux-edac, rjw, linux-pm
In-Reply-To: <20130218184742.5a4c3c06@redhat.com>
On Mon, Feb 18, 2013 at 06:47:42PM -0300, Mauro Carvalho Chehab wrote:
> In the past, the sysfs node creation was done using the raw sysfs support.
> Doing dynamic creation with the old code were much more complex. I guess
> that's the reason why the code was written this way. Now that the code
> uses struct device, it shouldn't be hard to change the code to only
> create this attribute if the device has support for scrub rate setting.
>
> Yet, that would change the userspace API. I'm not sure what
> applications would rely on the current behavior. So, changing it
> would require some investigation in order to avoid regressions.
Because sysfs is "one value per file" the lack of a file showing up
shouldn't cause any userspace tools any problems, that is why we did
things this way.
But, of course, userspace programmers do know how to mess things up...
greg k-h
^ permalink raw reply
* Re: [PATCH linux-next] net: ipv6: Fix compiler warning
From: David Miller @ 2013-02-18 21:54 UTC (permalink / raw)
To: stratosk
Cc: steffen.klassert, kuznet, jmorris, yoshfuji, netdev, linux-kernel
In-Reply-To: <51229152.8010007@semaphore.gr>
Patches to fix this have already been applied to net-next, thanks.
^ permalink raw reply
* Re: [PATCH net-next 3/3] bonding: fix bond_release_all inconsistencies
From: Jay Vosburgh @ 2013-02-18 21:56 UTC (permalink / raw)
To: Nikolay Aleksandrov; +Cc: netdev, davem, andy
In-Reply-To: <1361210344-14907-3-git-send-email-nikolay@redhat.com>
Nikolay Aleksandrov <nikolay@redhat.com> wrote:
>This patch fixes the following inconsistencies in bond_release_all:
>- IFF_BONDING flag is not stripped from slaves
>- MTU is not restored
>- no netdev notifiers are sent
>Instead of trying to keep bond_release and bond_release_all in sync
>I think we can re-use bond_release as the environment for calling it
>is correct (RTNL is held). I have been running tests for the past
>week and they came out successful. The only way for bond_release to fail
>is for the slave to be attached in a different bond or to not be a slave
>but that cannot happen as RTNL is held and no slave manipulations can be
>achieved.
It might be worthwhile to add an "all" argument to bond_release
that skips some things that don't make sense if all slaves are being
released. I'm thinking in particular of this block:
if (oldcurrent == slave) {
/*
* Note that we hold RTNL over this sequence, so there
* is no concern that another slave add/remove event
* will interfere.
*/
write_unlock_bh(&bond->lock);
read_lock(&bond->lock);
write_lock_bh(&bond->curr_slave_lock);
bond_select_active_slave(bond);
write_unlock_bh(&bond->curr_slave_lock);
read_unlock(&bond->lock);
write_lock_bh(&bond->lock);
}
as it's written now, for the release all case, the code may go
to the trouble of assigning a new active slave each time one slave is
removed (including various log messages, maybe sending IGMPs, etc). If
all slaves are being removed, that's pointless. This could be something
like:
if (release_all) {
bond->curr_active_slave = NULL;
} else if (oldcurrent == slave) {
[ the current block of stuff ]
}
it's safe here to unconditionally set curr_active_slave to NULL
because we hold bond->lock for write. The lock dance stuff for the
bond_select_active_slave() call is to satisfy its locking requirements.
-J
>Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
>---
> drivers/net/bonding/bond_main.c | 106 ++--------------------------------------
> 1 file changed, 5 insertions(+), 101 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index 94c1534..fcfc880 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -2140,113 +2140,17 @@ static int bond_release_and_destroy(struct net_device *bond_dev,
> /*
> * This function releases all slaves.
> */
>-static int bond_release_all(struct net_device *bond_dev)
>+static void bond_release_all(struct net_device *bond_dev)
> {
> struct bonding *bond = netdev_priv(bond_dev);
>- struct slave *slave;
>- struct net_device *slave_dev;
>- struct sockaddr addr;
>-
>- write_lock_bh(&bond->lock);
>-
>- netif_carrier_off(bond_dev);
>
> if (bond->slave_cnt == 0)
>- goto out;
>-
>- bond->current_arp_slave = NULL;
>- bond->primary_slave = NULL;
>- bond_change_active_slave(bond, NULL);
>-
>- while ((slave = bond->first_slave) != NULL) {
>- /* Inform AD package of unbinding of slave
>- * before slave is detached from the list.
>- */
>- if (bond->params.mode == BOND_MODE_8023AD)
>- bond_3ad_unbind_slave(slave);
>-
>- slave_dev = slave->dev;
>- bond_detach_slave(bond, slave);
>-
>- /* now that the slave is detached, unlock and perform
>- * all the undo steps that should not be called from
>- * within a lock.
>- */
>- write_unlock_bh(&bond->lock);
>-
>- /* unregister rx_handler early so bond_handle_frame wouldn't
>- * be called for this slave anymore.
>- */
>- netdev_rx_handler_unregister(slave_dev);
>- synchronize_net();
>-
>- if (bond_is_lb(bond)) {
>- /* must be called only after the slave
>- * has been detached from the list
>- */
>- bond_alb_deinit_slave(bond, slave);
>- }
>-
>- bond_destroy_slave_symlinks(bond_dev, slave_dev);
>- bond_del_vlans_from_slave(bond, slave_dev);
>-
>- /* If the mode USES_PRIMARY, then we should only remove its
>- * promisc and mc settings if it was the curr_active_slave, but that was
>- * already taken care of above when we detached the slave
>- */
>- if (!USES_PRIMARY(bond->params.mode)) {
>- /* unset promiscuity level from slave */
>- if (bond_dev->flags & IFF_PROMISC)
>- dev_set_promiscuity(slave_dev, -1);
>-
>- /* unset allmulti level from slave */
>- if (bond_dev->flags & IFF_ALLMULTI)
>- dev_set_allmulti(slave_dev, -1);
>-
>- /* flush master's mc_list from slave */
>- netif_addr_lock_bh(bond_dev);
>- bond_mc_list_flush(bond_dev, slave_dev);
>- netif_addr_unlock_bh(bond_dev);
>- }
>-
>- bond_upper_dev_unlink(bond_dev, slave_dev);
>-
>- slave_disable_netpoll(slave);
>-
>- /* close slave before restoring its mac address */
>- dev_close(slave_dev);
>-
>- if (!bond->params.fail_over_mac) {
>- /* restore original ("permanent") mac address*/
>- memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN);
>- addr.sa_family = slave_dev->type;
>- dev_set_mac_address(slave_dev, &addr);
>- }
>-
>- kfree(slave);
>-
>- /* re-acquire the lock before getting the next slave */
>- write_lock_bh(&bond->lock);
>- }
>-
>- eth_hw_addr_random(bond_dev);
>- bond->dev_addr_from_first = true;
>-
>- if (bond_vlan_used(bond)) {
>- pr_warning("%s: Warning: clearing HW address of %s while it still has VLANs.\n",
>- bond_dev->name, bond_dev->name);
>- pr_warning("%s: When re-adding slaves, make sure the bond's HW address matches its VLANs'.\n",
>- bond_dev->name);
>- }
>-
>+ return;
>+ while (bond->first_slave != NULL)
>+ bond_release(bond_dev, bond->first_slave->dev);
> pr_info("%s: released all slaves\n", bond_dev->name);
>
>-out:
>- write_unlock_bh(&bond->lock);
>-
>- bond_compute_features(bond);
>-
>- return 0;
>+ return;
> }
>
> /*
>--
>1.7.11.7
---
-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox