* [PATCH] 9p: Kill set but unused variable in 9p_client_{read,write}() and p9_client_readdir()
From: David Miller @ 2011-04-12 22:59 UTC (permalink / raw)
To: netdev
Fixes the following warnings:
net/9p/client.c:1305:18: warning: variable ‘total’ set but not used [-Wunused-but-set-variable]
net/9p/client.c:1370:18: warning: variable ‘total’ set but not used [-Wunused-but-set-variable]
net/9p/client.c:1769:18: warning: variable ‘total’ set but not used [-Wunused-but-set-variable]
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/9p/client.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/net/9p/client.c b/net/9p/client.c
index 48b8e08..0ce9592 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -1302,7 +1302,7 @@ int
p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset,
u32 count)
{
- int err, rsize, total;
+ int err, rsize;
struct p9_client *clnt;
struct p9_req_t *req;
char *dataptr;
@@ -1311,7 +1311,6 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset,
(long long unsigned) offset, count);
err = 0;
clnt = fid->clnt;
- total = 0;
rsize = fid->iounit;
if (!rsize || rsize > clnt->msize-P9_IOHDRSZ)
@@ -1367,7 +1366,7 @@ int
p9_client_write(struct p9_fid *fid, char *data, const char __user *udata,
u64 offset, u32 count)
{
- int err, rsize, total;
+ int err, rsize;
struct p9_client *clnt;
struct p9_req_t *req;
@@ -1375,7 +1374,6 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata,
fid->fid, (long long unsigned) offset, count);
err = 0;
clnt = fid->clnt;
- total = 0;
rsize = fid->iounit;
if (!rsize || rsize > clnt->msize-P9_IOHDRSZ)
@@ -1766,7 +1764,7 @@ EXPORT_SYMBOL_GPL(p9_client_xattrcreate);
int p9_client_readdir(struct p9_fid *fid, char *data, u32 count, u64 offset)
{
- int err, rsize, total;
+ int err, rsize;
struct p9_client *clnt;
struct p9_req_t *req;
char *dataptr;
@@ -1776,7 +1774,6 @@ int p9_client_readdir(struct p9_fid *fid, char *data, u32 count, u64 offset)
err = 0;
clnt = fid->clnt;
- total = 0;
rsize = fid->iounit;
if (!rsize || rsize > clnt->msize-P9_READDIRHDRSZ)
--
1.7.4.3
^ permalink raw reply related
* pull request: wireless-next-2.6 2011-04-12
From: John W. Linville @ 2011-04-12 21:14 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
David,
Here is the first big wireless pull request for the 2.6.40 cycle...
There is the usual contingent of patches from the iwlwifi team, the
ath9k team, the rt2x00 team, the mwl8k guys and now the Bluetooth guys
as well. Also of note are the addition of the mwifiex driver from
Marvell and the removal of the ar9170usb driver which has been
obsoleted by carl9170. There are a number of other smaller
contributions too, of course.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 6ba1037c3d871ab70e342631516dbf841c35b086:
vxge: update driver version (2011-04-12 11:22:34 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6.git for-davem
Alexey Dobriyan (1):
Bluetooth: convert net/bluetooth/ to kstrtox
Amitkumar Karwar (1):
mwifiex: return success in set_default_key for WPA/WPA2
Andrei Emeltchenko (2):
Bluetooth: check L2CAP info_rsp ident and state
Bluetooth: delete hanging L2CAP channel
Ben Greear (1):
wifi: Add hwflags to debugfs.
Bing Zhao (6):
wireless: mwifiex: initial commit for Marvell mwifiex driver
mwifiex: remove macro SHORT_SLOT_TIME_DISABLED
mwifiex: remove MWIFIEX_BSS_MODE_ macros
ieee80211: add HT extended capabilities masks
mwifiex: remove struct mwifiex_802_11_fixed_ies
mwifiex: remove unused macros in decl.h and main.h
Brian Cavagnolo (4):
mwl8k: refactor in preparation for APIv2 update
mwl8k: update to ap firmware API version 2
mwl8k: differentiate between WMM queues and AMPDU queues
mwl8k: add internal API for managing AMPDU streams
Christian Lamparter (1):
ar9170usb: purge obsolete driver
Dan Carpenter (1):
iwlwifi: remove duplicate initialization in __iwl_down()
Daniel Halperin (4):
iwlwifi: limit number of attempts for highest HT rate
iwlwifi: cleanup and bugfix tx aggregation code
iwlwifi: add RATE_MCS_RATE_MSK
iwlwifi: set default aggregation frame limit to 63
Felix Fietkau (24):
ath9k: remove unnecessary debugfs return code checks
ath9k: add an interface for overriding the value of specific GPIO pins
ath9k: add support for overriding the MAC address through platform data
ath9k: add support for overriding LED pin and GPIO settings from platform data
ath9k_hw: enable a BlockAck related fixup specific to AR9100
ath9k_hw: force rx chainmask to 7 on AR9100
ath9k: remove the pending frames ath_txq_schedule workaround
ath9k: fix beacon timer handling issues
ath9k: trigger nfcal only after multiple missed beacons in AP mode
ath9k: fix stuck beacon detection
ath9k_hw: embed the ath_ops callbacks in the ath_hw struct
ath9k_hw: add a new register op for read-mask-write
ath9k_hw: replace REG_READ+REG_WRITE with REG_RMW
ath9k_hw: turn a few big macros into functions
ath9k_hw: remove pCap->total_queues
ath9k_hw: remove ah->config.ht_enable
ath9k_hw: remove pCap->reg_cap
ath9k_hw: remove pCap->keycache_size
ath9k_hw: remove ATH9K_HW_CAP_ENHANCEDPM
ath9k_hw: remove pCap->tx_triglevel_max
mac80211: fix suppressing probe responses in ad-hoc mode
mac80211: remove the dependency on crypto_blkcipher
ath9k: fix beacon slot processing in ad-hoc mode
ath9k: use the hw opmode to select the beacon timer mode
Gustavo F. Padovan (10):
Bluetooth: remove unnecessary function declaration
Bluetooth: Remove unused struct item
Bluetooth: Improve error message on wrong link type
Bluetooth: Remove unused struct l2cap_conn item
Bluetooth: Move bt_accept_enqueue() to outside __l2cap_chan_add
Bluetooth: Fix HCI_RESET command synchronization
Merge branch 'master' of git://git.kernel.org/.../padovan/bluetooth-2.6
Bluetooth: Remove gfp_mask param from hci_reassembly()
Bluetooth: Don't use spin_lock_bh in user context
Bluetooth: Use GFP_KERNEL in user context
Helmut Schaa (13):
mac80211: Minor optimization in tx status handling
rt2x00: Limit rt2x00pci rxdone processing to 16 entries at once
rt2x00: Limit rt2800pci txdone processing to 16 entries at once
rt2x00: Calculate tx status fifo size instead of hardcoding it
rt2x00: Remove DRIVER_SUPPORT_WATCHDOG flag
rt2x00: Restructure bw_comp calculation
rt2x00: Don't recalculate HT40 compensation for each rate
rt2x00: Indention cleanup in rt2800lib
rt2x00: Remove obsolete rt2x00queue_align_payload
rt2x00: Implement tx power temperature compensation
rt2x00: Fix STBC transmissions to STAs with Rx STBC > 1
rt2x00: Fix tx aggregation problems with some clients
rt2x00: Add an error message when trying to send on a full queue
Ivo van Doorn (1):
rt2x00: Add support for the ZyXEL NWD-211AN USB
Jarkko Nikula (2):
wl1251: Prepare for idle mode support
wl1251: Add support for idle mode
Johan Hedberg (7):
Bluetooth: Add define for the maximum name length on HCI level
Bluetooth: mgmt: Add local name information to read_info reply
Bluetooth: mgmt: Add support for setting the local name
Bluetooth: Add local Extended Inquiry Response (EIR) support
Bluetooth: Fix missing hci_dev_lock_bh in user_confirm_reply
Bluetooth: Add mgmt_device_found event
Bluetooth: Add mgmt_remote_name event
Johannes Berg (25):
iwlagn: clean up TX aggregation code
iwlagn: fix aggregation queue scheduler setup
mac80211: add comment about reordering
mac80211: clean up station cleanup timer
iwlagn: remove unused variable
iwlagn: clean up some 3945/4965 remnants
iwlagn: make mac80211 handlers static
iwlagn: clean up ucode loading
iwlagn: remove pointless return variables
iwlagn: simplify ucode check code
iwlagn: verify specific ucode
iwlagn: remove bootstrap code
iwlagn: centralize and fix ucode restart
iwlagn: remove ucode_data_backup
iwlagn: add feature flags
iwlagn: fix ucode verify message
iwlagn: clean up alive handling
iwlagn: init cmd_queue earlier
iwlagn: remove BSM clock setting
iwlagn: remove hw_wa_rev
iwlagn: remove hw_rev
iwlagn: remove rev_id
iwlagn: remove rxb page bookkeeping
iwlagn: remove ISR ops
iwlagn: move IO functions out of line
John W. Linville (4):
Merge branch 'wireless-next-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
Merge branch 'master' of git://git.kernel.org/.../padovan/bluetooth-next-2.6
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
Jouni Malinen (2):
ath9k: Support RSN IBSS
cfg80211: Add nl80211 event for deletion of a station entry
Jussi Kivilinna (1):
zd1211rw: rename CR* macros to ZD_CR*
Larry Finger (2):
rtlwifi: rtl8192c{e,u}: Remove some extraneous casts on memcpy commands
rtlwifi: Remove unused/unneeded variables
Luis R. Rodriguez (3):
ath9k_hw: remove AR9485 1.0 support
cfg80211: fix regulatory restore upon user hints
cfg80211: add a timer for invalid user reg hints
Marc Yang (6):
mwifiex: remove unnecessary _set_auth functions
mwifiex: use IEEE80211_HT_CAP_ macros for 11n cap_info
mwifiex: remove MWIFIEX_AUTH_MODE_ macros
mwifiex: remove unused radio_on variable and macros
mwifiex: remove unused macros in fw.h
mwifiex: cleanup power save related struct and macros
Marc-Antoine Perennou (1):
Bluetooth: add support for Apple MacBook Pro 8,2
Michal Marek (1):
rt2x00: Drop __TIME__ usage
Mohammed Shafi Shajakhan (4):
ath9k: cleanup few redundant macros
ath9k: remove set11n_virtualmorefrag
ath9k_hw: remove ath9k_get_channel_edges
mac80211: remove few obsolete flags
Nishant Sarmukadam (6):
mwl8k: add support for block ack commands
mwl8k: Initiate BA sessions
mwl8k: Handle the watchdog event from the firmware
mwl8k: Check outgoing rate for a station to decide if ampdu can be created
mwl8k: Queue ADDBA requests in respective data queues
mwl8k: Do not configure tx power unconditionally
Paul Stewart (1):
nl80211: Add BSS parameters to station
Rafał Miłecki (5):
ssb: trivial: use u8 for chip_rev (it's mask is 0xF)
ssb: pci: trivial: drop useless pointer
ssb: pci: fix mdio writes on newer cores (rev 10+)
ssb: pci: implement mdio reading
ssb: pci: implement serdes workaround
Rajkumar Manoharan (8):
ath9k_htc: Fix LED pin for AR9287 HTC device
ath9k_hw: Fix throughput drops in HT40 mode for AR9287 chips
ath: Speedup key set/reset ops for HTC driver
ath9k_hw: Speedup register ops for HTC driver
ath9k: deny new interface addtion on IBSS mode
ath9k: Cleanup ath_vif struct
ath9k: Handle BSSID/AID for multiple interfaces
Stanislaw Gruszka (4):
iwlegacy: MAINTAINERS
iwlwifi: fix enqueue hcmd race conditions
iwlwifi: more priv->mutex serialization
iwlwifi: remove sync_cmd_mutex
Suraj Sumangala (1):
Bluetooth: Increment unacked_frames count only the first transmit
Szymon Janc (15):
Bluetooth: Opencode macros in bnep/core.c
Bluetooth: Fix checkpatch errors and some code style issues in bnep
Bluetooth: Use #include <linux/uaccess.h> instead of <asm/uaccess.h>
Bluetooth: Fix checkpatch errors, code style issues and typos in hidp
Bluetooth: Do not use assignments in IF conditions
Bluetooth: Use #include <linux/uaccess.h> instead of <asm/uaccess.h>
Bluetooth: Fix checkpatch error in cmtp.h
Bluetooth: Rename cmd to param in pending_cmd
Bluetooth: Allow for NULL data in mgmt_pending_add
Bluetooth: Add read_local_oob_data management command
Bluetooth: Add add/remove_remote_oob_data management commands
Bluetooth: Enable support for out of band association model
Bluetooth: Use kthread API in hidp
Bluetooth: Use kthread API in bnep
Bluetooth: Use kthread API in cmtp
Thomas Gleixner (1):
Bluetooth: Fix warning with hci_cmd_timer
Vasanthakumar Thiagarajan (1):
ath9k_hw: Use appropriate rx gain table for AR9485
Vasily Khoruzhick (1):
libertas_spi: Add support for suspend/resume
Vinicius Costa Gomes (1):
Bluetooth: Fix sending LE data over USB
Wey-Yi Guy (10):
iwlegacy: MAINTAINERS
iwlagn: use 6030 configuration for 6035 series
iwlwifi: remove legacy isr tasklet
iwlagn: remove 3945 only station code
iwlagn: remove reference to 3945 and 4965
iwlagn: remove deprecated module parameters
iwlagn: remove more 3945/4965 related defines
iwlagn: return send calibration result
iwlagn: change Copyright to 2011
iwlagn: check more error return code
Xose Vazquez Perez (1):
wireless: rt2x00: rt{2500,73}usb.c fix duplicate ids
Yogesh Ashok Powar (2):
mwifiex: remove helper functions for displaying 11n capabilities
mwifiex: remove redundant encryption_mode mapping
Documentation/feature-removal-schedule.txt | 11 -
MAINTAINERS | 13 +-
drivers/net/wireless/Kconfig | 1 +
drivers/net/wireless/Makefile | 2 +
drivers/net/wireless/ath/Kconfig | 1 -
drivers/net/wireless/ath/Makefile | 1 -
drivers/net/wireless/ath/ar9170/Kconfig | 20 -
drivers/net/wireless/ath/ar9170/Makefile | 3 -
drivers/net/wireless/ath/ar9170/ar9170.h | 258 --
drivers/net/wireless/ath/ar9170/cmd.c | 127 -
drivers/net/wireless/ath/ar9170/cmd.h | 92 -
drivers/net/wireless/ath/ar9170/eeprom.h | 179 --
drivers/net/wireless/ath/ar9170/hw.h | 430 ---
drivers/net/wireless/ath/ar9170/led.c | 181 --
drivers/net/wireless/ath/ar9170/mac.c | 519 ----
drivers/net/wireless/ath/ar9170/main.c | 2190 ---------------
drivers/net/wireless/ath/ar9170/phy.c | 1719 ------------
drivers/net/wireless/ath/ar9170/usb.c | 1008 -------
drivers/net/wireless/ath/ar9170/usb.h | 82 -
drivers/net/wireless/ath/ath.h | 1 +
drivers/net/wireless/ath/ath9k/ar5008_phy.c | 45 +-
drivers/net/wireless/ath/ath9k/ar9002_calib.c | 43 +-
drivers/net/wireless/ath/ath9k/ar9002_mac.c | 12 -
drivers/net/wireless/ath/ath9k/ar9003_hw.c | 98 +-
drivers/net/wireless/ath/ath9k/ar9003_mac.c | 12 -
drivers/net/wireless/ath/ath9k/ar9485_initvals.h | 925 ------
drivers/net/wireless/ath/ath9k/ath9k.h | 14 +-
drivers/net/wireless/ath/ath9k/beacon.c | 207 +-
drivers/net/wireless/ath/ath9k/common.c | 2 +-
drivers/net/wireless/ath/ath9k/debug.c | 94 +-
drivers/net/wireless/ath/ath9k/eeprom_9287.c | 6 +
drivers/net/wireless/ath/ath9k/eeprom_def.c | 7 +
drivers/net/wireless/ath/ath9k/gpio.c | 14 +-
drivers/net/wireless/ath/ath9k/htc.h | 2 +-
drivers/net/wireless/ath/ath9k/htc_drv_beacon.c | 9 +-
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 33 +-
drivers/net/wireless/ath/ath9k/hw-ops.h | 6 -
drivers/net/wireless/ath/ath9k/hw.c | 206 +-
drivers/net/wireless/ath/ath9k/hw.h | 66 +-
drivers/net/wireless/ath/ath9k/init.c | 53 +-
drivers/net/wireless/ath/ath9k/mac.c | 113 +-
drivers/net/wireless/ath/ath9k/main.c | 175 +-
drivers/net/wireless/ath/ath9k/phy.h | 14 -
drivers/net/wireless/ath/ath9k/recv.c | 2 +-
drivers/net/wireless/ath/ath9k/reg.h | 1 +
drivers/net/wireless/ath/ath9k/xmit.c | 29 +-
drivers/net/wireless/ath/key.c | 32 +
drivers/net/wireless/iwlwifi/Makefile | 2 +-
drivers/net/wireless/iwlwifi/iwl-1000.c | 16 +-
drivers/net/wireless/iwlwifi/iwl-2000.c | 48 +-
drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 29 +-
drivers/net/wireless/iwlwifi/iwl-6000-hw.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 46 +-
drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-agn-calib.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c | 52 +-
drivers/net/wireless/iwlwifi/iwl-agn-debugfs.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c | 6 +-
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-agn-ict.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-agn-led.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-led.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 6 +-
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 29 +-
drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 30 +-
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-agn-tt.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-tt.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 142 +-
drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | 122 +-
drivers/net/wireless/iwlwifi/iwl-agn.c | 529 +---
drivers/net/wireless/iwlwifi/iwl-agn.h | 45 +-
drivers/net/wireless/iwlwifi/iwl-commands.h | 647 +-----
drivers/net/wireless/iwlwifi/iwl-core.c | 114 +-
drivers/net/wireless/iwlwifi/iwl-core.h | 40 +-
drivers/net/wireless/iwlwifi/iwl-csr.h | 43 +-
drivers/net/wireless/iwlwifi/iwl-debug.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 9 +-
drivers/net/wireless/iwlwifi/iwl-dev.h | 274 +--
drivers/net/wireless/iwlwifi/iwl-devtrace.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-devtrace.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 50 +-
drivers/net/wireless/iwlwifi/iwl-eeprom.h | 191 +--
drivers/net/wireless/iwlwifi/iwl-fh.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-hcmd.c | 17 +-
drivers/net/wireless/iwlwifi/iwl-helpers.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-io.c | 274 ++
drivers/net/wireless/iwlwifi/iwl-io.h | 491 +----
drivers/net/wireless/iwlwifi/iwl-led.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-led.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-power.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-power.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-prph.h | 342 +---
drivers/net/wireless/iwlwifi/iwl-rx.c | 13 +-
drivers/net/wireless/iwlwifi/iwl-scan.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-spectrum.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-sta.c | 9 +-
drivers/net/wireless/iwlwifi/iwl-sta.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-tx.c | 68 +-
drivers/net/wireless/libertas/if_spi.c | 65 +
drivers/net/wireless/mwifiex/11n.c | 809 ++++++
drivers/net/wireless/mwifiex/11n.h | 176 ++
drivers/net/wireless/mwifiex/11n_aggr.c | 423 +++
drivers/net/wireless/mwifiex/11n_aggr.h | 32 +
drivers/net/wireless/mwifiex/11n_rxreorder.c | 637 +++++
drivers/net/wireless/mwifiex/11n_rxreorder.h | 67 +
drivers/net/wireless/mwifiex/Kconfig | 21 +
drivers/net/wireless/mwifiex/Makefile | 41 +
drivers/net/wireless/mwifiex/README | 204 ++
drivers/net/wireless/mwifiex/cfg80211.c | 1456 ++++++++++
drivers/net/wireless/mwifiex/cfg80211.h | 31 +
drivers/net/wireless/mwifiex/cfp.c | 367 +++
drivers/net/wireless/mwifiex/cmdevt.c | 1459 ++++++++++
drivers/net/wireless/mwifiex/debugfs.c | 773 +++++
drivers/net/wireless/mwifiex/decl.h | 153 +
drivers/net/wireless/mwifiex/fw.h | 1229 ++++++++
drivers/net/wireless/mwifiex/init.c | 662 +++++
drivers/net/wireless/mwifiex/ioctl.h | 411 +++
drivers/net/wireless/mwifiex/join.c | 1462 ++++++++++
drivers/net/wireless/mwifiex/main.c | 1102 ++++++++
drivers/net/wireless/mwifiex/main.h | 1058 +++++++
drivers/net/wireless/mwifiex/scan.c | 3097 +++++++++++++++++++++
drivers/net/wireless/mwifiex/sdio.c | 1770 ++++++++++++
drivers/net/wireless/mwifiex/sdio.h | 305 ++
drivers/net/wireless/mwifiex/sta_cmd.c | 1226 ++++++++
drivers/net/wireless/mwifiex/sta_cmdresp.c | 983 +++++++
drivers/net/wireless/mwifiex/sta_event.c | 405 +++
drivers/net/wireless/mwifiex/sta_ioctl.c | 2360 ++++++++++++++++
drivers/net/wireless/mwifiex/sta_rx.c | 182 ++
drivers/net/wireless/mwifiex/sta_tx.c | 202 ++
drivers/net/wireless/mwifiex/txrx.c | 202 ++
drivers/net/wireless/mwifiex/util.c | 252 ++
drivers/net/wireless/mwifiex/util.h | 32 +
drivers/net/wireless/mwifiex/wmm.c | 1237 ++++++++
drivers/net/wireless/mwifiex/wmm.h | 112 +
drivers/net/wireless/mwl8k.c | 749 +++++-
drivers/net/wireless/rt2x00/rt2400pci.c | 6 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 6 +-
drivers/net/wireless/rt2x00/rt2500usb.c | 5 -
drivers/net/wireless/rt2x00/rt2800.h | 106 +
drivers/net/wireless/rt2x00/rt2800lib.c | 198 ++-
drivers/net/wireless/rt2x00/rt2800lib.h | 1 +
drivers/net/wireless/rt2x00/rt2800pci.c | 19 +-
drivers/net/wireless/rt2x00/rt2800usb.c | 3 +-
drivers/net/wireless/rt2x00/rt2x00.h | 7 +-
drivers/net/wireless/rt2x00/rt2x00debug.c | 1 -
drivers/net/wireless/rt2x00/rt2x00dev.c | 28 +-
drivers/net/wireless/rt2x00/rt2x00ht.c | 7 +-
drivers/net/wireless/rt2x00/rt2x00lib.h | 23 +-
drivers/net/wireless/rt2x00/rt2x00link.c | 49 +-
drivers/net/wireless/rt2x00/rt2x00pci.c | 7 +-
drivers/net/wireless/rt2x00/rt2x00pci.h | 5 +-
drivers/net/wireless/rt2x00/rt2x00queue.c | 18 +-
drivers/net/wireless/rt2x00/rt2x00queue.h | 1 +
drivers/net/wireless/rt2x00/rt61pci.c | 6 +-
drivers/net/wireless/rt2x00/rt73usb.c | 2 -
drivers/net/wireless/rtlwifi/base.c | 5 +-
drivers/net/wireless/rtlwifi/core.c | 8 +-
drivers/net/wireless/rtlwifi/efuse.c | 106 +-
drivers/net/wireless/rtlwifi/pci.c | 53 +-
drivers/net/wireless/rtlwifi/pci.h | 4 +-
drivers/net/wireless/rtlwifi/ps.c | 3 +-
drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | 38 +-
drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | 4 +-
drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 2 +-
drivers/net/wireless/rtlwifi/wifi.h | 18 +-
drivers/net/wireless/wl1251/cmd.h | 4 +-
drivers/net/wireless/wl1251/event.c | 6 +-
drivers/net/wireless/wl1251/main.c | 22 +-
drivers/net/wireless/wl1251/ps.c | 23 +-
drivers/net/wireless/wl1251/ps.h | 2 +-
drivers/net/wireless/wl1251/wl1251.h | 9 +-
drivers/net/wireless/zd1211rw/zd_chip.c | 262 +-
drivers/net/wireless/zd1211rw/zd_chip.h | 529 ++--
drivers/net/wireless/zd1211rw/zd_rf.h | 2 +-
drivers/net/wireless/zd1211rw/zd_rf_al2230.c | 198 +-
drivers/net/wireless/zd1211rw/zd_rf_al7230b.c | 240 +-
drivers/net/wireless/zd1211rw/zd_rf_rf2959.c | 78 +-
drivers/net/wireless/zd1211rw/zd_rf_uw2453.c | 86 +-
drivers/net/wireless/zd1211rw/zd_usb.c | 4 +-
drivers/net/wireless/zd1211rw/zd_usb.h | 2 +-
drivers/ssb/driver_pcicore.c | 104 +-
drivers/ssb/scan.c | 2 +-
include/linux/ath9k_platform.h | 5 +
include/linux/ieee80211.h | 9 +
include/linux/nl80211.h | 35 +-
include/linux/ssb/ssb.h | 2 +-
include/net/bluetooth/hci.h | 40 +-
include/net/bluetooth/hci_core.h | 25 +-
include/net/bluetooth/l2cap.h | 2 -
include/net/bluetooth/mgmt.h | 47 +
include/net/cfg80211.h | 43 +
net/bluetooth/bnep/bnep.h | 148 +-
net/bluetooth/bnep/core.c | 71 +-
net/bluetooth/bnep/sock.c | 2 +-
net/bluetooth/cmtp/capi.c | 6 +-
net/bluetooth/cmtp/cmtp.h | 11 +-
net/bluetooth/cmtp/core.c | 25 +-
net/bluetooth/cmtp/sock.c | 2 +-
net/bluetooth/hci_core.c | 79 +-
net/bluetooth/hci_event.c | 95 +-
net/bluetooth/hci_sysfs.c | 40 +-
net/bluetooth/hidp/core.c | 90 +-
net/bluetooth/hidp/hidp.h | 6 +-
net/bluetooth/hidp/sock.c | 7 +-
net/bluetooth/l2cap_core.c | 27 +-
net/bluetooth/mgmt.c | 518 ++++-
net/mac80211/Kconfig | 1 -
net/mac80211/cfg.c | 13 +-
net/mac80211/debugfs.c | 89 +-
net/mac80211/ibss.c | 3 +-
net/mac80211/ieee80211_i.h | 4 +-
net/mac80211/main.c | 5 -
net/mac80211/mlme.c | 9 -
net/mac80211/rx.c | 2 +
net/mac80211/sta_info.c | 15 +-
net/mac80211/sta_info.h | 1 -
net/mac80211/status.c | 11 +-
net/mac80211/tkip.c | 4 +-
net/mac80211/tkip.h | 4 +-
net/mac80211/util.c | 2 +-
net/mac80211/wep.c | 34 +-
net/mac80211/wep.h | 4 +-
net/wireless/mlme.c | 9 +
net/wireless/nl80211.c | 55 +-
net/wireless/nl80211.h | 3 +
net/wireless/reg.c | 71 +-
230 files changed, 29858 insertions(+), 12692 deletions(-)
delete mode 100644 drivers/net/wireless/ath/ar9170/Kconfig
delete mode 100644 drivers/net/wireless/ath/ar9170/Makefile
delete mode 100644 drivers/net/wireless/ath/ar9170/ar9170.h
delete mode 100644 drivers/net/wireless/ath/ar9170/cmd.c
delete mode 100644 drivers/net/wireless/ath/ar9170/cmd.h
delete mode 100644 drivers/net/wireless/ath/ar9170/eeprom.h
delete mode 100644 drivers/net/wireless/ath/ar9170/hw.h
delete mode 100644 drivers/net/wireless/ath/ar9170/led.c
delete mode 100644 drivers/net/wireless/ath/ar9170/mac.c
delete mode 100644 drivers/net/wireless/ath/ar9170/main.c
delete mode 100644 drivers/net/wireless/ath/ar9170/phy.c
delete mode 100644 drivers/net/wireless/ath/ar9170/usb.c
delete mode 100644 drivers/net/wireless/ath/ar9170/usb.h
create mode 100644 drivers/net/wireless/iwlwifi/iwl-io.c
create mode 100644 drivers/net/wireless/mwifiex/11n.c
create mode 100644 drivers/net/wireless/mwifiex/11n.h
create mode 100644 drivers/net/wireless/mwifiex/11n_aggr.c
create mode 100644 drivers/net/wireless/mwifiex/11n_aggr.h
create mode 100644 drivers/net/wireless/mwifiex/11n_rxreorder.c
create mode 100644 drivers/net/wireless/mwifiex/11n_rxreorder.h
create mode 100644 drivers/net/wireless/mwifiex/Kconfig
create mode 100644 drivers/net/wireless/mwifiex/Makefile
create mode 100644 drivers/net/wireless/mwifiex/README
create mode 100644 drivers/net/wireless/mwifiex/cfg80211.c
create mode 100644 drivers/net/wireless/mwifiex/cfg80211.h
create mode 100644 drivers/net/wireless/mwifiex/cfp.c
create mode 100644 drivers/net/wireless/mwifiex/cmdevt.c
create mode 100644 drivers/net/wireless/mwifiex/debugfs.c
create mode 100644 drivers/net/wireless/mwifiex/decl.h
create mode 100644 drivers/net/wireless/mwifiex/fw.h
create mode 100644 drivers/net/wireless/mwifiex/init.c
create mode 100644 drivers/net/wireless/mwifiex/ioctl.h
create mode 100644 drivers/net/wireless/mwifiex/join.c
create mode 100644 drivers/net/wireless/mwifiex/main.c
create mode 100644 drivers/net/wireless/mwifiex/main.h
create mode 100644 drivers/net/wireless/mwifiex/scan.c
create mode 100644 drivers/net/wireless/mwifiex/sdio.c
create mode 100644 drivers/net/wireless/mwifiex/sdio.h
create mode 100644 drivers/net/wireless/mwifiex/sta_cmd.c
create mode 100644 drivers/net/wireless/mwifiex/sta_cmdresp.c
create mode 100644 drivers/net/wireless/mwifiex/sta_event.c
create mode 100644 drivers/net/wireless/mwifiex/sta_ioctl.c
create mode 100644 drivers/net/wireless/mwifiex/sta_rx.c
create mode 100644 drivers/net/wireless/mwifiex/sta_tx.c
create mode 100644 drivers/net/wireless/mwifiex/txrx.c
create mode 100644 drivers/net/wireless/mwifiex/util.c
create mode 100644 drivers/net/wireless/mwifiex/util.h
create mode 100644 drivers/net/wireless/mwifiex/wmm.c
create mode 100644 drivers/net/wireless/mwifiex/wmm.h
Omnibus patch available here:
http://www.kernel.org/pub/linux/kernel/people/linville/wireless-next-2.6-2011-04-12.patch.bz2
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* [PATCH] atm: iphase: Fix set-but-not-used warnings.
From: David Miller @ 2011-04-12 23:10 UTC (permalink / raw)
To: netdev
The "iavcc" case is obvious.
The intr_status and frmr_intr cases are reading a register to clear
the chip status. This driver is pretty old and creaky, and uses
volatile pointer dereferences to do register I/O when it should be
using readl() and friends. However that it outside of the scope of
these changes.
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/atm/iphase.c | 10 +++-------
1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index 1c674a9..bb7e139 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -613,7 +613,6 @@ static int ia_que_tx (IADEV *iadev) {
struct sk_buff *skb;
int num_desc;
struct atm_vcc *vcc;
- struct ia_vcc *iavcc;
num_desc = ia_avail_descs(iadev);
while (num_desc && (skb = skb_dequeue(&iadev->tx_backlog))) {
@@ -627,7 +626,6 @@ static int ia_que_tx (IADEV *iadev) {
printk("Free the SKB on closed vci %d \n", vcc->vci);
break;
}
- iavcc = INPH_IA_VCC(vcc);
if (ia_pkt_tx (vcc, skb)) {
skb_queue_head(&iadev->tx_backlog, skb);
}
@@ -823,8 +821,6 @@ static void IaFrontEndIntr(IADEV *iadev) {
volatile IA_SUNI *suni;
volatile ia_mb25_t *mb25;
volatile suni_pm7345_t *suni_pm7345;
- u32 intr_status;
- u_int frmr_intr;
if(iadev->phy_type & FE_25MBIT_PHY) {
mb25 = (ia_mb25_t*)iadev->phy;
@@ -832,18 +828,18 @@ static void IaFrontEndIntr(IADEV *iadev) {
} else if (iadev->phy_type & FE_DS3_PHY) {
suni_pm7345 = (suni_pm7345_t *)iadev->phy;
/* clear FRMR interrupts */
- frmr_intr = suni_pm7345->suni_ds3_frm_intr_stat;
+ (void) suni_pm7345->suni_ds3_frm_intr_stat;
iadev->carrier_detect =
Boolean(!(suni_pm7345->suni_ds3_frm_stat & SUNI_DS3_LOSV));
} else if (iadev->phy_type & FE_E3_PHY ) {
suni_pm7345 = (suni_pm7345_t *)iadev->phy;
- frmr_intr = suni_pm7345->suni_e3_frm_maint_intr_ind;
+ (void) suni_pm7345->suni_e3_frm_maint_intr_ind;
iadev->carrier_detect =
Boolean(!(suni_pm7345->suni_e3_frm_fram_intr_ind_stat&SUNI_E3_LOS));
}
else {
suni = (IA_SUNI *)iadev->phy;
- intr_status = suni->suni_rsop_status & 0xff;
+ (void) suni->suni_rsop_status;
iadev->carrier_detect = Boolean(!(suni->suni_rsop_status & SUNI_LOSV));
}
if (iadev->carrier_detect)
--
1.7.4.3
^ permalink raw reply related
* Re: [PATCH] atm: iphase: Fix set-but-not-used warnings.
From: David Miller @ 2011-04-12 23:11 UTC (permalink / raw)
To: netdev
In-Reply-To: <20110412.161047.233699167.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Tue, 12 Apr 2011 16:10:47 -0700 (PDT)
>
> The "iavcc" case is obvious.
>
> The intr_status and frmr_intr cases are reading a register to clear
> the chip status. This driver is pretty old and creaky, and uses
> volatile pointer dereferences to do register I/O when it should be
> using readl() and friends. However that it outside of the scope of
> these changes.
>
> Signed-off-by: David S. Miller <davem@davemloft.net>
Hmmm, I missed a few more cases, updated patch coming up.
^ permalink raw reply
* [PATCH v2] atm: iphase: Fix set-but-not-used warnings.
From: David Miller @ 2011-04-12 23:14 UTC (permalink / raw)
To: netdev
The "iavcc" and "iadev" cases are obvious.
The intr_status and frmr_intr cases are reading a register to clear
the chip status. This driver is pretty old and creaky, and uses
volatile pointer dereferences to do register I/O when it should be
using readl() and friends. However that it outside of the scope of
these changes.
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/atm/iphase.c | 14 +++-----------
1 files changed, 3 insertions(+), 11 deletions(-)
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index 1c674a9..dee4f01 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -613,7 +613,6 @@ static int ia_que_tx (IADEV *iadev) {
struct sk_buff *skb;
int num_desc;
struct atm_vcc *vcc;
- struct ia_vcc *iavcc;
num_desc = ia_avail_descs(iadev);
while (num_desc && (skb = skb_dequeue(&iadev->tx_backlog))) {
@@ -627,7 +626,6 @@ static int ia_que_tx (IADEV *iadev) {
printk("Free the SKB on closed vci %d \n", vcc->vci);
break;
}
- iavcc = INPH_IA_VCC(vcc);
if (ia_pkt_tx (vcc, skb)) {
skb_queue_head(&iadev->tx_backlog, skb);
}
@@ -823,8 +821,6 @@ static void IaFrontEndIntr(IADEV *iadev) {
volatile IA_SUNI *suni;
volatile ia_mb25_t *mb25;
volatile suni_pm7345_t *suni_pm7345;
- u32 intr_status;
- u_int frmr_intr;
if(iadev->phy_type & FE_25MBIT_PHY) {
mb25 = (ia_mb25_t*)iadev->phy;
@@ -832,18 +828,18 @@ static void IaFrontEndIntr(IADEV *iadev) {
} else if (iadev->phy_type & FE_DS3_PHY) {
suni_pm7345 = (suni_pm7345_t *)iadev->phy;
/* clear FRMR interrupts */
- frmr_intr = suni_pm7345->suni_ds3_frm_intr_stat;
+ (void) suni_pm7345->suni_ds3_frm_intr_stat;
iadev->carrier_detect =
Boolean(!(suni_pm7345->suni_ds3_frm_stat & SUNI_DS3_LOSV));
} else if (iadev->phy_type & FE_E3_PHY ) {
suni_pm7345 = (suni_pm7345_t *)iadev->phy;
- frmr_intr = suni_pm7345->suni_e3_frm_maint_intr_ind;
+ (void) suni_pm7345->suni_e3_frm_maint_intr_ind;
iadev->carrier_detect =
Boolean(!(suni_pm7345->suni_e3_frm_fram_intr_ind_stat&SUNI_E3_LOS));
}
else {
suni = (IA_SUNI *)iadev->phy;
- intr_status = suni->suni_rsop_status & 0xff;
+ (void) suni->suni_rsop_status;
iadev->carrier_detect = Boolean(!(suni->suni_rsop_status & SUNI_LOSV));
}
if (iadev->carrier_detect)
@@ -2660,7 +2656,6 @@ static void ia_close(struct atm_vcc *vcc)
static int ia_open(struct atm_vcc *vcc)
{
- IADEV *iadev;
struct ia_vcc *ia_vcc;
int error;
if (!test_bit(ATM_VF_PARTIAL,&vcc->flags))
@@ -2668,7 +2663,6 @@ static int ia_open(struct atm_vcc *vcc)
IF_EVENT(printk("ia: not partially allocated resources\n");)
vcc->dev_data = NULL;
}
- iadev = INPH_IA_DEV(vcc->dev);
if (vcc->vci != ATM_VPI_UNSPEC && vcc->vpi != ATM_VCI_UNSPEC)
{
IF_EVENT(printk("iphase open: unspec part\n");)
@@ -3052,11 +3046,9 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
static int ia_send(struct atm_vcc *vcc, struct sk_buff *skb)
{
IADEV *iadev;
- struct ia_vcc *iavcc;
unsigned long flags;
iadev = INPH_IA_DEV(vcc->dev);
- iavcc = INPH_IA_VCC(vcc);
if ((!skb)||(skb->len>(iadev->tx_buf_sz-sizeof(struct cpcs_trailer))))
{
if (!skb)
--
1.7.4.3
^ permalink raw reply related
* Re: [Bugme-new] [Bug 32832] New: shutdown(2) does not fully shut down socket any more
From: Andrew Morton @ 2011-04-12 23:15 UTC (permalink / raw)
To: netdev; +Cc: bugzilla-daemon, bugme-daemon, kees
In-Reply-To: <bug-32832-10286@https.bugzilla.kernel.org/>
(switched to email. Please respond via emailed reply-to-all, not via the
bugzilla web interface).
On Wed, 6 Apr 2011 22:42:38 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=32832
There is a tescase attached to this bugzilla report.
> Summary: shutdown(2) does not fully shut down socket any more
> Product: Networking
> Version: 2.5
> Kernel Version: 2.6.38
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: IPV4
> AssignedTo: shemminger@linux-foundation.org
> ReportedBy: kees@outflux.net
> Regression: Yes
>
>
> In 2.6.35 and earlier, shutdown(2) will fully remove a socket. This does not
> appear to be true any more and is causing software to misbehave.
>
> 2.6.35:
> $ ./testcase
> parent: 5957
> before:
> tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN
> after:
> child: 5961
> $ ./testcase
> parent: 6001
> before:
> tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN
> after:
> child: 6002
>
> 2.6.38:
> $ ./testcase
> parent: 1138
> before:
> tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN
> after:
> child: 1142
> $ ./testcase
> bind: Address already in use
>
> The listener doesn't show up in netstat any more, but as long as the child
> process is running, the socket is unavailable. It is as if the shutdown(2)
> behavior has partially reverted to close(2) behavior (but in the case of using
> close(2), the child's socket would remain visible in netstat).
>
^ permalink raw reply
* Re: [Bugme-new] [Bug 32832] New: shutdown(2) does not fully shut down socket any more
From: David Miller @ 2011-04-12 23:17 UTC (permalink / raw)
To: akpm; +Cc: netdev, bugzilla-daemon, bugme-daemon, kees
In-Reply-To: <20110412161556.0641bdae.akpm@linux-foundation.org>
From: Andrew Morton <akpm@linux-foundation.org>
Date: Tue, 12 Apr 2011 16:15:56 -0700
>
> (switched to email. Please respond via emailed reply-to-all, not via the
> bugzilla web interface).
Stephen Hemminger forwarded this to the list last week, and Eric
Dumazet is actively working on a fix.
^ permalink raw reply
* Re: pull request: wireless-next-2.6 2011-04-12
From: David Miller @ 2011-04-12 23:18 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev
In-Reply-To: <20110412211429.GE24309@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Tue, 12 Apr 2011 17:14:34 -0400
> Here is the first big wireless pull request for the 2.6.40 cycle...
>
> There is the usual contingent of patches from the iwlwifi team, the
> ath9k team, the rt2x00 team, the mwl8k guys and now the Bluetooth guys
> as well. Also of note are the addition of the mwifiex driver from
> Marvell and the removal of the ar9170usb driver which has been
> obsoleted by carl9170. There are a number of other smaller
> contributions too, of course.
>
> Please let me know if there are problems!
Pulled, thanks John.
^ permalink raw reply
* Re: [PATCH] r8169: Be verbose when unable to load fw patch
From: David Miller @ 2011-04-12 23:20 UTC (permalink / raw)
To: bp; +Cc: romieu, linux-kernel, borislav.petkov, netdev
In-Reply-To: <1302615172-1646-1-git-send-email-bp@amd64.org>
From: Borislav Petkov <bp@amd64.org>
Date: Tue, 12 Apr 2011 15:32:52 +0200
> From: Borislav Petkov <borislav.petkov@amd.com>
>
> When the driver fails loading the firmware, it doesn't say which patch
> exactly it is missing. We have three different firmware images depending
> on the hw revision, so mention the exact patch name it is unable to load
> in the warning message.
>
> Cc: Francois Romieu <romieu@fr.zoreil.com>
> Cc: netdev@vger.kernel.org
> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Seems reasonable, Francois?
^ permalink raw reply
* [PATCH] e1000: Remove blink_led_start declaration
From: Yinghai Lu @ 2011-04-12 23:28 UTC (permalink / raw)
To: Jeff Kirsher, Jesse Brandeburg; +Cc: e1000-devel, NetDev
It is left over code.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
drivers/net/e1000/e1000_hw.h | 1 -
1 file changed, 1 deletion(-)
Index: linux-2.6/drivers/net/e1000/e1000_hw.h
===================================================================
--- linux-2.6.orig/drivers/net/e1000/e1000_hw.h
+++ linux-2.6/drivers/net/e1000/e1000_hw.h
@@ -386,7 +386,6 @@ s32 e1000_setup_led(struct e1000_hw *hw)
s32 e1000_cleanup_led(struct e1000_hw *hw);
s32 e1000_led_on(struct e1000_hw *hw);
s32 e1000_led_off(struct e1000_hw *hw);
-s32 e1000_blink_led_start(struct e1000_hw *hw);
/* Adaptive IFS Functions */
^ permalink raw reply
* [PATCH] ixgbe: Remove not used blink_led_start/stop code
From: Yinghai Lu @ 2011-04-12 23:30 UTC (permalink / raw)
To: Jeff Kirsher, Jesse Brandeburg; +Cc: e1000-devel, NetDev
In-Reply-To: <4DA4E016.1050800@kernel.org>
There is no user for those code.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
drivers/net/ixgbe/ixgbe_82598.c | 2 -
drivers/net/ixgbe/ixgbe_82599.c | 2 -
drivers/net/ixgbe/ixgbe_common.c | 56 ---------------------------------------
drivers/net/ixgbe/ixgbe_common.h | 2 -
drivers/net/ixgbe/ixgbe_type.h | 2 -
drivers/net/ixgbe/ixgbe_x540.c | 2 -
6 files changed, 66 deletions(-)
Index: linux-2.6/drivers/net/ixgbe/ixgbe_82598.c
===================================================================
--- linux-2.6.orig/drivers/net/ixgbe/ixgbe_82598.c
+++ linux-2.6/drivers/net/ixgbe/ixgbe_82598.c
@@ -1207,8 +1207,6 @@ static struct ixgbe_mac_operations mac_o
.get_link_capabilities = &ixgbe_get_link_capabilities_82598,
.led_on = &ixgbe_led_on_generic,
.led_off = &ixgbe_led_off_generic,
- .blink_led_start = &ixgbe_blink_led_start_generic,
- .blink_led_stop = &ixgbe_blink_led_stop_generic,
.set_rar = &ixgbe_set_rar_generic,
.clear_rar = &ixgbe_clear_rar_generic,
.set_vmdq = &ixgbe_set_vmdq_82598,
Index: linux-2.6/drivers/net/ixgbe/ixgbe_82599.c
===================================================================
--- linux-2.6.orig/drivers/net/ixgbe/ixgbe_82599.c
+++ linux-2.6/drivers/net/ixgbe/ixgbe_82599.c
@@ -2052,8 +2052,6 @@ static struct ixgbe_mac_operations mac_o
.get_link_capabilities = &ixgbe_get_link_capabilities_82599,
.led_on = &ixgbe_led_on_generic,
.led_off = &ixgbe_led_off_generic,
- .blink_led_start = &ixgbe_blink_led_start_generic,
- .blink_led_stop = &ixgbe_blink_led_stop_generic,
.set_rar = &ixgbe_set_rar_generic,
.clear_rar = &ixgbe_clear_rar_generic,
.set_vmdq = &ixgbe_set_vmdq_generic,
Index: linux-2.6/drivers/net/ixgbe/ixgbe_common.c
===================================================================
--- linux-2.6.orig/drivers/net/ixgbe/ixgbe_common.c
+++ linux-2.6/drivers/net/ixgbe/ixgbe_common.c
@@ -2242,62 +2242,6 @@ s32 ixgbe_enable_rx_dma_generic(struct i
}
/**
- * ixgbe_blink_led_start_generic - Blink LED based on index.
- * @hw: pointer to hardware structure
- * @index: led number to blink
- **/
-s32 ixgbe_blink_led_start_generic(struct ixgbe_hw *hw, u32 index)
-{
- ixgbe_link_speed speed = 0;
- bool link_up = 0;
- u32 autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);
- u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
-
- /*
- * Link must be up to auto-blink the LEDs;
- * Force it if link is down.
- */
- hw->mac.ops.check_link(hw, &speed, &link_up, false);
-
- if (!link_up) {
- autoc_reg |= IXGBE_AUTOC_AN_RESTART;
- autoc_reg |= IXGBE_AUTOC_FLU;
- IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);
- msleep(10);
- }
-
- led_reg &= ~IXGBE_LED_MODE_MASK(index);
- led_reg |= IXGBE_LED_BLINK(index);
- IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
- IXGBE_WRITE_FLUSH(hw);
-
- return 0;
-}
-
-/**
- * ixgbe_blink_led_stop_generic - Stop blinking LED based on index.
- * @hw: pointer to hardware structure
- * @index: led number to stop blinking
- **/
-s32 ixgbe_blink_led_stop_generic(struct ixgbe_hw *hw, u32 index)
-{
- u32 autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);
- u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
-
- autoc_reg &= ~IXGBE_AUTOC_FLU;
- autoc_reg |= IXGBE_AUTOC_AN_RESTART;
- IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);
-
- led_reg &= ~IXGBE_LED_MODE_MASK(index);
- led_reg &= ~IXGBE_LED_BLINK(index);
- led_reg |= IXGBE_LED_LINK_ACTIVE << IXGBE_LED_MODE_SHIFT(index);
- IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
- IXGBE_WRITE_FLUSH(hw);
-
- return 0;
-}
-
-/**
* ixgbe_get_san_mac_addr_offset - Get SAN MAC address offset from the EEPROM
* @hw: pointer to hardware structure
* @san_mac_offset: SAN MAC address offset
Index: linux-2.6/drivers/net/ixgbe/ixgbe_common.h
===================================================================
--- linux-2.6.orig/drivers/net/ixgbe/ixgbe_common.h
+++ linux-2.6/drivers/net/ixgbe/ixgbe_common.h
@@ -85,8 +85,6 @@ s32 ixgbe_check_mac_link_generic(struct
bool *link_up, bool link_up_wait_to_complete);
s32 ixgbe_get_wwn_prefix_generic(struct ixgbe_hw *hw, u16 *wwnn_prefix,
u16 *wwpn_prefix);
-s32 ixgbe_blink_led_start_generic(struct ixgbe_hw *hw, u32 index);
-s32 ixgbe_blink_led_stop_generic(struct ixgbe_hw *hw, u32 index);
void ixgbe_set_mac_anti_spoofing(struct ixgbe_hw *hw, bool enable, int pf);
void ixgbe_set_vlan_anti_spoofing(struct ixgbe_hw *hw, bool enable, int vf);
Index: linux-2.6/drivers/net/ixgbe/ixgbe_type.h
===================================================================
--- linux-2.6.orig/drivers/net/ixgbe/ixgbe_type.h
+++ linux-2.6/drivers/net/ixgbe/ixgbe_type.h
@@ -2530,8 +2530,6 @@ struct ixgbe_mac_operations {
/* LED */
s32 (*led_on)(struct ixgbe_hw *, u32);
s32 (*led_off)(struct ixgbe_hw *, u32);
- s32 (*blink_led_start)(struct ixgbe_hw *, u32);
- s32 (*blink_led_stop)(struct ixgbe_hw *, u32);
/* RAR, Multicast, VLAN */
s32 (*set_rar)(struct ixgbe_hw *, u32, u8 *, u32, u32);
Index: linux-2.6/drivers/net/ixgbe/ixgbe_x540.c
===================================================================
--- linux-2.6.orig/drivers/net/ixgbe/ixgbe_x540.c
+++ linux-2.6/drivers/net/ixgbe/ixgbe_x540.c
@@ -681,8 +681,6 @@ static struct ixgbe_mac_operations mac_o
.get_link_capabilities = &ixgbe_get_copper_link_capabilities_generic,
.led_on = &ixgbe_led_on_generic,
.led_off = &ixgbe_led_off_generic,
- .blink_led_start = &ixgbe_blink_led_start_generic,
- .blink_led_stop = &ixgbe_blink_led_stop_generic,
.set_rar = &ixgbe_set_rar_generic,
.clear_rar = &ixgbe_clear_rar_generic,
.set_vmdq = &ixgbe_set_vmdq_generic,
------------------------------------------------------------------------------
Forrester Wave Report - Recovery time is now measured in hours and minutes
not days. Key insights are discussed in the 2010 Forrester Wave Report as
part of an in-depth evaluation of disaster recovery service providers.
Forrester found the best-in-class provider in terms of services and vision.
Read this report now! http://p.sf.net/sfu/ibm-webcastpromo
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
^ permalink raw reply
* Re: [Bugme-new] [Bug 32832] New: shutdown(2) does not fully shut down socket any more
From: Andrew Morton @ 2011-04-12 23:41 UTC (permalink / raw)
To: David Miller
Cc: netdev, bugzilla-daemon, bugme-daemon, kees, Stephen Hemminger
In-Reply-To: <20110412.161744.27803776.davem@davemloft.net>
On Tue, 12 Apr 2011 16:17:44 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:
> From: Andrew Morton <akpm@linux-foundation.org>
> Date: Tue, 12 Apr 2011 16:15:56 -0700
>
> >
> > (switched to email. Please respond via emailed reply-to-all, not via the
> > bugzilla web interface).
>
> Stephen Hemminger forwarded this to the list last week, and Eric
> Dumazet is actively working on a fix.
OK.
Please don't forward bugzilla reports! Instead do a reply-to-all and
add the cc's. That way, bugzilla will capture the email discussion and
you won't get akpmspammed.
Sigh, kernel bugzilla is a PITA. Some people do seem to like and
expect it though.
^ permalink raw reply
* pull request: sfc-2.6 2011-04-13
From: Ben Hutchings @ 2011-04-12 23:47 UTC (permalink / raw)
To: David Miller; +Cc: netdev, sf-linux-drivers
The following changes since commit 4a9f65f6304a00f6473e83b19c1e83caa1e42530:
caif: performance bugfix - allow radio stack to prioritize packets. (2011-04-11 13:15:58 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-2.6.git sfc-2.6.39
These fix some bugs found in internal testing.
Ben.
Ben Hutchings (1):
sfc: Do not use efx_process_channel_now() in online self-test
Neil Turton (2):
sfc: Stop the TX queues during loopback self-tests
sfc: Use rmb() to ensure reads occur in order
drivers/net/sfc/efx.c | 6 ++++--
drivers/net/sfc/io.h | 2 ++
drivers/net/sfc/net_driver.h | 2 --
drivers/net/sfc/nic.c | 22 +++++++++++++++-------
drivers/net/sfc/nic.h | 1 +
drivers/net/sfc/selftest.c | 25 ++++++-------------------
drivers/net/sfc/tx.c | 3 ++-
7 files changed, 30 insertions(+), 31 deletions(-)
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* [PATCH net-2.6 1/3] sfc: Stop the TX queues during loopback self-tests
From: Ben Hutchings @ 2011-04-12 23:49 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-net-drivers
In-Reply-To: <1302652065.2880.28.camel@bwh-desktop>
From: Neil Turton <nturton@solarflare.com>
If the TX queues are running during loopback self tests, host
traffic gets looped back which causes the test to fail. Avoid
restarting the TX queues after the port reset so that any packets
sent by the host get held back until after the tests have completed.
[bwh: Also wake all TX queues at the end of self-tests.]
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
drivers/net/sfc/efx.c | 2 +-
drivers/net/sfc/selftest.c | 2 ++
drivers/net/sfc/tx.c | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index d890679..0dc800b 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -1436,7 +1436,7 @@ static void efx_start_all(struct efx_nic *efx)
* restart the transmit interface early so the watchdog timer stops */
efx_start_port(efx);
- if (efx_dev_registered(efx))
+ if (efx_dev_registered(efx) && !efx->port_inhibited)
netif_tx_wake_all_queues(efx->net_dev);
efx_for_each_channel(channel, efx)
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c
index a0f49b3..8458084 100644
--- a/drivers/net/sfc/selftest.c
+++ b/drivers/net/sfc/selftest.c
@@ -770,6 +770,8 @@ int efx_selftest(struct efx_nic *efx, struct efx_self_tests *tests,
__efx_reconfigure_port(efx);
mutex_unlock(&efx->mac_lock);
+ netif_tx_wake_all_queues(efx->net_dev);
+
return rc_test;
}
diff --git a/drivers/net/sfc/tx.c b/drivers/net/sfc/tx.c
index 1398019..d2c85df 100644
--- a/drivers/net/sfc/tx.c
+++ b/drivers/net/sfc/tx.c
@@ -435,7 +435,8 @@ void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index)
* queue state. */
smp_mb();
if (unlikely(netif_tx_queue_stopped(tx_queue->core_txq)) &&
- likely(efx->port_enabled)) {
+ likely(efx->port_enabled) &&
+ likely(!efx->port_inhibited)) {
fill_level = tx_queue->insert_count - tx_queue->read_count;
if (fill_level < EFX_TXQ_THRESHOLD(efx)) {
EFX_BUG_ON_PARANOID(!efx_dev_registered(efx));
--
1.7.4
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related
* [PATCH net-2.6 2/3] sfc: Do not use efx_process_channel_now() in online self-test
From: Ben Hutchings @ 2011-04-12 23:50 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-net-drivers
In-Reply-To: <1302652065.2880.28.camel@bwh-desktop>
During self-tests we use efx_process_channel_now() to handle
completion and other events synchronously. This disables interrupts
and NAPI processing for the channel in question, but it may still be
interrupted by another channel. A single socket may receive packets
from multiple net devices or even multiple channels of the same net
device, so this can result in deadlock on a socket lock.
Receiving packets in process context will also result in incorrect
classification by the network cgroup classifier.
Therefore, we must only use efx_process_channel_now() in the offline
loopback tests (which never deliver packets up the stack) and not for
the online interrupt and event tests.
For the interrupt test, there is no reason to process events. We
only care that an interrupt is raised.
For the event test, we want to know whether events have been received,
and there may be many events ahead of the one we inject. Therefore
remove efx_channel::magic_count and instead test whether
efx_channel::eventq_read_ptr advances. This is currently an event
queue index and might wrap around to exactly the same value, resulting
in a false negative. Therefore move the masking to efx_event() and
efx_nic_eventq_read_ack() so that it cannot wrap within the time of
the test.
The event test also tries to diagnose failures by checking whether an
event was delivered without causing an interrupt. Add and use a
helper function that only does this.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
drivers/net/sfc/efx.c | 4 +++-
drivers/net/sfc/net_driver.h | 2 --
drivers/net/sfc/nic.c | 22 +++++++++++++++-------
drivers/net/sfc/nic.h | 1 +
drivers/net/sfc/selftest.c | 23 ++++-------------------
5 files changed, 23 insertions(+), 29 deletions(-)
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index 0dc800b..a3c2aab 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -328,7 +328,8 @@ static int efx_poll(struct napi_struct *napi, int budget)
* processing to finish, then directly poll (and ack ) the eventq.
* Finally reenable NAPI and interrupts.
*
- * Since we are touching interrupts the caller should hold the suspend lock
+ * This is for use only during a loopback self-test. It must not
+ * deliver any packets up the stack as this can result in deadlock.
*/
void efx_process_channel_now(struct efx_channel *channel)
{
@@ -336,6 +337,7 @@ void efx_process_channel_now(struct efx_channel *channel)
BUG_ON(channel->channel >= efx->n_channels);
BUG_ON(!channel->enabled);
+ BUG_ON(!efx->loopback_selftest);
/* Disable interrupts and wait for ISRs to complete */
efx_nic_disable_interrupts(efx);
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h
index 9ffa9a6..191a311 100644
--- a/drivers/net/sfc/net_driver.h
+++ b/drivers/net/sfc/net_driver.h
@@ -330,7 +330,6 @@ enum efx_rx_alloc_method {
* @eventq_mask: Event queue pointer mask
* @eventq_read_ptr: Event queue read pointer
* @last_eventq_read_ptr: Last event queue read pointer value.
- * @magic_count: Event queue test event count
* @irq_count: Number of IRQs since last adaptive moderation decision
* @irq_mod_score: IRQ moderation score
* @rx_alloc_level: Watermark based heuristic counter for pushing descriptors
@@ -360,7 +359,6 @@ struct efx_channel {
unsigned int eventq_mask;
unsigned int eventq_read_ptr;
unsigned int last_eventq_read_ptr;
- unsigned int magic_count;
unsigned int irq_count;
unsigned int irq_mod_score;
diff --git a/drivers/net/sfc/nic.c b/drivers/net/sfc/nic.c
index e839661..10f1cb7 100644
--- a/drivers/net/sfc/nic.c
+++ b/drivers/net/sfc/nic.c
@@ -84,7 +84,8 @@ static inline void efx_write_buf_tbl(struct efx_nic *efx, efx_qword_t *value,
static inline efx_qword_t *efx_event(struct efx_channel *channel,
unsigned int index)
{
- return ((efx_qword_t *) (channel->eventq.addr)) + index;
+ return ((efx_qword_t *) (channel->eventq.addr)) +
+ (index & channel->eventq_mask);
}
/* See if an event is present
@@ -673,7 +674,8 @@ void efx_nic_eventq_read_ack(struct efx_channel *channel)
efx_dword_t reg;
struct efx_nic *efx = channel->efx;
- EFX_POPULATE_DWORD_1(reg, FRF_AZ_EVQ_RPTR, channel->eventq_read_ptr);
+ EFX_POPULATE_DWORD_1(reg, FRF_AZ_EVQ_RPTR,
+ channel->eventq_read_ptr & channel->eventq_mask);
efx_writed_table(efx, ®, efx->type->evq_rptr_tbl_base,
channel->channel);
}
@@ -908,7 +910,7 @@ efx_handle_generated_event(struct efx_channel *channel, efx_qword_t *event)
code = EFX_QWORD_FIELD(*event, FSF_AZ_DRV_GEN_EV_MAGIC);
if (code == EFX_CHANNEL_MAGIC_TEST(channel))
- ++channel->magic_count;
+ ; /* ignore */
else if (code == EFX_CHANNEL_MAGIC_FILL(channel))
/* The queue must be empty, so we won't receive any rx
* events, so efx_process_channel() won't refill the
@@ -1015,8 +1017,7 @@ int efx_nic_process_eventq(struct efx_channel *channel, int budget)
/* Clear this event by marking it all ones */
EFX_SET_QWORD(*p_event);
- /* Increment read pointer */
- read_ptr = (read_ptr + 1) & channel->eventq_mask;
+ ++read_ptr;
ev_code = EFX_QWORD_FIELD(event, FSF_AZ_EV_CODE);
@@ -1060,6 +1061,13 @@ out:
return spent;
}
+/* Check whether an event is present in the eventq at the current
+ * read pointer. Only useful for self-test.
+ */
+bool efx_nic_event_present(struct efx_channel *channel)
+{
+ return efx_event_present(efx_event(channel, channel->eventq_read_ptr));
+}
/* Allocate buffer table entries for event queue */
int efx_nic_probe_eventq(struct efx_channel *channel)
@@ -1165,7 +1173,7 @@ static void efx_poll_flush_events(struct efx_nic *efx)
struct efx_tx_queue *tx_queue;
struct efx_rx_queue *rx_queue;
unsigned int read_ptr = channel->eventq_read_ptr;
- unsigned int end_ptr = (read_ptr - 1) & channel->eventq_mask;
+ unsigned int end_ptr = read_ptr + channel->eventq_mask - 1;
do {
efx_qword_t *event = efx_event(channel, read_ptr);
@@ -1205,7 +1213,7 @@ static void efx_poll_flush_events(struct efx_nic *efx)
* it's ok to throw away every non-flush event */
EFX_SET_QWORD(*event);
- read_ptr = (read_ptr + 1) & channel->eventq_mask;
+ ++read_ptr;
} while (read_ptr != end_ptr);
channel->eventq_read_ptr = read_ptr;
diff --git a/drivers/net/sfc/nic.h b/drivers/net/sfc/nic.h
index d9de1b6..a42db6e 100644
--- a/drivers/net/sfc/nic.h
+++ b/drivers/net/sfc/nic.h
@@ -184,6 +184,7 @@ extern void efx_nic_fini_eventq(struct efx_channel *channel);
extern void efx_nic_remove_eventq(struct efx_channel *channel);
extern int efx_nic_process_eventq(struct efx_channel *channel, int rx_quota);
extern void efx_nic_eventq_read_ack(struct efx_channel *channel);
+extern bool efx_nic_event_present(struct efx_channel *channel);
/* MAC/PHY */
extern void falcon_drain_tx_fifo(struct efx_nic *efx);
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c
index 8458084..50ad3bc 100644
--- a/drivers/net/sfc/selftest.c
+++ b/drivers/net/sfc/selftest.c
@@ -131,8 +131,6 @@ static int efx_test_chip(struct efx_nic *efx, struct efx_self_tests *tests)
static int efx_test_interrupts(struct efx_nic *efx,
struct efx_self_tests *tests)
{
- struct efx_channel *channel;
-
netif_dbg(efx, drv, efx->net_dev, "testing interrupts\n");
tests->interrupt = -1;
@@ -140,15 +138,6 @@ static int efx_test_interrupts(struct efx_nic *efx,
efx->last_irq_cpu = -1;
smp_wmb();
- /* ACK each interrupting event queue. Receiving an interrupt due to
- * traffic before a test event is raised is considered a pass */
- efx_for_each_channel(channel, efx) {
- if (channel->work_pending)
- efx_process_channel_now(channel);
- if (efx->last_irq_cpu >= 0)
- goto success;
- }
-
efx_nic_generate_interrupt(efx);
/* Wait for arrival of test interrupt. */
@@ -173,13 +162,13 @@ static int efx_test_eventq_irq(struct efx_channel *channel,
struct efx_self_tests *tests)
{
struct efx_nic *efx = channel->efx;
- unsigned int magic_count, count;
+ unsigned int read_ptr, count;
tests->eventq_dma[channel->channel] = -1;
tests->eventq_int[channel->channel] = -1;
tests->eventq_poll[channel->channel] = -1;
- magic_count = channel->magic_count;
+ read_ptr = channel->eventq_read_ptr;
channel->efx->last_irq_cpu = -1;
smp_wmb();
@@ -190,10 +179,7 @@ static int efx_test_eventq_irq(struct efx_channel *channel,
do {
schedule_timeout_uninterruptible(HZ / 100);
- if (channel->work_pending)
- efx_process_channel_now(channel);
-
- if (channel->magic_count != magic_count)
+ if (ACCESS_ONCE(channel->eventq_read_ptr) != read_ptr)
goto eventq_ok;
} while (++count < 2);
@@ -211,8 +197,7 @@ static int efx_test_eventq_irq(struct efx_channel *channel,
}
/* Check to see if event was received even if interrupt wasn't */
- efx_process_channel_now(channel);
- if (channel->magic_count != magic_count) {
+ if (efx_nic_event_present(channel)) {
netif_err(efx, drv, efx->net_dev,
"channel %d event was generated, but "
"failed to trigger an interrupt\n", channel->channel);
--
1.7.4
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related
* [PATCH net-2.6 3/3] sfc: Use rmb() to ensure reads occur in order
From: Ben Hutchings @ 2011-04-12 23:50 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-net-drivers
In-Reply-To: <1302652065.2880.28.camel@bwh-desktop>
From: Neil Turton <nturton@solarflare.com>
Enabling write-combining may also enable read reordering. The BIU is
only guaranteed to read from a 128-bit CSR or 64-bit SRAM word when
the host reads from its lowest address; otherwise the BIU may use the
latched value. Therefore we need to reinstate the read memory
barriers after the first read operation for each CSR or SRAM word.
Signed-off-by; Ben Hutchings <bhutchings@solarflare.com>
---
drivers/net/sfc/io.h | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/net/sfc/io.h b/drivers/net/sfc/io.h
index d9d8c2e..cc97880 100644
--- a/drivers/net/sfc/io.h
+++ b/drivers/net/sfc/io.h
@@ -152,6 +152,7 @@ static inline void efx_reado(struct efx_nic *efx, efx_oword_t *value,
spin_lock_irqsave(&efx->biu_lock, flags);
value->u32[0] = _efx_readd(efx, reg + 0);
+ rmb();
value->u32[1] = _efx_readd(efx, reg + 4);
value->u32[2] = _efx_readd(efx, reg + 8);
value->u32[3] = _efx_readd(efx, reg + 12);
@@ -174,6 +175,7 @@ static inline void efx_sram_readq(struct efx_nic *efx, void __iomem *membase,
value->u64[0] = (__force __le64)__raw_readq(membase + addr);
#else
value->u32[0] = (__force __le32)__raw_readl(membase + addr);
+ rmb();
value->u32[1] = (__force __le32)__raw_readl(membase + addr + 4);
#endif
spin_unlock_irqrestore(&efx->biu_lock, flags);
--
1.7.4
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related
* Re: [PATCH 2/3] MIPS: lantiq: add ethernet driver
From: Stephen Hemminger @ 2011-04-12 23:54 UTC (permalink / raw)
To: John Crispin; +Cc: Ralf Baechle, Ralph Hempel, linux-mips, netdev
In-Reply-To: <1302624675-18652-3-git-send-email-blogic@openwrt.org>
On Tue, 12 Apr 2011 18:11:14 +0200
John Crispin <blogic@openwrt.org> wrote:
> +
> +struct ltq_mii_priv {
> + struct ltq_eth_data *pldata;
> + struct resource *res;
> + struct net_device_stats stats;
You don't need to have private stats structure it is part
of net_device in recent kernels. In fact, since you don't
set .ndo_get_stats, the driver is getting the default function
which prints the values from network_device, not your priv structure.
Also, please consider adding basic ethtool support to
show speed/duplex and driver information.
--
^ permalink raw reply
* Re: [PATCH] bridge: reset IPCB in br_parse_ip_options
From: Scot Doyle @ 2011-04-12 23:55 UTC (permalink / raw)
To: Eric Dumazet
Cc: David Miller, Stephen Hemminger, Jan Lübbe, Hiroaki SHIMODA,
netdev, Bandan Das
In-Reply-To: <1302628720.3233.84.camel@edumazet-laptop>
On 04/12/2011 12:18 PM, Eric Dumazet wrote:
> Commit 462fb2af9788a82 (bridge : Sanitize skb before it enters the IP
> stack), missed one IPCB init before calling ip_options_compile()
>
> Thanks to Scot Doyle for his tests and bug reports.
>
> Reported-by: Scot Doyle<lkml@scotdoyle.com>
> Signed-off-by: Eric Dumazet<eric.dumazet@gmail.com>
> Cc: Hiroaki SHIMODA<shimoda.hiroaki@gmail.com>
> Acked-by: Bandan Das<bandan.das@stratus.com>
> Acked-by: Stephen Hemminger<shemminger@vyatta.com>
> Cc: Jan Lübbe<jluebbe@debian.org>
> ---
> net/bridge/br_netfilter.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
> index 008ff6c..b353f7c 100644
> --- a/net/bridge/br_netfilter.c
> +++ b/net/bridge/br_netfilter.c
> @@ -249,11 +249,9 @@ static int br_parse_ip_options(struct sk_buff *skb)
> goto drop;
> }
>
> - /* Zero out the CB buffer if no options present */
> - if (iph->ihl == 5) {
> - memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
> + memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
> + if (iph->ihl == 5)
> return 0;
> - }
>
> opt->optlen = iph->ihl*4 - sizeof(struct iphdr);
> if (ip_options_compile(dev_net(dev), opt, skb))
>
>
Here's the output after pulling 2.6.39-rc3, applying the patches listed
below, doing a "make clean" and hitting the bridge's assigned ip address
with the IP Stack Checker tcpsic command. Maybe I should also be
applying the patch from yesterday too? I'll try that next.
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index 008ff6c..b9bdff9 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -249,11 +249,9 @@ static int br_parse_ip_options(struct sk_buff *skb)
goto drop;
}
- /* Zero out the CB buffer if no options present */
- if (iph->ihl == 5) {
- memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
- return 0;
- }
+ memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
+ if (iph->ihl == 5)
+ return 0;
opt->optlen = iph->ihl*4 - sizeof(struct iphdr);
if (ip_options_compile(dev_net(dev), opt, skb))
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
index dd1b20e..9df4e63 100644
--- a/net/ipv4/inetpeer.c
+++ b/net/ipv4/inetpeer.c
@@ -354,7 +354,8 @@ static void inetpeer_free_rcu(struct rcu_head *head)
}
/* May be called with local BH enabled. */
-static void unlink_from_pool(struct inet_peer *p, struct inet_peer_base
*base)
+static void unlink_from_pool(struct inet_peer *p, struct inet_peer_base
*base,
+ struct inet_peer __rcu **stack[PEER_MAXDEPTH])
{
int do_free;
@@ -368,7 +369,6 @@ static void unlink_from_pool(struct inet_peer *p,
struct inet_peer_base *base)
* We use refcnt=-1 to alert lockless readers this entry is
deleted.
*/
if (atomic_cmpxchg(&p->refcnt, 1, -1) == 1) {
- struct inet_peer __rcu **stack[PEER_MAXDEPTH];
struct inet_peer __rcu ***stackptr, ***delp;
if (lookup(&p->daddr, stack, base) != p)
BUG();
@@ -422,7 +422,7 @@ static struct inet_peer_base *peer_to_base(struct
inet_peer *p)
}
/* May be called with local BH enabled. */
-static int cleanup_once(unsigned long ttl)
+static int cleanup_once(unsigned long ttl, struct inet_peer __rcu
**stack[PEER_MAXDEPTH])
{
struct inet_peer *p = NULL;
@@ -454,7 +454,7 @@ static int cleanup_once(unsigned long ttl)
* happen because of entry limits in route cache. */
return -1;
- unlink_from_pool(p, peer_to_base(p));
+ unlink_from_pool(p, peer_to_base(p), stack);
return 0;
}
@@ -524,7 +524,7 @@ struct inet_peer *inet_getpeer(struct inetpeer_addr
*daddr, int create)
if (base->total >= inet_peer_threshold)
/* Remove one less-recently-used entry. */
- cleanup_once(0);
+ cleanup_once(0, stack);
return p;
}
@@ -540,6 +540,7 @@ static void peer_check_expire(unsigned long dummy)
{
unsigned long now = jiffies;
int ttl, total;
+ struct inet_peer __rcu **stack[PEER_MAXDEPTH];
total = compute_total();
if (total >= inet_peer_threshold)
@@ -548,7 +549,7 @@ static void peer_check_expire(unsigned long dummy)
ttl = inet_peer_maxttl
- (inet_peer_maxttl - inet_peer_minttl)
/ HZ *
total / inet_peer_threshold * HZ;
- while (!cleanup_once(ttl)) {
+ while (!cleanup_once(ttl, stack)) {
if (jiffies != now)
break;
}
diff --git a/net/ipv4/ip_options.c b/net/ipv4/ip_options.c
index 28a736f..dea9947 100644
--- a/net/ipv4/ip_options.c
+++ b/net/ipv4/ip_options.c
@@ -200,6 +200,11 @@ int ip_options_echo(struct ip_options * dopt,
struct sk_buff * skb)
*dptr++ = IPOPT_END;
dopt->optlen++;
}
+ if (unlikely(dopt->optlen > 40)) {
+ pr_err("ip_options_echo() fatal error optlen=%u > 40\n",
dopt->optlen);
+ print_hex_dump(KERN_ERR, "ip options: ", DUMP_PREFIX_OFFSET,
+ 16, 1, dopt->__data, dopt->optlen, false);
+ }
return 0;
}
------------
[ 761.720393] BUG: unable to handle kernel NULL pointer dereference at
00000000000000d0
[ 761.728206] IP: [<ffffffff8129fbe9>] ip_options_compile+0x1c1/0x435
[ 761.734452] PGD 0
[ 761.736459] Oops: 0000 [#1] SMP
[ 761.739683] last sysfs file: /sys/devices/virtual/misc/kvm/uevent
[ 761.745744] CPU 0
[ 761.747570] Modules linked in: kvm_intel kvm bridge stp loop snd_pcm
snd_timer snd tpm_tis tpm tpm_bios soundcore psmouse snd_page_alloc
processor ghes thermal_sys
i7core_edac evdev pcspkr serio_raw edac_core dcdbas power_meter button
hed ext2 mbcache dm_mod raid1 md_mod sd_mod crc_t10dif usb_storage uas
uhci_hcd ehci_hcd mpt2sas
scsi_transport_sas raid_class igb scsi_mod usbcore bnx2 dca [last
unloaded: scsi_wait_scan]
[ 761.785171]
[ 761.786651] Pid: 0, comm: swapper Not tainted 2.6.39-rc3+ #14 Dell
Inc. PowerEdge R510/0DPRKF
[ 761.795157] RIP: 0010:[<ffffffff8129fbe9>] [<ffffffff8129fbe9>]
ip_options_compile+0x1c1/0x435
[ 761.803823] RSP: 0018:ffff88042f203af0 EFLAGS: 00010286
[ 761.809106] RAX: 0000000000000017 RBX: ffff8804027b3600 RCX:
ffff88040466a864
[ 761.816205] RDX: 000000000000001a RSI: 0000000000000000 RDI:
ffffffff817e6100
[ 761.823304] RBP: ffff88040466a862 R08: ffffffffa01d6e89 R09:
ffff88042f203c58
[ 761.830402] R10: 0000000000000000 R11: 0000000000000000 R12:
ffff8804027b3628
[ 761.837501] R13: 000000000000001d R14: ffff88040466a84e R15:
0000000000000024
[ 761.844601] FS: 0000000000000000(0000) GS:ffff88042f200000(0000)
knlGS:0000000000000000
[ 761.852650] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 761.858365] CR2: 00000000000000d0 CR3: 0000000001603000 CR4:
00000000000006f0
[ 761.865463] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
[ 761.872562] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
0000000000000400
[ 761.879661] Process swapper (pid: 0, threadinfo ffffffff81600000,
task ffffffff8160b020)
[ 761.887710] Stack:
[ 761.889708] 0000000000000000 ffffffff81276928 0000000000000000
ffffffff817e6100
[ 761.897102] 000000000000004e ffff88040500e600 ffff88040500e600
ffff8804027b3600
[ 761.904496] ffff880404fc0000 ffff8804027b3628 0000000000000000
ffff880404fc0000
[ 761.911889] Call Trace:
[ 761.914319] <IRQ>
[ 761.916413] [<ffffffff81276928>] ? netif_receive_skb+0x52/0x58
[ 761.922306] [<ffffffffa01dae3b>] ? br_parse_ip_options+0x134/0x1a8
[bridge]
[ 761.929319] [<ffffffffa01dbbe0>] ? br_nf_pre_routing+0x348/0x3cb
[bridge]
[ 761.936160] [<ffffffff81298527>] ? nf_iterate+0x41/0x7e
[ 761.941444] [<ffffffff8104afaa>] ? irq_exit+0x58/0x8f
[ 761.946556] [<ffffffffa01d6e89>] ? NF_HOOK.clone.4+0x56/0x56 [bridge]
[ 761.953052] [<ffffffffa01d6e89>] ? NF_HOOK.clone.4+0x56/0x56 [bridge]
[ 761.959546] [<ffffffff812985d7>] ? nf_hook_slow+0x73/0x114
[ 761.965089] [<ffffffffa01d6e89>] ? NF_HOOK.clone.4+0x56/0x56 [bridge]
[ 761.971583] [<ffffffff8126d097>] ? __netdev_alloc_skb+0x15/0x2f
[ 761.977561] [<ffffffffa01d6e89>] ? NF_HOOK.clone.4+0x56/0x56 [bridge]
[ 761.984055] [<ffffffffa01d6e6f>] ? NF_HOOK.clone.4+0x3c/0x56 [bridge]
[ 761.990551] [<ffffffff812a7dde>] ? tcp_gro_receive+0xa1/0x204
[ 761.996355] [<ffffffffa01d71e5>] ? br_handle_frame+0x195/0x1ac [bridge]
[ 762.003022] [<ffffffffa01d7050>] ?
br_handle_frame_finish+0x1c7/0x1c7 [bridge]
[ 762.010294] [<ffffffff812764ef>] ? __netif_receive_skb+0x2a7/0x450
[ 762.016530] [<ffffffff81276928>] ? netif_receive_skb+0x52/0x58
[ 762.022420] [<ffffffff81276e2a>] ? napi_gro_receive+0x1f/0x2f
[ 762.028222] [<ffffffff812769ff>] ? napi_skb_finish+0x1c/0x31
[ 762.033941] [<ffffffffa024afcd>] ? igb_poll+0x6d9/0x9ee [igb]
[ 762.039744] [<ffffffff8109034f>] ? handle_irq_event+0x40/0x55
[ 762.045547] [<ffffffff8106fc3c>] ? arch_local_irq_save+0x14/0x1d
[ 762.051609] [<ffffffff81276f55>] ? net_rx_action+0xa4/0x1b1
[ 762.057239] [<ffffffff8104ad26>] ? __do_softirq+0xb8/0x176
[ 762.062783] [<ffffffff81333cdc>] ? call_softirq+0x1c/0x30
[ 762.068241] [<ffffffff8100aa57>] ? do_softirq+0x3f/0x84
[ 762.073524] [<ffffffff8104af91>] ? irq_exit+0x3f/0x8f
[ 762.078635] [<ffffffff8100a793>] ? do_IRQ+0x85/0x9e
[ 762.083575] [<ffffffff8132cc53>] ? common_interrupt+0x13/0x13
[ 762.089375] <EOI>
[ 762.091469] [<ffffffff81061348>] ? enqueue_hrtimer+0x3f/0x53
[ 762.097188] [<ffffffffa0430417>] ? arch_local_irq_enable+0x7/0x8
[processor]
[ 762.104288] [<ffffffffa0430dab>] ? acpi_idle_enter_c1+0x86/0xa2
[processor]
[ 762.111303] [<ffffffff8125d05d>] ? cpuidle_idle_call+0xf4/0x17e
[ 762.117277] [<ffffffff81008298>] ? cpu_idle+0xa2/0xc4
[ 762.122388] [<ffffffff8169db60>] ? start_kernel+0x3b9/0x3c4
[ 762.128018] [<ffffffff8169d3c6>] ? x86_64_start_kernel+0x102/0x10f
[ 762.134253] Code: 4d 02 3c 03 0f 86 59 02 00 00 0f b6 d0 44 39 ea 7f
32 83 c2 03 44 39 ea 0f 8f 45 02 00 00 48 85 db 74 18 48 8b 74 24 10 0f
b6 c0 <8b> 96 d0 00 00 00 89 54 05 ff 41 80 4c 24 08 04 80 01 04 41 80
[ 762.153593] RIP [<ffffffff8129fbe9>] ip_options_compile+0x1c1/0x435
[ 762.159923] RSP <ffff88042f203af0>
[ 762.163391] CR2: 00000000000000d0
[ 762.167017] ---[ end trace e15d7b082f680b62 ]---
^ permalink raw reply related
* Re: pull request: sfc-2.6 2011-04-13
From: David Miller @ 2011-04-13 0:12 UTC (permalink / raw)
To: bhutchings; +Cc: netdev, linux-net-drivers
In-Reply-To: <1302652065.2880.28.camel@bwh-desktop>
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Wed, 13 Apr 2011 00:47:45 +0100
> The following changes since commit 4a9f65f6304a00f6473e83b19c1e83caa1e42530:
>
> caif: performance bugfix - allow radio stack to prioritize packets. (2011-04-11 13:15:58 -0700)
>
> are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-2.6.git sfc-2.6.39
>
> These fix some bugs found in internal testing.
Pulled, thanks Ben.
^ permalink raw reply
* Re: [PATCH] ixgbe: Remove not used blink_led_start/stop code
From: Jeff Kirsher @ 2011-04-13 0:29 UTC (permalink / raw)
To: Yinghai Lu; +Cc: Brandeburg, Jesse, e1000-devel@lists.sourceforge.net, NetDev
In-Reply-To: <4DA4E099.2080206@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 589 bytes --]
On Tue, 2011-04-12 at 16:30 -0700, Yinghai Lu wrote:
> There is no user for those code.
>
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
>
> ---
> drivers/net/ixgbe/ixgbe_82598.c | 2 -
> drivers/net/ixgbe/ixgbe_82599.c | 2 -
> drivers/net/ixgbe/ixgbe_common.c | 56
> ---------------------------------------
> drivers/net/ixgbe/ixgbe_common.h | 2 -
> drivers/net/ixgbe/ixgbe_type.h | 2 -
> drivers/net/ixgbe/ixgbe_x540.c | 2 -
> 6 files changed, 66 deletions(-)
Thanks for the patch, I have added the patch to my queue of ixgbe
patches.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply
* [PATCH net-2.6 1/2] net: Disable all TSO features when SG is disabled
From: Ben Hutchings @ 2011-04-13 0:38 UTC (permalink / raw)
To: David Miller; +Cc: netdev, Michał Mirosław
The feature flags NETIF_F_TSO and NETIF_F_TSO6 independently enable
TSO for IPv4 and IPv6 respectively. However, the test in
netdev_fix_features() and its predecessor functions was never updated
to check for NETIF_F_TSO6, possibly because it was originally proposed
that TSO for IPv6 would be dependent on both feature flags.
Now that these feature flags can be changed independently from
user-space and we depend on netdev_fix_features() to fix invalid
feature combinations, it's important to disable them both if
scatter-gather is disabled. Also disable NETIF_F_TSO_ECN so
user-space sees all TSO features as disabled.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
net/core/dev.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 956d3b0..6401fb5 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5203,9 +5203,9 @@ u32 netdev_fix_features(struct net_device *dev, u32 features)
}
/* TSO requires that SG is present as well. */
- if ((features & NETIF_F_TSO) && !(features & NETIF_F_SG)) {
- netdev_info(dev, "Dropping NETIF_F_TSO since no SG feature.\n");
- features &= ~NETIF_F_TSO;
+ if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) {
+ netdev_info(dev, "Dropping TSO features since no SG feature.\n");
+ features &= ~NETIF_F_ALL_TSO;
}
/* Software GSO depends on SG. */
--
1.7.4
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related
* [PATCH net-2.6 2/2] net: Disable NETIF_F_TSO_ECN when TSO is disabled
From: Ben Hutchings @ 2011-04-13 0:47 UTC (permalink / raw)
To: David Miller; +Cc: netdev, Michał Mirosław
In-Reply-To: <1302655117.2880.33.camel@bwh-desktop>
NETIF_F_TSO_ECN has no effect when TSO is disabled; this just means
that feature state will be accurately reported to user-space.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
This one is silent; I'm not sure that it's worth mentioning as the
feature flag previously had no effect on its own anyway.
Ben.
net/core/dev.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 6401fb5..c2ac599 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5208,6 +5208,10 @@ u32 netdev_fix_features(struct net_device *dev, u32 features)
features &= ~NETIF_F_ALL_TSO;
}
+ /* TSO ECN requires that TSO is present as well. */
+ if ((features & NETIF_F_ALL_TSO) == NETIF_F_TSO_ECN)
+ features &= ~NETIF_F_TSO_ECN;
+
/* Software GSO depends on SG. */
if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) {
netdev_info(dev, "Dropping NETIF_F_GSO since no SG feature.\n");
--
1.7.4
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related
* Re: [PATCH net-next-2.6 v3 2/3] sctp: Add ASCONF operation on the single-homed host
From: Wei Yongjun @ 2011-04-13 1:14 UTC (permalink / raw)
To: Michio Honda; +Cc: netdev, lksctp-developers
In-Reply-To: <02627A77-8793-4EEC-9540-F2DECBB8E23A@sfc.wide.ad.jp>
Hi, Michio Honda
> SCTP can change the IP address on the single-homed host.
> In this case, the SCTP association transmits an ASCONF packet including addition of the new IP address and deletion of the old address.
> This patch implements this functionality.
>
>
...snip...
>
> @@ -1277,7 +1284,7 @@ void sctp_assoc_update(struct sctp_association *asoc,
> */
> void sctp_assoc_update_retran_path(struct sctp_association *asoc)
> {
> - struct sctp_transport *t, *next;
> + struct sctp_transport *t, *next, *unconfirmed;
> struct list_head *head = &asoc->peer.transport_addr_list;
> struct list_head *pos;
>
> @@ -1287,7 +1294,7 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc)
> /* Find the next transport in a round-robin fashion. */
> t = asoc->peer.retran_path;
> pos = &t->transports;
> - next = NULL;
> + next = unconfirmed = NULL;
>
> while (1) {
> /* Skip the head. */
> @@ -1318,11 +1325,15 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc)
> */
> if (t->state != SCTP_UNCONFIRMED && !next)
> next = t;
> + else if (t->state == SCTP_UNCONFIRMED)
> + unconfirmed = t;
> }
> }
>
> if (t)
> asoc->peer.retran_path = t;
> + else if (unconfirmed)
> + asoc->peer.retran_path = t = unconfirmed;
>
> SCTP_DEBUG_PRINTK_IPADDR("sctp_assoc_update_retran_path:association"
> " %p addr: "
since we can not select unconfirmed transports for retransmission,
this part is not correct. the specification forbids this due to security
issues.
Not sure whether you hit this bug: remove transport and left only
one unconfirmed transport, it may cause oops while retransmit.
I will send other patch to fix it first.
...snip...
^ permalink raw reply
* [PATCH] sctp: fix oops when updating retransmit path with DEBUG on
From: Wei Yongjun @ 2011-04-13 1:20 UTC (permalink / raw)
To: David Miller, netdev@vger.kernel.org; +Cc: lksctp
From: Vlad Yasevich <vladislav.yasevich@hp.com>
commit fbdf501c9374966a56829ecca3a7f25d2b49a305
sctp: Do no select unconfirmed transports for retransmissions
Introduced the initial falt.
commit d598b166ced20d9b9281ea3527c0e18405ddb803
sctp: Make sure we always return valid retransmit path
Solved the problem, but forgot to change the DEBUG statement.
Thus it was still possible to dereference a NULL pointer.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
---
net/sctp/associola.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 0698cad..922fdd7 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -1323,6 +1323,8 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc)
if (t)
asoc->peer.retran_path = t;
+ else
+ t = asoc->peer.retran_path;
SCTP_DEBUG_PRINTK_IPADDR("sctp_assoc_update_retran_path:association"
" %p addr: ",
--
1.6.5.2
^ permalink raw reply related
* [PATCH] sctp: fix oops while removed transport still using as retran path
From: Wei Yongjun @ 2011-04-13 1:22 UTC (permalink / raw)
To: David Miller, netdev@vger.kernel.org; +Cc: lksctp
In-Reply-To: <4DA4FA70.50506@cn.fujitsu.com>
Since we can not update retran path to unconfirmed transports,
when we remove a peer, the retran path may not be update if the
other transports are all unconfirmed, and we will still using
the removed transport as the retran path. This may cause panic
if retrasnmit happen.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
---
net/sctp/associola.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 922fdd7..1a21c57 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -569,6 +569,8 @@ void sctp_assoc_rm_peer(struct sctp_association *asoc,
sctp_assoc_set_primary(asoc, transport);
if (asoc->peer.active_path == peer)
asoc->peer.active_path = transport;
+ if (asoc->peer.retran_path == peer)
+ asoc->peer.retran_path = transport;
if (asoc->peer.last_data_from == peer)
asoc->peer.last_data_from = transport;
--
1.6.5.2
^ permalink raw reply related
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