* [PATCH 07/10] bna: IOC Event Name Change
From: Rasesh Mody @ 2011-07-22 18:07 UTC (permalink / raw)
To: davem, netdev; +Cc: adapter_linux_open_src_team, Rasesh Mody
In-Reply-To: <1311358069-32067-1-git-send-email-rmody@brocade.com>
Change details:
- Changed event name IOC_E_PFAILED to IOC_E_PFFAILED
Signed-off-by: Rasesh Mody <rmody@brocade.com>
---
drivers/net/bna/bfa_ioc.c | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/net/bna/bfa_ioc.c b/drivers/net/bna/bfa_ioc.c
index 889039c..da56c2f 100644
--- a/drivers/net/bna/bfa_ioc.c
+++ b/drivers/net/bna/bfa_ioc.c
@@ -108,7 +108,7 @@ enum ioc_event {
IOC_E_FWRSP_GETATTR = 6, /*!< IOC get attribute response */
IOC_E_DISABLED = 7, /*!< f/w disabled */
IOC_E_INITFAILED = 8, /*!< failure notice by iocpf sm */
- IOC_E_PFAILED = 9, /*!< failure notice by iocpf sm */
+ IOC_E_PFFAILED = 9, /*!< failure notice by iocpf sm */
IOC_E_HBFAIL = 10, /*!< heartbeat failure */
IOC_E_HWERROR = 11, /*!< hardware error interrupt */
IOC_E_TIMEOUT = 12, /*!< timeout */
@@ -295,12 +295,12 @@ bfa_ioc_sm_enabling(struct bfa_ioc *ioc, enum ioc_event event)
bfa_fsm_set_state(ioc, bfa_ioc_sm_getattr);
break;
- case IOC_E_PFAILED:
+ case IOC_E_PFFAILED:
/* !!! fall through !!! */
case IOC_E_HWERROR:
ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE);
bfa_fsm_set_state(ioc, bfa_ioc_sm_fail_retry);
- if (event != IOC_E_PFAILED)
+ if (event != IOC_E_PFFAILED)
bfa_iocpf_initfail(ioc);
break;
@@ -345,14 +345,14 @@ bfa_ioc_sm_getattr(struct bfa_ioc *ioc, enum ioc_event event)
bfa_fsm_set_state(ioc, bfa_ioc_sm_op);
break;
- case IOC_E_PFAILED:
+ case IOC_E_PFFAILED:
case IOC_E_HWERROR:
del_timer(&ioc->ioc_timer);
/* fall through */
case IOC_E_TIMEOUT:
ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE);
bfa_fsm_set_state(ioc, bfa_ioc_sm_fail_retry);
- if (event != IOC_E_PFAILED)
+ if (event != IOC_E_PFFAILED)
bfa_iocpf_getattrfail(ioc);
break;
@@ -388,7 +388,7 @@ bfa_ioc_sm_op(struct bfa_ioc *ioc, enum ioc_event event)
bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling);
break;
- case IOC_E_PFAILED:
+ case IOC_E_PFFAILED:
case IOC_E_HWERROR:
bfa_ioc_hb_stop(ioc);
/* !!! fall through !!! */
@@ -399,7 +399,7 @@ bfa_ioc_sm_op(struct bfa_ioc *ioc, enum ioc_event event)
else
bfa_fsm_set_state(ioc, bfa_ioc_sm_fail);
- if (event != IOC_E_PFAILED)
+ if (event != IOC_E_PFFAILED)
bfa_iocpf_fail(ioc);
break;
@@ -486,13 +486,13 @@ bfa_ioc_sm_fail_retry(struct bfa_ioc *ioc, enum ioc_event event)
bfa_fsm_set_state(ioc, bfa_ioc_sm_getattr);
break;
- case IOC_E_PFAILED:
+ case IOC_E_PFFAILED:
case IOC_E_HWERROR:
/**
* Initialization retry failed.
*/
ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE);
- if (event != IOC_E_PFAILED)
+ if (event != IOC_E_PFFAILED)
bfa_iocpf_initfail(ioc);
break;
@@ -1685,7 +1685,7 @@ bfa_ioc_pf_initfailed(struct bfa_ioc *ioc)
static void
bfa_ioc_pf_failed(struct bfa_ioc *ioc)
{
- bfa_fsm_send_event(ioc, IOC_E_PFAILED);
+ bfa_fsm_send_event(ioc, IOC_E_PFFAILED);
}
static void
--
1.7.1
^ permalink raw reply related
* [PATCH 06/10] bna: Mboxq Flush When IOC Disabled
From: Rasesh Mody @ 2011-07-22 18:07 UTC (permalink / raw)
To: davem, netdev; +Cc: adapter_linux_open_src_team, Rasesh Mody
In-Reply-To: <1311358069-32067-1-git-send-email-rmody@brocade.com>
Change details:
- If there is a command pending in the mailbox, bfa_ioc_mbox_queue() enqueues
the mailbox command to a pending command queue. Entries in this queue are
not flushed when IOC is disabled. As a result, when IOC is re-enabled again,
the stale entries in the pending command queue are posted to the mailbox.
When these mailbox commands are processed by the FW and responses are sent,
unexpected events are received by other modules' FSMs (f.e. bfa_msgq) which
have not posted any mailbox commands after IOC was enabled.
- Flush the pending mailbox command queue when IOC is disabled. Rename
bfa_ioc_mbox_hbfail to bfa_ioc_mbox_flush. Call bfa_ioc_mbox_flush
from bfa_iocpf_sm_disabled_entry()
Signed-off-by: Rasesh Mody <rmody@brocade.com>
---
drivers/net/bna/bfa_ioc.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/bna/bfa_ioc.c b/drivers/net/bna/bfa_ioc.c
index a13b4c5..889039c 100644
--- a/drivers/net/bna/bfa_ioc.c
+++ b/drivers/net/bna/bfa_ioc.c
@@ -68,7 +68,7 @@ static void bfa_ioc_hb_monitor(struct bfa_ioc *ioc);
static void bfa_ioc_hb_stop(struct bfa_ioc *ioc);
static void bfa_ioc_reset(struct bfa_ioc *ioc, bool force);
static void bfa_ioc_mbox_poll(struct bfa_ioc *ioc);
-static void bfa_ioc_mbox_hbfail(struct bfa_ioc *ioc);
+static void bfa_ioc_mbox_flush(struct bfa_ioc *ioc);
static void bfa_ioc_recover(struct bfa_ioc *ioc);
static void bfa_ioc_check_attr_wwns(struct bfa_ioc *ioc);
static void bfa_ioc_event_notify(struct bfa_ioc *, enum bfa_ioc_event);
@@ -938,6 +938,7 @@ bfa_iocpf_sm_disabling_sync(struct bfa_iocpf *iocpf, enum iocpf_event event)
static void
bfa_iocpf_sm_disabled_entry(struct bfa_iocpf *iocpf)
{
+ bfa_ioc_mbox_flush(iocpf->ioc);
bfa_ioc_pf_disabled(iocpf->ioc);
}
@@ -1054,7 +1055,7 @@ bfa_iocpf_sm_fail_sync_entry(struct bfa_iocpf *iocpf)
/**
* Flush any queued up mailbox requests.
*/
- bfa_ioc_mbox_hbfail(iocpf->ioc);
+ bfa_ioc_mbox_flush(iocpf->ioc);
bfa_ioc_hw_sem_get(iocpf->ioc);
}
@@ -1644,7 +1645,7 @@ bfa_ioc_mbox_poll(struct bfa_ioc *ioc)
* Cleanup any pending requests.
*/
static void
-bfa_ioc_mbox_hbfail(struct bfa_ioc *ioc)
+bfa_ioc_mbox_flush(struct bfa_ioc *ioc)
{
struct bfa_ioc_mbox_mod *mod = &ioc->mbox_mod;
struct bfa_mbox_cmd *cmd;
--
1.7.1
^ permalink raw reply related
* [PATCH 09/10] bna: HW Error Counter Fix
From: Rasesh Mody @ 2011-07-22 18:07 UTC (permalink / raw)
To: davem, netdev; +Cc: adapter_linux_open_src_team, Rasesh Mody
In-Reply-To: <1311358069-32067-1-git-send-email-rmody@brocade.com>
Change details:
- Heartbeat failure counter is not incrementing under some scenarios.
Update hbfails and hb_count stats during hwerror event.
Signed-off-by: Rasesh Mody <rmody@brocade.com>
---
drivers/net/bna/bfa_defs.h | 1 +
drivers/net/bna/bfa_ioc.c | 3 +++
drivers/net/bna/bfa_ioc.h | 2 ++
3 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/drivers/net/bna/bfa_defs.h b/drivers/net/bna/bfa_defs.h
index fa81f3c..b080b36 100644
--- a/drivers/net/bna/bfa_defs.h
+++ b/drivers/net/bna/bfa_defs.h
@@ -153,6 +153,7 @@ struct bfa_ioc_drv_stats {
u32 enable_reqs;
u32 disable_replies;
u32 enable_replies;
+ u32 rsvd;
};
/**
diff --git a/drivers/net/bna/bfa_ioc.c b/drivers/net/bna/bfa_ioc.c
index c3b62a3..126b0aa 100644
--- a/drivers/net/bna/bfa_ioc.c
+++ b/drivers/net/bna/bfa_ioc.c
@@ -2029,6 +2029,8 @@ bfa_nw_ioc_mbox_isr(struct bfa_ioc *ioc)
void
bfa_nw_ioc_error_isr(struct bfa_ioc *ioc)
{
+ bfa_ioc_stats(ioc, ioc_hbfails);
+ bfa_ioc_stats_hb_count(ioc, ioc->hb_count);
bfa_fsm_send_event(ioc, IOC_E_HWERROR);
}
@@ -2255,6 +2257,7 @@ bfa_ioc_recover(struct bfa_ioc *ioc)
{
pr_crit("Heart Beat of IOC has failed\n");
bfa_ioc_stats(ioc, ioc_hbfails);
+ bfa_ioc_stats_hb_count(ioc, ioc->hb_count);
bfa_fsm_send_event(ioc, IOC_E_HBFAIL);
}
diff --git a/drivers/net/bna/bfa_ioc.h b/drivers/net/bna/bfa_ioc.h
index c6cf218..4b5dc98 100644
--- a/drivers/net/bna/bfa_ioc.h
+++ b/drivers/net/bna/bfa_ioc.h
@@ -237,6 +237,8 @@ struct bfa_ioc_hwif {
BFI_ADAPTER_GETP(NPORTS, (__ioc)->attr->adapter_prop)
#define bfa_ioc_stats(_ioc, _stats) ((_ioc)->stats._stats++)
+#define bfa_ioc_stats_hb_count(_ioc, _hb_count) \
+ ((_ioc)->stats.hb_count = (_hb_count))
#define BFA_IOC_FWIMG_MINSZ (16 * 1024)
#define BFA_IOC_FWIMG_TYPE(__ioc) \
(((__ioc)->ctdev) ? \
--
1.7.1
^ permalink raw reply related
* [PATCH 08/10] bna: Add HW Semaphore Unlock Logic
From: Rasesh Mody @ 2011-07-22 18:07 UTC (permalink / raw)
To: davem, netdev; +Cc: adapter_linux_open_src_team, Rasesh Mody
In-Reply-To: <1311358069-32067-1-git-send-email-rmody@brocade.com>
Change details:
- Added logic to unlock hw semaphore if the previos FW boot was from boot
code (flash based) and the current FW initialization attempt is from OS
driver.
Signed-off-by: Rasesh Mody <rmody@brocade.com>
---
drivers/net/bna/bfa_ioc.c | 25 +++++++++++++++++++++++++
drivers/net/bna/bfi.h | 6 ++++++
2 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/drivers/net/bna/bfa_ioc.c b/drivers/net/bna/bfa_ioc.c
index da56c2f..c3b62a3 100644
--- a/drivers/net/bna/bfa_ioc.c
+++ b/drivers/net/bna/bfa_ioc.c
@@ -58,6 +58,7 @@ static bool bfa_nw_auto_recover = true;
/*
* forward declarations
*/
+static void bfa_ioc_hw_sem_init(struct bfa_ioc *ioc);
static void bfa_ioc_hw_sem_get(struct bfa_ioc *ioc);
static void bfa_ioc_hw_sem_get_cancel(struct bfa_ioc *ioc);
static void bfa_ioc_hwinit(struct bfa_ioc *ioc, bool force);
@@ -590,6 +591,7 @@ bfa_iocpf_sm_reset(struct bfa_iocpf *iocpf, enum iocpf_event event)
static void
bfa_iocpf_sm_fwcheck_entry(struct bfa_iocpf *iocpf)
{
+ bfa_ioc_hw_sem_init(iocpf->ioc);
bfa_ioc_hw_sem_get(iocpf->ioc);
}
@@ -1176,6 +1178,29 @@ bfa_nw_ioc_sem_release(void __iomem *sem_reg)
}
static void
+bfa_ioc_hw_sem_init(struct bfa_ioc *ioc)
+{
+ struct bfi_ioc_image_hdr fwhdr;
+ u32 fwstate = readl(ioc->ioc_regs.ioc_fwstate);
+
+ if (fwstate == BFI_IOC_UNINIT)
+ return;
+
+ bfa_nw_ioc_fwver_get(ioc, &fwhdr);
+
+ if (swab32(fwhdr.exec) == BFI_FWBOOT_TYPE_NORMAL)
+ return;
+
+ writel(BFI_IOC_UNINIT, ioc->ioc_regs.ioc_fwstate);
+
+ /*
+ * Try to lock and then unlock the semaphore.
+ */
+ readl(ioc->ioc_regs.ioc_sem_reg);
+ writel(1, ioc->ioc_regs.ioc_sem_reg);
+}
+
+static void
bfa_ioc_hw_sem_get(struct bfa_ioc *ioc)
{
u32 r32;
diff --git a/drivers/net/bna/bfi.h b/drivers/net/bna/bfi.h
index 683a7d7..088211c 100644
--- a/drivers/net/bna/bfi.h
+++ b/drivers/net/bna/bfi.h
@@ -289,6 +289,12 @@ struct bfi_ioc_image_hdr {
u32 md5sum[BFI_IOC_MD5SUM_SZ];
};
+enum bfi_fwboot_type {
+ BFI_FWBOOT_TYPE_NORMAL = 0,
+ BFI_FWBOOT_TYPE_FLASH = 1,
+ BFI_FWBOOT_TYPE_MEMTEST = 2,
+};
+
/**
* BFI_IOC_I2H_READY_EVENT message
*/
--
1.7.1
^ permalink raw reply related
* [PATCH 10/10] bna: Header File Consolidation
From: Rasesh Mody @ 2011-07-22 18:07 UTC (permalink / raw)
To: davem, netdev; +Cc: adapter_linux_open_src_team, Rasesh Mody
In-Reply-To: <1311358069-32067-1-git-send-email-rmody@brocade.com>
Change details:
- Consolidated bfa_sm.h and bfa_wc.h into bfa_cs.h
Signed-off-by: Rasesh Mody <rmody@brocade.com>
---
drivers/net/bna/bfa_cs.h | 140 ++++++++++++++++++++++++++++++++++++++++++++
drivers/net/bna/bfa_ioc.h | 2 +-
drivers/net/bna/bfa_sm.h | 88 ---------------------------
drivers/net/bna/bfa_wc.h | 69 ----------------------
drivers/net/bna/bna.h | 2 +-
drivers/net/bna/bna_ctrl.c | 3 +-
drivers/net/bna/bna_txrx.c | 2 +-
7 files changed, 144 insertions(+), 162 deletions(-)
create mode 100644 drivers/net/bna/bfa_cs.h
delete mode 100644 drivers/net/bna/bfa_sm.h
delete mode 100644 drivers/net/bna/bfa_wc.h
diff --git a/drivers/net/bna/bfa_cs.h b/drivers/net/bna/bfa_cs.h
new file mode 100644
index 0000000..3da1a94
--- /dev/null
+++ b/drivers/net/bna/bfa_cs.h
@@ -0,0 +1,140 @@
+/*
+ * Linux network driver for Brocade Converged Network Adapter.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License (GPL) Version 2 as
+ * published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
+/*
+ * Copyright (c) 2005-2011 Brocade Communications Systems, Inc.
+ * All rights reserved
+ * www.brocade.com
+ */
+
+/**
+ * @file bfa_cs.h BFA common services
+ */
+
+#ifndef __BFA_CS_H__
+#define __BFA_CS_H__
+
+#include "cna.h"
+
+/**
+ * @ BFA state machine interfaces
+ */
+
+typedef void (*bfa_sm_t)(void *sm, int event);
+
+/**
+ * oc - object class eg. bfa_ioc
+ * st - state, eg. reset
+ * otype - object type, eg. struct bfa_ioc
+ * etype - object type, eg. enum ioc_event
+ */
+#define bfa_sm_state_decl(oc, st, otype, etype) \
+ static void oc ## _sm_ ## st(otype * fsm, etype event)
+
+#define bfa_sm_set_state(_sm, _state) ((_sm)->sm = (bfa_sm_t)(_state))
+#define bfa_sm_send_event(_sm, _event) ((_sm)->sm((_sm), (_event)))
+#define bfa_sm_get_state(_sm) ((_sm)->sm)
+#define bfa_sm_cmp_state(_sm, _state) ((_sm)->sm == (bfa_sm_t)(_state))
+
+/**
+ * For converting from state machine function to state encoding.
+ */
+struct bfa_sm_table {
+ bfa_sm_t sm; /*!< state machine function */
+ int state; /*!< state machine encoding */
+ char *name; /*!< state name for display */
+};
+#define BFA_SM(_sm) ((bfa_sm_t)(_sm))
+
+/**
+ * State machine with entry actions.
+ */
+typedef void (*bfa_fsm_t)(void *fsm, int event);
+
+/**
+ * oc - object class eg. bfa_ioc
+ * st - state, eg. reset
+ * otype - object type, eg. struct bfa_ioc
+ * etype - object type, eg. enum ioc_event
+ */
+#define bfa_fsm_state_decl(oc, st, otype, etype) \
+ static void oc ## _sm_ ## st(otype * fsm, etype event); \
+ static void oc ## _sm_ ## st ## _entry(otype * fsm)
+
+#define bfa_fsm_set_state(_fsm, _state) do { \
+ (_fsm)->fsm = (bfa_fsm_t)(_state); \
+ _state ## _entry(_fsm); \
+} while (0)
+
+#define bfa_fsm_send_event(_fsm, _event) ((_fsm)->fsm((_fsm), (_event)))
+#define bfa_fsm_get_state(_fsm) ((_fsm)->fsm)
+#define bfa_fsm_cmp_state(_fsm, _state) \
+ ((_fsm)->fsm == (bfa_fsm_t)(_state))
+
+static inline int
+bfa_sm_to_state(const struct bfa_sm_table *smt, bfa_sm_t sm)
+{
+ int i = 0;
+
+ while (smt[i].sm && smt[i].sm != sm)
+ i++;
+ return smt[i].state;
+}
+
+/**
+ * @ Generic wait counter.
+ */
+
+typedef void (*bfa_wc_resume_t) (void *cbarg);
+
+struct bfa_wc {
+ bfa_wc_resume_t wc_resume;
+ void *wc_cbarg;
+ int wc_count;
+};
+
+static inline void
+bfa_wc_up(struct bfa_wc *wc)
+{
+ wc->wc_count++;
+}
+
+static inline void
+bfa_wc_down(struct bfa_wc *wc)
+{
+ wc->wc_count--;
+ if (wc->wc_count == 0)
+ wc->wc_resume(wc->wc_cbarg);
+}
+
+/**
+ * Initialize a waiting counter.
+ */
+static inline void
+bfa_wc_init(struct bfa_wc *wc, bfa_wc_resume_t wc_resume, void *wc_cbarg)
+{
+ wc->wc_resume = wc_resume;
+ wc->wc_cbarg = wc_cbarg;
+ wc->wc_count = 0;
+ bfa_wc_up(wc);
+}
+
+/**
+ * Wait for counter to reach zero
+ */
+static inline void
+bfa_wc_wait(struct bfa_wc *wc)
+{
+ bfa_wc_down(wc);
+}
+
+#endif /* __BFA_CS_H__ */
diff --git a/drivers/net/bna/bfa_ioc.h b/drivers/net/bna/bfa_ioc.h
index 4b5dc98..bda866b 100644
--- a/drivers/net/bna/bfa_ioc.h
+++ b/drivers/net/bna/bfa_ioc.h
@@ -19,7 +19,7 @@
#ifndef __BFA_IOC_H__
#define __BFA_IOC_H__
-#include "bfa_sm.h"
+#include "bfa_cs.h"
#include "bfi.h"
#include "cna.h"
diff --git a/drivers/net/bna/bfa_sm.h b/drivers/net/bna/bfa_sm.h
deleted file mode 100644
index 46462c4..0000000
--- a/drivers/net/bna/bfa_sm.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Linux network driver for Brocade Converged Network Adapter.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License (GPL) Version 2 as
- * published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- */
-/*
- * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
- * All rights reserved
- * www.brocade.com
- */
-
-/**
- * @file bfasm.h State machine defines
- */
-
-#ifndef __BFA_SM_H__
-#define __BFA_SM_H__
-
-#include "cna.h"
-
-typedef void (*bfa_sm_t)(void *sm, int event);
-
-/**
- * oc - object class eg. bfa_ioc
- * st - state, eg. reset
- * otype - object type, eg. struct bfa_ioc
- * etype - object type, eg. enum ioc_event
- */
-#define bfa_sm_state_decl(oc, st, otype, etype) \
- static void oc ## _sm_ ## st(otype * fsm, etype event)
-
-#define bfa_sm_set_state(_sm, _state) ((_sm)->sm = (bfa_sm_t)(_state))
-#define bfa_sm_send_event(_sm, _event) ((_sm)->sm((_sm), (_event)))
-#define bfa_sm_get_state(_sm) ((_sm)->sm)
-#define bfa_sm_cmp_state(_sm, _state) ((_sm)->sm == (bfa_sm_t)(_state))
-
-/**
- * For converting from state machine function to state encoding.
- */
-struct bfa_sm_table {
- bfa_sm_t sm; /*!< state machine function */
- int state; /*!< state machine encoding */
- char *name; /*!< state name for display */
-};
-#define BFA_SM(_sm) ((bfa_sm_t)(_sm))
-
-/**
- * State machine with entry actions.
- */
-typedef void (*bfa_fsm_t)(void *fsm, int event);
-
-/**
- * oc - object class eg. bfa_ioc
- * st - state, eg. reset
- * otype - object type, eg. struct bfa_ioc
- * etype - object type, eg. enum ioc_event
- */
-#define bfa_fsm_state_decl(oc, st, otype, etype) \
- static void oc ## _sm_ ## st(otype * fsm, etype event); \
- static void oc ## _sm_ ## st ## _entry(otype * fsm)
-
-#define bfa_fsm_set_state(_fsm, _state) do { \
- (_fsm)->fsm = (bfa_fsm_t)(_state); \
- _state ## _entry(_fsm); \
-} while (0)
-
-#define bfa_fsm_send_event(_fsm, _event) ((_fsm)->fsm((_fsm), (_event)))
-#define bfa_fsm_get_state(_fsm) ((_fsm)->fsm)
-#define bfa_fsm_cmp_state(_fsm, _state) \
- ((_fsm)->fsm == (bfa_fsm_t)(_state))
-
-static inline int
-bfa_sm_to_state(const struct bfa_sm_table *smt, bfa_sm_t sm)
-{
- int i = 0;
-
- while (smt[i].sm && smt[i].sm != sm)
- i++;
- return smt[i].state;
-}
-#endif
diff --git a/drivers/net/bna/bfa_wc.h b/drivers/net/bna/bfa_wc.h
deleted file mode 100644
index d0e4cae..0000000
--- a/drivers/net/bna/bfa_wc.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Linux network driver for Brocade Converged Network Adapter.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License (GPL) Version 2 as
- * published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- */
-/*
- * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
- * All rights reserved
- * www.brocade.com
- */
-
-/**
- * @file bfa_wc.h Generic wait counter.
- */
-
-#ifndef __BFA_WC_H__
-#define __BFA_WC_H__
-
-typedef void (*bfa_wc_resume_t) (void *cbarg);
-
-struct bfa_wc {
- bfa_wc_resume_t wc_resume;
- void *wc_cbarg;
- int wc_count;
-};
-
-static inline void
-bfa_wc_up(struct bfa_wc *wc)
-{
- wc->wc_count++;
-}
-
-static inline void
-bfa_wc_down(struct bfa_wc *wc)
-{
- wc->wc_count--;
- if (wc->wc_count == 0)
- wc->wc_resume(wc->wc_cbarg);
-}
-
-/**
- * Initialize a waiting counter.
- */
-static inline void
-bfa_wc_init(struct bfa_wc *wc, bfa_wc_resume_t wc_resume, void *wc_cbarg)
-{
- wc->wc_resume = wc_resume;
- wc->wc_cbarg = wc_cbarg;
- wc->wc_count = 0;
- bfa_wc_up(wc);
-}
-
-/**
- * Wait for counter to reach zero
- */
-static inline void
-bfa_wc_wait(struct bfa_wc *wc)
-{
- bfa_wc_down(wc);
-}
-
-#endif
diff --git a/drivers/net/bna/bna.h b/drivers/net/bna/bna.h
index 6b14c1d..21e9155 100644
--- a/drivers/net/bna/bna.h
+++ b/drivers/net/bna/bna.h
@@ -13,7 +13,7 @@
#ifndef __BNA_H__
#define __BNA_H__
-#include "bfa_wc.h"
+#include "bfa_cs.h"
#include "bfa_ioc.h"
#include "cna.h"
#include "bfi_ll.h"
diff --git a/drivers/net/bna/bna_ctrl.c b/drivers/net/bna/bna_ctrl.c
index 7d9bc2f..cb2594c 100644
--- a/drivers/net/bna/bna_ctrl.c
+++ b/drivers/net/bna/bna_ctrl.c
@@ -16,8 +16,7 @@
* www.brocade.com
*/
#include "bna.h"
-#include "bfa_sm.h"
-#include "bfa_wc.h"
+#include "bfa_cs.h"
static void bna_device_cb_port_stopped(void *arg, enum bna_cb_status status);
diff --git a/drivers/net/bna/bna_txrx.c b/drivers/net/bna/bna_txrx.c
index 4d4f4d9..f0983c8 100644
--- a/drivers/net/bna/bna_txrx.c
+++ b/drivers/net/bna/bna_txrx.c
@@ -16,7 +16,7 @@
* www.brocade.com
*/
#include "bna.h"
-#include "bfa_sm.h"
+#include "bfa_cs.h"
#include "bfi.h"
/**
--
1.7.1
^ permalink raw reply related
* Re: [PATCH] net: Fix security_socket_sendmsg() bypass problem.
From: Tetsuo Handa @ 2011-07-22 18:31 UTC (permalink / raw)
To: davem; +Cc: casey, anton, netdev, linux-security-module
In-Reply-To: <201107230242.HJH39096.OSMOVQOLFFFHJt@I-love.SAKURA.ne.jp>
Tetsuo Handa wrote:
> David Miller wrote:
> > Ugh, this takes away a non-trivial part of the performance gain of
> > sendmmsg().
> >
> > I would instead rather that you check ahead of time whether this
> > actually is a send to different addresses. If they are all the
> > same, keep the nosec code path.
> >
> OK. Something like this? Not tested at all.
No. We can't compare destination address before entering __sys_sendmsg(), for
it is copied to kernel memory by verify_iovec()/verify_compat_iovec().
To be able to compare, we need to pass "struct sockaddr_storage address;" to
__sys_sendmsg(). Also, the content the kernel has to hold is not array of
"struct msghdr" but array of "struct sockaddr_storage".
It needs larger modification than expected.
^ permalink raw reply
* Re: [PATCH 13/13] sunrpc: use SKB fragment destructors to delay completion until page is released by network stack.
From: Trond Myklebust @ 2011-07-22 18:39 UTC (permalink / raw)
To: Ian Campbell
Cc: netdev-u79uwXL29TY76Z2rM5mHXA, linux-nfs-u79uwXL29TY76Z2rM5mHXA,
David S. Miller, Neil Brown, J. Bruce Fields
In-Reply-To: <1311340653-19336-13-git-send-email-ian.campbell-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
On Fri, 2011-07-22 at 14:17 +0100, Ian Campbell wrote:
> This prevents an issue where an ACK is delayed, a retransmit is queued (either
> at the RPC or TCP level) and the ACK arrives before the retransmission hits the
> wire. If this happens to an NFS WRITE RPC then the write() system call
> completes and the userspace process can continue, potentially modifying data
> referenced by the retransmission before the retransmission occurs.
>
> Signed-off-by: Ian Campbell <ian.campbell-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
> Cc: Trond Myklebust <Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>
> Cc: "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
> Cc: Neil Brown <neilb-l3A5Bk7waGM@public.gmane.org>
> Cc: "J. Bruce Fields" <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
> Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> [since v1:
> Push down from NFS layer into RPM layer
> ]
> ---
> include/linux/sunrpc/xdr.h | 2 ++
> include/linux/sunrpc/xprt.h | 5 ++++-
> net/sunrpc/clnt.c | 27 ++++++++++++++++++++++-----
> net/sunrpc/svcsock.c | 2 +-
> net/sunrpc/xprt.c | 13 +++++++++++++
> net/sunrpc/xprtsock.c | 2 +-
> 6 files changed, 43 insertions(+), 8 deletions(-)
This looks good to me. Thanks, Ian!
Acked-by: Trond Myklebust <Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>
--
Trond Myklebust
Linux NFS client maintainer
NetApp
Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org
www.netapp.com
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" 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: Linux 3.0 release
From: Linus Torvalds @ 2011-07-22 19:21 UTC (permalink / raw)
To: David; +Cc: Linux Kernel Mailing List, netdev
In-Reply-To: <4E29CB5B.4040408@unsolicited.net>
On Fri, Jul 22, 2011 at 12:11 PM, David <david@unsolicited.net> wrote:
>
> I'm getting the following warning at boot from 3.0, everything seems to be fine otherwise though.
>
> Jul 22 19:40:02 server kernel: [ 15.526629] ------------[ cut here ]------------
> Jul 22 19:40:02 server kernel: [ 15.526635] WARNING: at kernel/timer.c:1011 del_timer_sync+0x4e/0x50()
Hmm. That looks like a real bug: you shouldn't do a "del_timer_sync()"
from an interrupt. It probably works, but it sounds like a really bad
idea.
> Jul 22 19:40:02 server kernel: [ 15.526677] [<ffffffff81054b4e>] del_timer_sync+0x4e/0x50
> Jul 22 19:40:02 server kernel: [ 15.526679] [<ffffffff8145e224>] linkwatch_schedule_work+0x84/0xa0
> Jul 22 19:40:02 server kernel: [ 15.526681] [<ffffffff8145e2bc>] linkwatch_fire_event+0x7c/0x100
> Jul 22 19:40:02 server kernel: [ 15.526684] [<ffffffff8146b1ed>] netif_carrier_on+0x2d/0x40
> Jul 22 19:40:02 server kernel: [ 15.526689] [<ffffffffa006b6fb>] __rtl8169_check_link_status+0x4b/0xc0 [r8169]
> Jul 22 19:40:02 server kernel: [ 15.526693] [<ffffffffa006c016>] rtl8169_interrupt+0x166/0x3a0 [r8169]
> Jul 22 19:40:02 server kernel: [ 15.526696] [<ffffffff810a4385>] handle_irq_event_percpu+0x55/0x1f0
> Jul 22 19:40:02 server kernel: [ 15.526698] [<ffffffff810a4551>] handle_irq_event+0x31/0x50
I'm not seeing a lot of changes in any of these areas, though. I
wonder what made it start happen.
Linus
^ permalink raw reply
* Re: Linux 3.0 release
From: David @ 2011-07-22 19:11 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Linux Kernel Mailing List, netdev
In-Reply-To: <CA+55aFxakA2U+oMJ1T7awTYa+p6xp9N0aCbfrUqgkF7BJ8gnQw@mail.gmail.com>
On 22/07/11 03:59, Linus Torvalds wrote:
> really smooth. Which is not to say that there may not be bugs, but if
> anything, there are hopefully fewer than usual, rather than the normal
> ".0" problems.
I'm getting the following warning at boot from 3.0, everything seems to be fine otherwise though.
Jul 22 19:40:02 server kernel: [ 15.526629] ------------[ cut here ]------------
Jul 22 19:40:02 server kernel: [ 15.526635] WARNING: at kernel/timer.c:1011 del_timer_sync+0x4e/0x50()
Jul 22 19:40:02 server kernel: [ 15.526637] Hardware name: System Product Name
Jul 22 19:40:02 server kernel: [ 15.526638] Modules linked in: xt_owner ipt_REDIRECT ipt_MASQUERADE ts_kmp xt_string ipt_REJECT xt_recent xt_state xt_multiport xt_tcpudp xt_pkttype ipt_LOG xt_limit
iptable_mangle iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 iptable_filter ip_tables ip6table_filter ip6_tables x_tables wctdm dahdi hisax nfsd isl6421 crc_ccitt b2c2_flexcop_pci
dvb_pll b2c2_flexcop mt352 isdn cx24123 dvb_usb_digitv cx24113 s5h1420 dvb_usb e1000e snd_hda_codec_hdmi exportfs it87 dvb_core pl2303 hwmon_vid lp snd_hda_codec_via ppdev nfs k10temp i2c_piix4
snd_hda_intel snd_hda_codec r8169 mii lockd snd_pcm snd_timer snd shpchp soundcore parport_pc snd_page_alloc parport auth_rpcgss nfs_acl sunrpc
Jul 22 19:40:02 server kernel: [ 15.526667] Pid: 0, comm: kworker/0:0 Not tainted 3.0.0 #1
Jul 22 19:40:02 server kernel: [ 15.526668] Call Trace:
Jul 22 19:40:02 server kernel: [ 15.526670] <IRQ> [<ffffffff8104599a>] warn_slowpath_common+0x7a/0xb0
Jul 22 19:40:02 server kernel: [ 15.526675] [<ffffffff810459e5>] warn_slowpath_null+0x15/0x20
Jul 22 19:40:02 server kernel: [ 15.526677] [<ffffffff81054b4e>] del_timer_sync+0x4e/0x50
Jul 22 19:40:02 server kernel: [ 15.526679] [<ffffffff8145e224>] linkwatch_schedule_work+0x84/0xa0
Jul 22 19:40:02 server kernel: [ 15.526681] [<ffffffff8145e2bc>] linkwatch_fire_event+0x7c/0x100
Jul 22 19:40:02 server kernel: [ 15.526684] [<ffffffff8146b1ed>] netif_carrier_on+0x2d/0x40
Jul 22 19:40:02 server kernel: [ 15.526689] [<ffffffffa006b6fb>] __rtl8169_check_link_status+0x4b/0xc0 [r8169]
Jul 22 19:40:02 server kernel: [ 15.526693] [<ffffffffa006c016>] rtl8169_interrupt+0x166/0x3a0 [r8169]
Jul 22 19:40:02 server kernel: [ 15.526696] [<ffffffff810a4385>] handle_irq_event_percpu+0x55/0x1f0
Jul 22 19:40:02 server kernel: [ 15.526698] [<ffffffff810a4551>] handle_irq_event+0x31/0x50
Jul 22 19:40:02 server kernel: [ 15.526701] [<ffffffff8101a371>] ? ack_apic_edge+0x31/0x40
Jul 22 19:40:02 server kernel: [ 15.526703] [<ffffffff810a6eb5>] handle_edge_irq+0x65/0x120
Jul 22 19:40:02 server kernel: [ 15.526706] [<ffffffff81003f8d>] handle_irq+0x1d/0x30
Jul 22 19:40:02 server kernel: [ 15.526708] [<ffffffff81003918>] do_IRQ+0x58/0xe0
Jul 22 19:40:02 server kernel: [ 15.526711] [<ffffffff815588d3>] common_interrupt+0x13/0x13
Jul 22 19:40:02 server kernel: [ 15.526712] <EOI> [<ffffffff8106bf5d>] ? sched_clock_local+0x1d/0x90
Jul 22 19:40:02 server kernel: [ 15.526717] [<ffffffff81009e25>] ? default_idle+0x55/0x170
Jul 22 19:40:02 server kernel: [ 15.526719] [<ffffffff81009fc3>] amd_e400_idle+0x83/0x100
Jul 22 19:40:02 server kernel: [ 15.526721] [<ffffffff8155bb55>] ? atomic_notifier_call_chain+0x15/0x20
Jul 22 19:40:02 server kernel: [ 15.526723] [<ffffffff81001fd9>] cpu_idle+0x59/0xb0
Jul 22 19:40:02 server kernel: [ 15.526726] [<ffffffff81551552>] start_secondary+0x181/0x185
Jul 22 19:40:02 server kernel: [ 15.526727] ---[ end trace 5bac97729a402448 ]---
(dual core phenom 2, dmesg etc on request)
Cheers
David
^ permalink raw reply
* Re: Linux 3.0 release
From: Ben Greear @ 2011-07-22 19:44 UTC (permalink / raw)
To: Linus Torvalds; +Cc: David, Linux Kernel Mailing List, netdev
In-Reply-To: <CA+55aFy1FnVGH4C_0T8fXwZPUdz5-SCczMwy1K8kydLwTx89RQ@mail.gmail.com>
On 07/22/2011 12:21 PM, Linus Torvalds wrote:
> On Fri, Jul 22, 2011 at 12:11 PM, David<david@unsolicited.net> wrote:
>>
>> I'm getting the following warning at boot from 3.0, everything seems to be fine otherwise though.
>>
>> Jul 22 19:40:02 server kernel: [ 15.526629] ------------[ cut here ]------------
>> Jul 22 19:40:02 server kernel: [ 15.526635] WARNING: at kernel/timer.c:1011 del_timer_sync+0x4e/0x50()
>
> Hmm. That looks like a real bug: you shouldn't do a "del_timer_sync()"
> from an interrupt. It probably works, but it sounds like a really bad
> idea.
>
>> Jul 22 19:40:02 server kernel: [ 15.526677] [<ffffffff81054b4e>] del_timer_sync+0x4e/0x50
>> Jul 22 19:40:02 server kernel: [ 15.526679] [<ffffffff8145e224>] linkwatch_schedule_work+0x84/0xa0
>> Jul 22 19:40:02 server kernel: [ 15.526681] [<ffffffff8145e2bc>] linkwatch_fire_event+0x7c/0x100
>> Jul 22 19:40:02 server kernel: [ 15.526684] [<ffffffff8146b1ed>] netif_carrier_on+0x2d/0x40
>> Jul 22 19:40:02 server kernel: [ 15.526689] [<ffffffffa006b6fb>] __rtl8169_check_link_status+0x4b/0xc0 [r8169]
>> Jul 22 19:40:02 server kernel: [ 15.526693] [<ffffffffa006c016>] rtl8169_interrupt+0x166/0x3a0 [r8169]
>> Jul 22 19:40:02 server kernel: [ 15.526696] [<ffffffff810a4385>] handle_irq_event_percpu+0x55/0x1f0
>> Jul 22 19:40:02 server kernel: [ 15.526698] [<ffffffff810a4551>] handle_irq_event+0x31/0x50
>
> I'm not seeing a lot of changes in any of these areas, though. I
> wonder what made it start happen.
This has been around since at least 2.6.38. I haven't tested recently
on my rtl8169 system, but I don't recall seeing any attempts to fix
it...
http://permalink.gmane.org/gmane.linux.network/193565
http://lists.openwall.net/netdev/2011/05/04/183
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [PATCH 10/13] net: add paged frag destructor to skb_fill_page_desc()
From: Michał Mirosław @ 2011-07-22 19:58 UTC (permalink / raw)
To: Ian Campbell
Cc: netdev-u79uwXL29TY76Z2rM5mHXA, linux-nfs-u79uwXL29TY76Z2rM5mHXA,
David S. Miller, James E.J. Bottomley, Alexey Kuznetsov,
Pekka Savola (ipv6), James Morris, Hideaki YOSHIFUJI,
Patrick McHardy, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
linux-s390-u79uwXL29TY76Z2rM5mHXA,
linux-scsi-u79uwXL29TY76Z2rM5mHXA, devel-s9riP+hp16TNLxjTenLetw
In-Reply-To: <1311340653-19336-10-git-send-email-ian.campbell-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
2011/7/22 Ian Campbell <ian.campbell@citrix.com>:
> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> index 9818fe2..faee8d3 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> @@ -1134,12 +1134,14 @@ static inline int skb_pagelen(const struct sk_buff *skb)
> * Does not take any additional reference on the fragment.
> */
> static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
> - struct page *page, int off, int size)
> + struct page *page,
> + struct skb_frag_destructor *destroy,
> + int off, int size)
> {
> skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
>
> frag->page.p = page;
> - frag->page.destructor = NULL;
> + frag->page.destructor = destroy;
> frag->page_offset = off;
> frag->size = size;
> }
You could just rename this function to e.g.
__skb_fill_fragile_page_desc() (or whatever name) add an inline
wrapper calling it with destroy == NULL. This will avoid touching all
those drivers which won't ever need this functionality.
Best Regards,
Michał Mirosław
^ permalink raw reply
* Re: Linux 3.0 release
From: Stephen Hemminger @ 2011-07-22 20:32 UTC (permalink / raw)
To: Ben Greear, Linus Torvalds, David, Tejun Heo
Cc: Linux Kernel Mailing List, netdev
In-Reply-To: <4E29D326.7070403@candelatech.com>
This a regression which probably began with
commit e22bee782b3b00bd4534ae9b1c5fb2e8e6573c5c
Author: Tejun Heo <tj@kernel.org>
Date: Tue Jun 29 10:07:14 2010 +0200
workqueue: implement concurrency managed dynamic worker pool
Before that it was perfectly legal for link watch code to
call schedule_delayed_work from IRQ. This should be allowable;
the code to manage the worker pool should handle it.
Network devices call netif_carrier_on/off from IRQ all the
time. The problem is that the new pool code breaks this
if link watch tries to schedule work before there enough worker
threads.
The workqueue code should have a fallback and not try and
do anything if being called from IRQ.
^ permalink raw reply
* Re: Linux 3.0 release
From: Linus Torvalds @ 2011-07-22 20:35 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Ben Greear, David, Tejun Heo, Linux Kernel Mailing List, netdev
In-Reply-To: <20110722133220.0baf2199@nehalam.ftrdhcpuser.net>
On Fri, Jul 22, 2011 at 1:32 PM, Stephen Hemminger
<shemminger@vyatta.com> wrote:
>
> The workqueue code should have a fallback and not try and
> do anything if being called from IRQ.
Fair enough. Especially since one of the *points* of workqueues is
indeed to schedule stuff from irqs and that cannot be done
immediately.
Tejun?
Linus
^ permalink raw reply
* Re: [PATCH net-next v2] bonding: fix strlen errors in sysfs
From: Andy Gospodarek @ 2011-07-22 20:51 UTC (permalink / raw)
To: Jay Vosburgh; +Cc: Vitalii Demianets, Andy Gospodarek, netdev, Takuma Umeya
In-Reply-To: <9576.1310659326@death>
On Thu, Jul 14, 2011 at 09:02:06AM -0700, Jay Vosburgh wrote:
> Vitalii Demianets <vitas@nppfactor.kiev.ua> wrote:
>
> >On Thursday 14 July 2011 04:57:45 Andy Gospodarek wrote:
> >> - if (strnicmp
> >> - (slave->dev->name, buf,
> >> - strlen(slave->dev->name)) == 0) {
> >> + int max_len = max(strlen(slave->dev->name),
> >> + strlen(buf) - 1);
> >> + if (strnicmp(slave->dev->name, buf, max_len) == 0) {
> >
> >As for me there is no sense in preventing "address out of range" errors in
> >strnicmp by calculating length with strlen first. If there is missing \0 at
> >the end of the string you just shift failure point from stricmp to the strlen
> >function call.
> >IMHO "maximum length" argument in strnicmp should be some appropriate constant
> >instead. Alternatively we can use count:
>
> I agree about using a constant, and I nominate IFNAMSIZ for that
> constant.
>
A constant like IFNAMSIZ can work, but only if buf has the '\n' removed
from the string that is added by echo or other command first.
> Also, should we really be using strnicmp? I.e., case
> insensitive? Aren't interface names case sensitive?
Probably not.
I'll roll a patch next week that drops the newline and uses IFNAMSIZ if
that is the preference. I didn't think it was worth the trouble
initially, so I didn't do it that way the first time.
^ permalink raw reply
* Re: [PATCH 10/13] net: add paged frag destructor to skb_fill_page_desc()
From: Ian Campbell @ 2011-07-22 21:07 UTC (permalink / raw)
To: Michał Mirosław
Cc: netdev@vger.kernel.org, linux-nfs@vger.kernel.org,
David S. Miller, James E.J. Bottomley, Alexey Kuznetsov,
Pekka Savola (ipv6), James Morris, Hideaki YOSHIFUJI,
Patrick McHardy, linux-rdma@vger.kernel.org,
linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
devel@open-fcoe.org
In-Reply-To: <CAHXqBFLQFKqK=ORpDQx6s2ud8mWkx=YC_AT60GVS+4XK0H61pw@mail.gmail.com>
On Fri, 2011-07-22 at 20:58 +0100, Michał Mirosław wrote:
> 2011/7/22 Ian Campbell <ian.campbell@citrix.com>:
> > diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> > index 9818fe2..faee8d3 100644
> > --- a/include/linux/skbuff.h
> > +++ b/include/linux/skbuff.h
> > @@ -1134,12 +1134,14 @@ static inline int skb_pagelen(const struct sk_buff *skb)
> > * Does not take any additional reference on the fragment.
> > */
> > static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
> > - struct page *page, int off, int size)
> > + struct page *page,
> > + struct skb_frag_destructor *destroy,
> > + int off, int size)
> > {
> > skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
> >
> > frag->page.p = page;
> > - frag->page.destructor = NULL;
> > + frag->page.destructor = destroy;
> > frag->page_offset = off;
> > frag->size = size;
> > }
>
> You could just rename this function to e.g.
> __skb_fill_fragile_page_desc() (or whatever name) add an inline
> wrapper calling it with destroy == NULL. This will avoid touching all
> those drivers which won't ever need this functionality.
I could call this variant __skb_frag_init (which I think better fits
into the pattern of the new functions) and leave the existing
__skb_fill_page_desc as a compat wrapper if that's preferred but I was
trying to avoid duplicating up constructors just for different sets of
defaults.
Ian.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: Linux 3.0 release
From: Francois Romieu @ 2011-07-22 21:26 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Ben Greear, Linus Torvalds, David, Tejun Heo,
Linux Kernel Mailing List, netdev
In-Reply-To: <20110722133220.0baf2199@nehalam.ftrdhcpuser.net>
Stephen Hemminger <shemminger@vyatta.com> :
> This a regression which probably began with
>
> commit e22bee782b3b00bd4534ae9b1c5fb2e8e6573c5c
> Author: Tejun Heo <tj@kernel.org>
> Date: Tue Jun 29 10:07:14 2010 +0200
>
> workqueue: implement concurrency managed dynamic worker pool
>
> Before that it was perfectly legal for link watch code to
> call schedule_delayed_work from IRQ. This should be allowable;
> the code to manage the worker pool should handle it.
I beg to differ: see Ben's first report
(http://lists.openwall.net/netdev/2011/05/04/183).
^^
One of the code path in the netif_carrier code leads it to try and disable
a late workqueue to reenable it immediately (mod_workqueue anyone ?):
netif_carrier_on
-> linkwatch_fire_event
-> linkwatch_schedule_work
-> cancel_delayed_work
-> del_timer_sync
The del_timer_sync has been here for ages. Afaiks it is not a new pool code
nor a schedule_delayed_work only problem.
--
Ueimor
^ permalink raw reply
* Re: [Bugme-new] [Bug 39742] New: 2.6.39.3 crash and hangs in 1-2 minutes with igb-RSS and L2TP PPTP services on the NAS server
From: Andrew Morton @ 2011-07-22 21:42 UTC (permalink / raw)
To: netdev; +Cc: bugme-daemon, cpulinker, Patrick McHardy
In-Reply-To: <bug-39742-10286@https.bugzilla.kernel.org/>
(switched to email. Please respond via emailed reply-to-all, not via the
bugzilla web interface).
On Fri, 22 Jul 2011 10:32:45 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=39742
>
> Summary: 2.6.39.3 crash and hangs in 1-2 minutes with igb-RSS
> and L2TP PPTP services on the NAS server
> Product: Networking
> Version: 2.5
> Kernel Version: 2.6.39.3
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: IPV4
> AssignedTo: shemminger@linux-foundation.org
> ReportedBy: cpulinker@yandex.ru
> Regression: No
>
>
> Created an attachment (id=66342)
> --> (https://bugzilla.kernel.org/attachment.cgi?id=66342)
> full trap log, dmesg, iptables, lsmod, ipset
>
> Hi!
> I set up the server with the new software. It must serves users with VPN
> connections (l2tp,pptp - kernel mode).
> As soon as I start the users it hangs. With latest drivers from Intel (igb) and
> the latest kernel (2.6.39.3)
> it hangs (rarely) or a kernel panic (most often) in 1-2 minutes,
> when users log on to the NAS server and starts to go traffic on VPN
> connections.
> I tried to turn off the incoming shaper on the ifb, disable, conntrack(-j
> NOTRACK in the RAW table),
> was trying to use only PPTP - the kernel still hangs or falls into a panic.
> Hardare is ASUS RS100 - Intel P4 Q6600, x86_64, 4GB RAM, SATA HDD, Intel 82576
> 2 ports (igb with enabled RSS)
> Main software:
> Kernel is 2.6.39 upped to the 2.6.39.3 by patch from
> ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/files/SRPMS/kernel-image-std-def-2.6.39-alt3.src.rpm
>
> iproute2 2.6.39
> ipset 4.4
> igb 3.1.16
> iptables 1.4.10
> git://accel-ppp.git.sourceforge.net/gitroot/accel-ppp/accel-ppp
>
> [ 6089.358502] BUG: unable to handle kernel NULL pointer dereference at
> (null)
> [ 6089.362482] IP: [<ffffffffa0264e24>] __nf_conntrack_confirm+0x2b4/0x480
> [nf_conntrack]
> [ 6089.362482] PGD 117822067 PUD 117823067 PMD 0
> [ 6089.362482] Oops: 0002 [#1] SMP
> [ 6089.362482] last sysfs file: /sys/devices/virtual/net/ppp6/uevent
> [ 6089.362482] CPU 1
> [ 6089.362482] Modules linked in: act_mirred act_skbedit cls_u32 sch_ingress
> arc4 ecb ppp_mppe l2tp_ppp l2tp_netlink l2tpd
> [ 6089.362482]
> [ 6089.362482] Pid: 0, comm: kworker/0:0 Not tainted 2.6.39-std-def-alt3 #1
> ASUS RS100-E4/PI2/P5M2-M/RS100-E4
> [ 6089.362482] RIP: 0010:[<ffffffffa0264e24>] [<ffffffffa0264e24>]
> __nf_conntrack_confirm+0x2b4/0x480 [nf_conntrack]
> [ 6089.362482] RSP: 0018:ffff88011fc83a80 EFLAGS: 00010202
> [ 6089.362482] RAX: 00000000000047cd RBX: ffff88011fc94620 RCX:
> 0000000000000000
> [ 6089.362482] RDX: 000000000000fa10 RSI: 00000000d00dd719 RDI:
> ffffffffa026f680
> [ 6089.362482] RBP: ffff88011fc83ac0 R08: 00000000e753847a R09:
> ffff880117f00000
> [ 6089.362482] R10: 0000000000004000 R11: 0000000000000001 R12:
> 0000000000000000
> [ 6089.362482] R13: ffff880116a95080 R14: ffffffff81a4e1c0 R15:
> 00000000000114d8
> [ 6089.362482] FS: 0000000000000000(0000) GS:ffff88011fc80000(0000)
> knlGS:0000000000000000
> [ 6089.362482] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> [ 6089.362482] CR2: 0000000000000000 CR3: 0000000117821000 CR4:
> 00000000000006e0
> [ 6089.362482] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
> 0000000000000000
> [ 6089.362482] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
> 0000000000000400
> [ 6089.362482] Process kworker/0:0 (pid: 0, threadinfo ffff880118ef6000, task
> ffff880118ef42c0)
> [ 6089.362482] Stack:
> [ 6089.362482] 000000007d09da80 0000400016bd4400 0000000116ea2000
> ffff880116a95080
> [ 6089.362482] 0000000000000001 ffff88011fc94620 0000000000000002
> ffff880116ea2000
> [ 6089.362482] ffff88011fc83b30 ffffffffa02b1dd8 ffff880116ea2000
> 0000000000000000
> [ 6089.362482] Call Trace:
> [ 6089.362482] <IRQ>
> [ 6089.362482] [<ffffffffa02b1dd8>] ipv4_confirm+0x188/0x1c0
> [nf_conntrack_ipv4]
> [ 6089.362482] [<ffffffff81382004>] nf_iterate+0x84/0xa0
> [ 6089.362482] [<ffffffff81389390>] ? ip_rcv_finish+0x390/0x390
> [ 6089.362482] [<ffffffff81382096>] nf_hook_slow+0x76/0x130
> [ 6089.362482] [<ffffffff81389390>] ? ip_rcv_finish+0x390/0x390
> [ 6089.362482] [<ffffffff813897d7>] ip_local_deliver+0x67/0x90
> [ 6089.362482] [<ffffffff81389135>] ip_rcv_finish+0x135/0x390
> [ 6089.362482] [<ffffffff81389a1c>] ip_rcv+0x21c/0x2e0
> [ 6089.362482] [<ffffffff81356f5a>] __netif_receive_skb+0x52a/0x690
> [ 6089.362482] [<ffffffff813572d0>] netif_receive_skb+0x60/0x90
> [ 6089.362482] [<ffffffff8124de9c>] ? is_swiotlb_buffer+0x3c/0x50
> [ 6089.362482] [<ffffffff81357440>] napi_skb_finish+0x50/0x70
> [ 6089.362482] [<ffffffff813579bd>] napi_gro_receive+0xbd/0xd0
> [ 6089.362482] [<ffffffffa012129b>] igb_poll+0x6fb/0xae0 [igb]
> [ 6089.362482] [<ffffffff8107fb61>] ? enqueue_hrtimer+0x31/0x80
> [ 6090.302391] [<ffffffff81357be5>] net_rx_action+0x135/0x270
> [ 6090.302391] [<ffffffff81062705>] __do_softirq+0xa5/0x1d0
> [ 6090.302391] [<ffffffff8141301c>] call_softirq+0x1c/0x30
> [ 6090.302391] [<ffffffff8100d355>] do_softirq+0x65/0xa0
> [ 6090.302391] [<ffffffff81062a96>] irq_exit+0x86/0xa0
> [ 6090.302391] [<ffffffff8100cf01>] do_IRQ+0x61/0xe0
> [ 6090.302391] [<ffffffff8140a593>] common_interrupt+0x13/0x13
> [ 6090.302391] <EOI>
> [ 6090.302391] [<ffffffff81012deb>] ? mwait_idle+0x9b/0x1d0
> [ 6090.302391] [<ffffffff8140de35>] ? atomic_notifier_call_chain+0x15/0x20
> [ 6090.302391] [<ffffffff8100a1e6>] cpu_idle+0x56/0xa0
> [ 6090.302391] [<ffffffff81403729>] start_secondary+0x197/0x19c
> [ 6090.302391] Code: ff 74 09 40 0f b6 ff 41 0f b7 0c 38 66 41 39 cc 0f 84 f1
> fe ff ff 48 8b 00 a8 01 0f 84 51 ff ff ff 4
>
^ permalink raw reply
* Re: [PATCH 10/13] net: add paged frag destructor to skb_fill_page_desc()
From: Michał Mirosław @ 2011-07-22 21:44 UTC (permalink / raw)
To: Ian Campbell
Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
David S. Miller, James E.J. Bottomley, Alexey Kuznetsov,
Pekka Savola (ipv6), James Morris, Hideaki YOSHIFUJI,
Patrick McHardy,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devel-s9riP+hp16TNLxjTenLetw@public.gmane.org
In-Reply-To: <1311368872.4027.76.camel-ztPmHsLffjjnO4AKDKe2m+kiAK3p4hvP@public.gmane.org>
W dniu 22 lipca 2011 23:07 użytkownik Ian Campbell
<Ian.Campbell-mvvWK6WmYclDPfheJLI6IQ@public.gmane.org> napisał:
> On Fri, 2011-07-22 at 20:58 +0100, Michał Mirosław wrote:
>> 2011/7/22 Ian Campbell <ian.campbell-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>:
>> > diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
>> > index 9818fe2..faee8d3 100644
>> > --- a/include/linux/skbuff.h
>> > +++ b/include/linux/skbuff.h
>> > @@ -1134,12 +1134,14 @@ static inline int skb_pagelen(const struct sk_buff *skb)
>> > * Does not take any additional reference on the fragment.
>> > */
>> > static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
>> > - struct page *page, int off, int size)
>> > + struct page *page,
>> > + struct skb_frag_destructor *destroy,
>> > + int off, int size)
>> > {
>> > skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
>> >
>> > frag->page.p = page;
>> > - frag->page.destructor = NULL;
>> > + frag->page.destructor = destroy;
>> > frag->page_offset = off;
>> > frag->size = size;
>> > }
>>
>> You could just rename this function to e.g.
>> __skb_fill_fragile_page_desc() (or whatever name) add an inline
>> wrapper calling it with destroy == NULL. This will avoid touching all
>> those drivers which won't ever need this functionality.
>
> I could call this variant __skb_frag_init (which I think better fits
> into the pattern of the new functions) and leave the existing
> __skb_fill_page_desc as a compat wrapper if that's preferred but I was
> trying to avoid duplicating up constructors just for different sets of
> defaults.
It's just Huffman coding: since most users need destroy = NULL, it's
good to have a wrapper for this case as it will then take less time to
write and understand the code (you won't need to think what is this
NULL for in all those places).
Best Regards,
Michał Mirosław
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" 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
* Hello
From: Lathrop Zachary @ 2011-07-22 21:23 UTC (permalink / raw)
Hello
I am Mr. John Galvan, I have a very urgent business proposal worth (15,500,000.00 Pounds Starlings) from private offshore bank (AIG Private Bank). Please email me at (mrjohngalvan8@yahoo.com.hk) for details.
Best Regards,
Mr. John Galvan
^ permalink raw reply
* Re: Linux 3.0 release
From: Stephen Hemminger @ 2011-07-22 22:09 UTC (permalink / raw)
To: Francois Romieu
Cc: Ben Greear, Linus Torvalds, David, Tejun Heo,
Linux Kernel Mailing List, netdev
In-Reply-To: <20110722212629.GA10833@electric-eye.fr.zoreil.com>
On Fri, 22 Jul 2011 23:26:29 +0200
Francois Romieu <romieu@fr.zoreil.com> wrote:
> Stephen Hemminger <shemminger@vyatta.com> :
> > This a regression which probably began with
> >
> > commit e22bee782b3b00bd4534ae9b1c5fb2e8e6573c5c
> > Author: Tejun Heo <tj@kernel.org>
> > Date: Tue Jun 29 10:07:14 2010 +0200
> >
> > workqueue: implement concurrency managed dynamic worker pool
> >
> > Before that it was perfectly legal for link watch code to
> > call schedule_delayed_work from IRQ. This should be allowable;
> > the code to manage the worker pool should handle it.
>
> I beg to differ: see Ben's first report
> (http://lists.openwall.net/netdev/2011/05/04/183).
> ^^
>
> One of the code path in the netif_carrier code leads it to try and disable
> a late workqueue to reenable it immediately (mod_workqueue anyone ?):
> netif_carrier_on
> -> linkwatch_fire_event
> -> linkwatch_schedule_work
> -> cancel_delayed_work
> -> del_timer_sync
>
> The del_timer_sync has been here for ages. Afaiks it is not a new pool code
> nor a schedule_delayed_work only problem.
>
That path can be fixed by calling _cancel_delayed_work() instead.
^ permalink raw reply
* pull request: wireless-next-2.6 2011-07-22
From: John W. Linville @ 2011-07-22 22:23 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev, linux-kernel
Dave,
Here is the last big pull request of new wireless bits intended
for 3.1. This includes the usual big batch of updates to iwlagn,
a number of updates to ath9k, mwifiex, carl9170, libertas, and other
drivers, and soem updates to mac80211 and cfg80211 from Johannes.
The most noteworth bits are most of the final push from Rafał for
supporting current Broadcom wireless hardware in b43.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 415b3334a21aa67806c52d1acf4e72e14f7f402f:
icmp: Fix regression in nexthop resolution during replies. (2011-07-22 06:22:10 -0700)
are available in the git repository at:
ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6.git for-davem
Amitkumar Karwar (3):
mwifiex: put multicast/broadcast packets to the same RA
mwifiex: check SDIO multi-port aggregation buffer room correctly
mwifiex: disable auto deep sleep before unloading the driver
Andy Shevchenko (3):
wireless: rtlwifi: throw away MAC_FMT and use %pM instead
wireless: ath9k: use %pM to print MAC
wireless: mwifiex: print hw address via %pM
Bing Zhao (1):
MAINTAINERS: add entry for Marvell mwifiex wireless driver
Christian Lamparter (3):
carl9170 firmware: update firmware headers
carl9170: move beacon_update into tx.c
carl9170: set beacon xmit power to the max
Daniel Drake (2):
libertas: mesh: misc cleanup
libertas: only enable mesh when interface is active
Eliad Peller (3):
mac80211: reconfigure tx on device reconfiguration
cfg80211: enter psm when working as p2p_cli
mac80211: check sta_info_get() return value
Emmanuel Grumbach (21):
iwlagn: move Tx datapath to transport layer
iwlagn: move the tasklet / irq to the transport layer
iwlagn: move sync_irq to transport layer
iwlagn: move the Rx dispatching to the upper layer
iwlagn: add comment to tx and get_tx_cmd in iwl_trans_ops
iwlagn: move rx transport functions to iwl-trans-rx-pcie.c
iwlagn: move tx transport functions to iwl-trans-tx-pcie.c
iwlagn: move iwlagn_stop_device to transport layer
iwlagn: move all the ICT related functions to iwl-trans-rx-pcie.c
iwlagn: add tx start API to transport layer
iwlagn: add kick_nic API to transport layer
iwlagn: kill iwlagn_rx_handler_setup
iwlagn: kill iwlagn_setup_deferred_work
iwlagn: SCD configuration for AMPDU moves to transport layer
iwlagn: move more functions from the start flow to the transport layer
iwlagn: move iwl_prepare_card_hw to the transport layer
iwlagn: transport layer receives struct iwl_trans*
iwlagn: simplify the bus architecture
iwlagn: iwl_bus holds drv_data as void * instead of iwl_priv
iwlagn: add comment to warn about WoWLAN in resume / suspend flows
iwlagn: probe would crash with DEBUG_SHIRQ
Felix Fietkau (2):
ath9k: improve reliability of MIC error detection
ath9k_hw: validate and fix broken eeprom chainmask settings
Fry, Donald H (1):
iwlagn: remove indirection for iwlagn_hw_valid_rtc_data_addr
Hsu, Kenny (1):
iwlagn: set default of uCode ownership to driver
Joe Perches (1):
rtlwifi: Convert printks to pr_<level>
Johannes Berg (15):
nl80211: advertise GTK rekey support, new triggers
mac80211: allow driver access to TKIP RX P1K
mac80211: let key iteration get keys in install order
mac80211: be more careful in suspend/resume
iwlagn: simplify TX flags assignments
cfg80211: allow userspace to control supported rates in scan
mac80211: implement scan supported rates
mac80211: sync driver before TX
cfg80211: fix scan crash on single-band cards
iwlagn: remove keyinfo cache
iwlagn: remove forgotten debugfs function
iwlagn: rewrite HW crypto
iwlagn: implement WoWLAN
iwlagn: track beacon interval sent to device
iwlagn: rename iwlagn_set_dynamic_key
John W. Linville (2):
bcma: fix 'SSB_PCICORE_BFL_NOPCI' undeclared build breakage
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
Kalle Valo (1):
ieee80211: add few wmm tspec values
Luciano Coelho (3):
nl80211/cfg80211: add max_sched_scan_ssids in the hw description
nl80211/cfg80211: add max_sched_scan_ie_len in the hw description
MAINTAINERS: change maintainer of the wl1251 driver
Pavel Roskin (11):
orinoco: minor fixes for problems found by checkpatch.pl
carl9170: fix formatting issues found by checkpatch
ath: use get_unaligned_le{16,32} in ath_hw_keysetmac()
ath9k: use get_unaligned_{b16, le16, le32} where possible
ath9k: remove defines in reg.h that exist in ../reg.h
ath9k: use ath_opmode_to_string()
ath5k: merge ath5k_hw and ath5k_softc
carl9170: fix sparse warnings enabled by CONFIG_SPARSE_RCU_POINTER
ath5k: merge ath5k_{init, deinit}_hw() with their thin wrappers
ath5k: remove ath5k_hw_get_capability(), don't use VEOL on AR5210
ath5k: use get_unaligned_le32() in ath5k_write_pwr_to_pdadc_table()
Rafał Miłecki (25):
ssb: SPROM: add LED duty cycle fields
bcma: cc: set GPIOTIMER register
bcma: extract SPROM rev 9 the same way as rev 8
b43: bus: drop inline from SSB functions
b43: use agent R/W ops for BCMA_IOCTL
b43: HT-PHY: switch to channel after enabling radio
b43: HT-PHY: find channel entry with regs data
b43: HT-PHY: fix typo in 0x2059 radio init
bcma: handle alternative SPROM location
bcma: define IO status register
b43: bcma: define 80211 core specific IO status bits
b43: bcma: read info about supported bands
b43: HT-PHY: fix masks in radio ctl
b43: correctly display longer chipsets ids
bcma: move define of BCMA_CLKCTLST register
bcma: trivial: add helpers for masking/setting
bcma: allow setting FAST clockmode for a core
bcma: allow enabling PLL
b43: bcma: implement full core reset
b43: disable parity check on BCMA devices
ssb: return correct translation bit for 64-bit DMA
bcma: inform drivers about translation bits needed for the core
b43: bcma: get DMA translation bits
b43: (un)initialize driver on the BCMA bus
b43legacy: dma: cache translation (routing bits)
Rajkumar Manoharan (2):
ath9k: Fix sparse warnings
ath9k: Fix some smatch warnings
Wey-Yi Guy (13):
iwlagn: remove un-necessary file
iwlagn: remove dual-indirect call to simply the code
iwlagn: another double indirect removed
iwlagn: comments for iwl_cfg
iwlagn: calibration bitmap
iwlagn: set correct calibration flag
iwlagn: remove legacy calibration command
iwlagn: define valid init calibration mask
iwlagn: radio sensor offset in le16 format
iwlagn: testmode fixed rate available for testmode only
iwlagn: remove un-necessary "_agn"
iwlagn: write iq invert register for 105/135 device
iwlagn: remove "disable otp refresh" W/A
Yogesh Ashok Powar (1):
mwl8k: Fixing sta dereference when ieee80211_tx_info->control.sta is NULL
MAINTAINERS | 10 +-
drivers/bcma/core.c | 72 ++
drivers/bcma/driver_chipcommon.c | 14 +
drivers/bcma/driver_pci.c | 2 +
drivers/bcma/sprom.c | 14 +-
drivers/net/wireless/ath/ath5k/ahb.c | 44 +-
drivers/net/wireless/ath/ath5k/ani.c | 84 +-
drivers/net/wireless/ath/ath5k/ath5k.h | 272 ++++-
drivers/net/wireless/ath/ath5k/attach.c | 31 +-
drivers/net/wireless/ath/ath5k/base.c | 1138 ++++++++---------
drivers/net/wireless/ath/ath5k/base.h | 205 +---
drivers/net/wireless/ath/ath5k/caps.c | 45 -
drivers/net/wireless/ath/ath5k/debug.c | 218 ++--
drivers/net/wireless/ath/ath5k/debug.h | 21 +-
drivers/net/wireless/ath/ath5k/desc.c | 10 +-
drivers/net/wireless/ath/ath5k/dma.c | 12 +-
drivers/net/wireless/ath/ath5k/eeprom.c | 4 +-
drivers/net/wireless/ath/ath5k/initvals.c | 2 +-
drivers/net/wireless/ath/ath5k/led.c | 68 +-
drivers/net/wireless/ath/ath5k/mac80211-ops.c | 257 ++--
drivers/net/wireless/ath/ath5k/pci.c | 38 +-
drivers/net/wireless/ath/ath5k/pcu.c | 24 +-
drivers/net/wireless/ath/ath5k/phy.c | 41 +-
drivers/net/wireless/ath/ath5k/qcu.c | 9 +-
drivers/net/wireless/ath/ath5k/reset.c | 44 +-
drivers/net/wireless/ath/ath5k/rfkill.c | 65 +-
drivers/net/wireless/ath/ath5k/sysfs.c | 32 +-
drivers/net/wireless/ath/ath5k/trace.h | 12 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 12 +-
drivers/net/wireless/ath/ath9k/btcoex.c | 8 +-
drivers/net/wireless/ath/ath9k/debug.c | 22 +-
drivers/net/wireless/ath/ath9k/eeprom_4k.c | 12 +-
drivers/net/wireless/ath/ath9k/eeprom_9287.c | 12 +-
drivers/net/wireless/ath/ath9k/eeprom_def.c | 12 +-
drivers/net/wireless/ath/ath9k/hif_usb.c | 9 +-
drivers/net/wireless/ath/ath9k/htc_drv_debug.c | 7 +-
drivers/net/wireless/ath/ath9k/hw.c | 22 +
drivers/net/wireless/ath/ath9k/init.c | 25 +-
drivers/net/wireless/ath/ath9k/recv.c | 53 +-
drivers/net/wireless/ath/ath9k/reg.h | 23 -
drivers/net/wireless/ath/ath9k/xmit.c | 4 +
drivers/net/wireless/ath/carl9170/carl9170.h | 10 +-
drivers/net/wireless/ath/carl9170/cmd.h | 4 +-
drivers/net/wireless/ath/carl9170/debug.c | 2 +-
drivers/net/wireless/ath/carl9170/fwdesc.h | 3 +
drivers/net/wireless/ath/carl9170/hw.h | 41 +-
drivers/net/wireless/ath/carl9170/led.c | 2 +-
drivers/net/wireless/ath/carl9170/mac.c | 129 --
drivers/net/wireless/ath/carl9170/main.c | 2 +-
drivers/net/wireless/ath/carl9170/phy.c | 6 +-
drivers/net/wireless/ath/carl9170/tx.c | 290 ++++-
drivers/net/wireless/ath/key.c | 7 +-
drivers/net/wireless/b43/b43.h | 7 +
drivers/net/wireless/b43/bus.c | 27 +-
drivers/net/wireless/b43/dma.c | 27 +-
drivers/net/wireless/b43/dma.h | 4 +
drivers/net/wireless/b43/main.c | 106 ++-
drivers/net/wireless/b43/phy_ht.c | 21 +-
drivers/net/wireless/b43/phy_n.c | 4 +-
drivers/net/wireless/b43/radio_2059.c | 9 +
drivers/net/wireless/b43legacy/b43legacy.h | 2 +
drivers/net/wireless/b43legacy/dma.c | 7 +-
drivers/net/wireless/iwlwifi/Makefile | 8 +-
drivers/net/wireless/iwlwifi/iwl-1000.c | 11 +-
drivers/net/wireless/iwlwifi/iwl-2000.c | 46 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 22 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 58 +-
drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 65 +-
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 210 ----
drivers/net/wireless/iwlwifi/iwl-agn-ict.c | 306 -----
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 504 +-------
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 8 +-
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 115 ++-
drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 380 +++----
drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 411 +------
drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | 179 +---
drivers/net/wireless/iwlwifi/iwl-agn.c | 1234 ++++++++++---------
drivers/net/wireless/iwlwifi/iwl-agn.h | 65 +-
.../net/wireless/iwlwifi/{iwl-pci.h => iwl-bus.h} | 70 +
drivers/net/wireless/iwlwifi/iwl-commands.h | 180 +++-
drivers/net/wireless/iwlwifi/iwl-core.c | 28 +-
drivers/net/wireless/iwlwifi/iwl-core.h | 64 +-
drivers/net/wireless/iwlwifi/iwl-csr.h | 1 +
drivers/net/wireless/iwlwifi/iwl-debug.h | 10 +-
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 87 +-
drivers/net/wireless/iwlwifi/iwl-dev.h | 197 +--
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 10 +-
drivers/net/wireless/iwlwifi/iwl-hcmd.c | 271 ----
drivers/net/wireless/iwlwifi/iwl-io.h | 7 +-
drivers/net/wireless/iwlwifi/iwl-led.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-pci.c | 101 +-
drivers/net/wireless/iwlwifi/iwl-power.c | 8 +-
drivers/net/wireless/iwlwifi/iwl-prph.h | 82 +-
drivers/net/wireless/iwlwifi/iwl-rx.c | 212 +---
drivers/net/wireless/iwlwifi/iwl-scan.c | 8 +-
drivers/net/wireless/iwlwifi/iwl-sta.c | 8 +-
drivers/net/wireless/iwlwifi/iwl-sta.h | 5 +-
drivers/net/wireless/iwlwifi/iwl-sv-open.c | 10 +-
drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h | 82 ++
drivers/net/wireless/iwlwifi/iwl-trans-rx-pcie.c | 979 +++++++++++++++
.../iwlwifi/{iwl-tx.c => iwl-trans-tx-pcie.c} | 484 +++++++-
drivers/net/wireless/iwlwifi/iwl-trans.c | 643 +++++++++-
drivers/net/wireless/iwlwifi/iwl-trans.h | 154 ++-
drivers/net/wireless/libertas/dev.h | 2 -
drivers/net/wireless/libertas/main.c | 2 +-
drivers/net/wireless/libertas/mesh.c | 1320 +++++++++-----------
drivers/net/wireless/libertas/mesh.h | 31 -
drivers/net/wireless/libertas/tx.c | 2 +-
drivers/net/wireless/mwifiex/debugfs.c | 33 +-
drivers/net/wireless/mwifiex/ioctl.h | 1 +
drivers/net/wireless/mwifiex/main.h | 1 +
drivers/net/wireless/mwifiex/sdio.c | 5 +-
drivers/net/wireless/mwifiex/sta_ioctl.c | 14 +
drivers/net/wireless/mwifiex/wmm.c | 2 +
drivers/net/wireless/mwl8k.c | 6 +-
drivers/net/wireless/orinoco/airport.c | 9 +-
drivers/net/wireless/orinoco/cfg.c | 6 +-
drivers/net/wireless/orinoco/fw.c | 7 +-
drivers/net/wireless/orinoco/fw.h | 2 +-
drivers/net/wireless/orinoco/hermes.c | 40 +-
drivers/net/wireless/orinoco/hermes.h | 37 +-
drivers/net/wireless/orinoco/hermes_dld.c | 8 +-
drivers/net/wireless/orinoco/hermes_dld.h | 12 +-
drivers/net/wireless/orinoco/hw.c | 48 +-
drivers/net/wireless/orinoco/hw.h | 2 +-
drivers/net/wireless/orinoco/main.c | 46 +-
drivers/net/wireless/orinoco/mic.c | 8 +-
drivers/net/wireless/orinoco/orinoco.h | 16 +-
drivers/net/wireless/orinoco/orinoco_cs.c | 6 +-
drivers/net/wireless/orinoco/orinoco_nortel.c | 3 +-
drivers/net/wireless/orinoco/orinoco_pci.c | 4 +-
drivers/net/wireless/orinoco/orinoco_plx.c | 6 +-
drivers/net/wireless/orinoco/orinoco_tmd.c | 2 +-
drivers/net/wireless/orinoco/orinoco_usb.c | 23 +-
drivers/net/wireless/orinoco/spectrum_cs.c | 10 +-
drivers/net/wireless/orinoco/wext.c | 14 +-
drivers/net/wireless/rtlwifi/base.c | 20 +-
drivers/net/wireless/rtlwifi/cam.c | 8 +-
drivers/net/wireless/rtlwifi/core.c | 6 +-
drivers/net/wireless/rtlwifi/debug.h | 5 -
drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | 5 +-
drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 69 +-
drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 11 +-
drivers/net/wireless/rtlwifi/rtl8192de/hw.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192de/sw.c | 8 +-
drivers/net/wireless/rtlwifi/rtl8192se/hw.c | 12 +-
drivers/net/wireless/rtlwifi/rtl8192se/phy.c | 5 +-
drivers/net/wireless/rtlwifi/rtl8192se/rf.c | 4 +-
drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 6 +-
drivers/net/wireless/rtlwifi/usb.c | 12 +-
drivers/ssb/main.c | 5 +-
include/linux/bcma/bcma.h | 21 +
include/linux/bcma/bcma_driver_chipcommon.h | 13 +-
include/linux/bcma/bcma_regs.h | 27 +-
include/linux/ieee80211.h | 37 +
include/linux/nl80211.h | 33 +-
include/linux/ssb/ssb.h | 2 +
include/net/cfg80211.h | 33 +-
include/net/mac80211.h | 60 +
net/mac80211/agg-rx.c | 10 +-
net/mac80211/cfg.c | 4 +
net/mac80211/driver-ops.h | 31 +
net/mac80211/driver-trace.h | 43 +
net/mac80211/ieee80211_i.h | 7 +-
net/mac80211/key.c | 2 +-
net/mac80211/mlme.c | 30 +-
net/mac80211/pm.c | 3 +
net/mac80211/scan.c | 6 +-
net/mac80211/tkip.c | 11 +
net/mac80211/util.c | 71 +-
net/mac80211/work.c | 28 +-
net/wireless/core.c | 7 +-
net/wireless/core.h | 4 +
net/wireless/nl80211.c | 109 ++-
net/wireless/scan.c | 4 +
net/wireless/util.c | 38 +
177 files changed, 7327 insertions(+), 6261 deletions(-)
delete mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
delete mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-ict.c
rename drivers/net/wireless/iwlwifi/{iwl-pci.h => iwl-bus.h} (61%)
delete mode 100644 drivers/net/wireless/iwlwifi/iwl-hcmd.c
create mode 100644 drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h
create mode 100644 drivers/net/wireless/iwlwifi/iwl-trans-rx-pcie.c
rename drivers/net/wireless/iwlwifi/{iwl-tx.c => iwl-trans-tx-pcie.c} (53%)
Omnibus patch is available here:
http://www.kernel.org/pub/linux/kernel/people/linville/wireless-next-2.6-2011-07-22.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] net: allow netif_carrier to be called safely from IRQ
From: Stephen Hemminger @ 2011-07-22 22:53 UTC (permalink / raw)
To: David Miller
Cc: Francois Romieu, Ben Greear, Linus Torvalds, David, Tejun Heo,
Linux Kernel Mailing List, netdev
In-Reply-To: <20110722150956.5b341488@nehalam.ftrdhcpuser.net>
As reported by Ben Greer and Froncois Romieu. The code path in
the netif_carrier code leads it to try and disable
a late workqueue to reenable it immediately
netif_carrier_on
-> linkwatch_fire_event
-> linkwatch_schedule_work
-> cancel_delayed_work
-> del_timer_sync
If __cancel_delayed_work is used instead then there is no
problem of waiting for running linkwatch_event.
There is a race between linkwatch_event running re-scheduling
but it is harmless to schedule an extra scan of the linkwatch queue.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
--- a/net/core/link_watch.c 2011-07-22 15:25:31.027533604 -0700
+++ b/net/core/link_watch.c 2011-07-22 15:31:27.531520028 -0700
@@ -126,7 +126,7 @@ static void linkwatch_schedule_work(int
return;
/* It's already running which is good enough. */
- if (!cancel_delayed_work(&linkwatch_work))
+ if (!__cancel_delayed_work(&linkwatch_work))
return;
/* Otherwise we reschedule it again for immediate execution. */
^ permalink raw reply
* Re: [PATCH] sbni: use pci_dev->subsystem_device
From: David Miller @ 2011-07-23 0:15 UTC (permalink / raw)
To: sshtylyov; +Cc: netdev
In-Reply-To: <201107221950.25960.sshtylyov@ru.mvista.com>
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Fri, 22 Jul 2011 19:50:25 +0400
> The driver reads PCI subsystem ID from the PCI configuration register while it's
> already stored by the PCI subsystem in the 'subsystem_device' field of 'struct
> pci_dev'...
>
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Applied.
^ permalink raw reply
* Re: [PATCH] r8169: use pci_dev->subsystem_{vendor|device}
From: David Miller @ 2011-07-23 0:15 UTC (permalink / raw)
To: sshtylyov; +Cc: netdev, nic_swsd, romieu
In-Reply-To: <201107221937.24383.sshtylyov@ru.mvista.com>
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Fri, 22 Jul 2011 19:37:24 +0400
> The driver reads PCI subsystem IDs from the PCI configuration registers while
> they are already stored by the PCI subsystem in the 'subsystem_{vendor|device}'
> fields of 'struct pci_dev'...
>
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Applied.
^ permalink raw reply
* Re: [PATCH 0/5] bridge patchs
From: David Miller @ 2011-07-23 0:15 UTC (permalink / raw)
To: shemminger; +Cc: davem, netdev
In-Reply-To: <20110722174705.144993799@vyatta.com>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Fri, 22 Jul 2011 10:47:05 -0700
> Bridge patches. These are order by urgency from important to trivial.
All applied.
^ 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