blob: 2f4c1ec503929169df2f2125f632f13c54b698f0 [file] [log] [blame]
Dan Williams14e865b2007-12-10 15:11:23 -05001/* Copyright (C) 2007, Red Hat, Inc. */
2
3#ifndef _LBS_CMD_H_
4#define _LBS_CMD_H_
5
6#include "hostcmd.h"
7#include "dev.h"
8
David Woodhouse689442d2007-12-12 16:00:42 -05009#define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg) \
10 __lbs_cmd(priv, cmdnr, &(cmd)->hdr, sizeof(*(cmd)), cb, cb_arg)
Dan Williams14e865b2007-12-10 15:11:23 -050011
David Woodhouse689442d2007-12-12 16:00:42 -050012#define lbs_cmd_with_response(priv, cmdnr, cmd) \
13 lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd))
David Woodhouse7e226272007-12-14 22:53:41 -050014
David Woodhouse3399ea52007-12-15 03:09:33 -050015/* __lbs_cmd() will free the cmdnode and return success/failure.
16 __lbs_cmd_async() requires that the callback free the cmdnode */
17struct cmd_ctrl_node *__lbs_cmd_async(struct lbs_private *priv, uint16_t command,
18 struct cmd_header *in_cmd, int in_cmd_size,
19 int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
20 unsigned long callback_arg);
Dan Williams7ad994d2007-12-11 12:33:30 -050021int __lbs_cmd(struct lbs_private *priv, uint16_t command,
David Woodhouse7e226272007-12-14 22:53:41 -050022 struct cmd_header *in_cmd, int in_cmd_size,
Dan Williams7ad994d2007-12-11 12:33:30 -050023 int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
Dan Williams14e865b2007-12-10 15:11:23 -050024 unsigned long callback_arg);
25
Dan Williamsa8bdcd72007-12-11 12:40:35 -050026int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
27 struct cmd_header *resp);
28
Dan Williams6e66f032007-12-11 12:42:16 -050029int lbs_update_hw_spec(struct lbs_private *priv);
30
David Woodhouse301eacb2007-12-11 15:23:59 -050031int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
32 struct cmd_ds_mesh_access *cmd);
33
Dan Williams8e3c91b2007-12-11 15:50:59 -050034int lbs_get_data_rate(struct lbs_private *priv);
35int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
36
Dan Williams2dd4b262007-12-11 16:54:15 -050037int lbs_get_channel(struct lbs_private *priv);
38int lbs_set_channel(struct lbs_private *priv, u8 channel);
39
David Woodhouse86062132007-12-13 00:32:36 -050040int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan);
David Woodhouse23a397a2007-12-11 18:56:42 -050041
David Woodhouse506e9022007-12-12 20:06:06 -050042int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria);
David Woodhouseab25eca2007-12-12 17:38:56 -050043int lbs_suspend(struct lbs_private *priv);
44int lbs_resume(struct lbs_private *priv);
David Woodhouse6ce4fd22007-12-12 15:19:29 -050045
Dan Williams14e865b2007-12-10 15:11:23 -050046#endif /* _LBS_CMD_H */