git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git]
/
drivers
/
net
/
iseries_veth.c
diff --git
a/drivers/net/iseries_veth.c
b/drivers/net/iseries_veth.c
index
41b1d08
..
2194b56
100644
(file)
--- a/
drivers/net/iseries_veth.c
+++ b/
drivers/net/iseries_veth.c
@@
-73,7
+73,7
@@
#include <asm/abs_addr.h>
#include <asm/iseries/mf.h>
#include <asm/uaccess.h>
#include <asm/abs_addr.h>
#include <asm/iseries/mf.h>
#include <asm/uaccess.h>
-
+#include <asm/firmware.h>
#include <asm/iseries/hv_lp_config.h>
#include <asm/iseries/hv_types.h>
#include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/hv_lp_config.h>
#include <asm/iseries/hv_types.h>
#include <asm/iseries/hv_lp_event.h>
@@
-166,7
+166,7
@@
struct veth_msg {
struct veth_lpar_connection {
HvLpIndex remote_lp;
struct veth_lpar_connection {
HvLpIndex remote_lp;
- struct
work_struct
statemachine_wq;
+ struct
delayed_work
statemachine_wq;
struct veth_msg *msgs;
int num_events;
struct veth_cap_data local_caps;
struct veth_msg *msgs;
int num_events;
struct veth_cap_data local_caps;
@@
-456,7
+456,7
@@
static struct kobj_type veth_port_ktype = {
static inline void veth_kick_statemachine(struct veth_lpar_connection *cnx)
{
static inline void veth_kick_statemachine(struct veth_lpar_connection *cnx)
{
- schedule_
work(&cnx->statemachine_wq
);
+ schedule_
delayed_work(&cnx->statemachine_wq, 0
);
}
static void veth_take_cap(struct veth_lpar_connection *cnx,
}
static void veth_take_cap(struct veth_lpar_connection *cnx,
@@
-586,7
+586,7
@@
static void veth_handle_int(struct veth_lpevent *event)
};
}
};
}
-static void veth_handle_event(struct HvLpEvent *event
, struct pt_regs *regs
)
+static void veth_handle_event(struct HvLpEvent *event)
{
struct veth_lpevent *veth_event = (struct veth_lpevent *)event;
{
struct veth_lpevent *veth_event = (struct veth_lpevent *)event;
@@
-638,9
+638,11
@@
static int veth_process_caps(struct veth_lpar_connection *cnx)
}
/* FIXME: The gotos here are a bit dubious */
}
/* FIXME: The gotos here are a bit dubious */
-static void veth_statemachine(
void *p
)
+static void veth_statemachine(
struct work_struct *work
)
{
{
- struct veth_lpar_connection *cnx = (struct veth_lpar_connection *)p;
+ struct veth_lpar_connection *cnx =
+ container_of(work, struct veth_lpar_connection,
+ statemachine_wq.work);
int rlp = cnx->remote_lp;
int rc;
int rlp = cnx->remote_lp;
int rc;
@@
-827,7
+829,7
@@
static int veth_init_connection(u8 rlp)
cnx->remote_lp = rlp;
spin_lock_init(&cnx->lock);
cnx->remote_lp = rlp;
spin_lock_init(&cnx->lock);
- INIT_
WORK(&cnx->statemachine_wq, veth_statemachine, cnx
);
+ INIT_
DELAYED_WORK(&cnx->statemachine_wq, veth_statemachine
);
init_timer(&cnx->ack_timer);
cnx->ack_timer.function = veth_timed_ack;
init_timer(&cnx->ack_timer);
cnx->ack_timer.function = veth_timed_ack;
@@
-1666,7
+1668,7
@@
static struct vio_driver veth_driver = {
* Module initialization/cleanup
*/
* Module initialization/cleanup
*/
-void __exit veth_module_cleanup(void)
+
static
void __exit veth_module_cleanup(void)
{
int i;
struct veth_lpar_connection *cnx;
{
int i;
struct veth_lpar_connection *cnx;
@@
-1695,11
+1697,14
@@
void __exit veth_module_cleanup(void)
}
module_exit(veth_module_cleanup);
}
module_exit(veth_module_cleanup);
-int __init veth_module_init(void)
+
static
int __init veth_module_init(void)
{
int i;
int rc;
{
int i;
int rc;
+ if (!firmware_has_feature(FW_FEATURE_ISERIES))
+ return -ENODEV;
+
this_lp = HvLpConfig_getLpIndex_outline();
for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) {
this_lp = HvLpConfig_getLpIndex_outline();
for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) {