*/
void btmrvl_interrupt(struct btmrvl_private *priv)
{
- BT_DBG("Enter");
-
priv->adapter->ps_state = PS_AWAKE;
priv->adapter->wakeup_tries = 0;
priv->adapter->int_count++;
wake_up_interruptible(&priv->main_thread.wait_q);
-
- BT_DBG("Leave");
}
EXPORT_SYMBOL_GPL(btmrvl_interrupt);
struct hci_ev_cmd_complete *ec;
u16 opcode, ocf;
- BT_DBG("Enter");
-
if (hdr->evt == HCI_EV_CMD_COMPLETE) {
ec = (void *) (skb->data + HCI_EVENT_HDR_SIZE);
opcode = __le16_to_cpu(ec->opcode);
wake_up_interruptible(&priv->adapter->cmd_wait_q);
}
}
-
- BT_DBG("Leave");
}
EXPORT_SYMBOL_GPL(btmrvl_check_evtpkt);
struct btmrvl_event *event;
u8 ret = 0;
- BT_DBG("Enter");
-
event = (struct btmrvl_event *) skb->data;
if (event->ec != 0xff) {
BT_DBG("Not Marvell Event=%x", event->ec);
if (!ret)
kfree_skb(skb);
- BT_DBG("Leave");
-
return ret;
}
EXPORT_SYMBOL_GPL(btmrvl_process_event);
{
struct sk_buff *skb;
struct btmrvl_cmd *cmd;
- u8 ret = 0;
-
- BT_DBG("Enter");
+ int ret = 0;
skb = bt_skb_alloc(sizeof(*cmd), GFP_ATOMIC);
if (skb == NULL) {
BT_ERR("No free skb");
- ret = -ENOMEM;
- goto exit;
+ return -ENOMEM;
}
cmd = (struct btmrvl_cmd *) skb_put(skb, sizeof(*cmd));
BT_DBG("module cfg Command done");
-exit:
- BT_DBG("Leave");
-
return ret;
}
EXPORT_SYMBOL_GPL(btmrvl_send_module_cfg_cmd);
{
struct sk_buff *skb;
struct btmrvl_cmd *cmd;
- u8 ret = 0;
-
- BT_DBG("Enter");
+ int ret = 0;
skb = bt_skb_alloc(sizeof(*cmd), GFP_ATOMIC);
if (skb == NULL) {
BT_ERR("No free skb");
- ret = -ENOMEM;
- goto exit;
+ return -ENOMEM;
}
cmd = (struct btmrvl_cmd *) skb_put(skb, sizeof(*cmd));
priv->adapter->wakeup_tries);
}
-exit:
- BT_DBG("Leave");
-
return ret;
}
{
struct sk_buff *skb = NULL;
struct btmrvl_cmd *cmd;
- u8 ret = 0;
-
- BT_DBG("Enter");
+ int ret = 0;
if (priv->btmrvl_dev.hscfgcmd) {
priv->btmrvl_dev.hscfgcmd = 0;
skb = bt_skb_alloc(sizeof(*cmd), GFP_ATOMIC);
if (skb == NULL) {
BT_ERR("No free skb");
- ret = -ENOMEM;
- goto exit;
+ return -ENOMEM;
}
cmd = (struct btmrvl_cmd *) skb_put(skb, sizeof(*cmd));
skb = bt_skb_alloc(sizeof(*cmd), GFP_ATOMIC);
if (skb == NULL) {
BT_ERR("No free skb");
- ret = -ENOMEM;
- goto exit;
+ return -ENOMEM;
}
cmd = (struct btmrvl_cmd *) skb_put(skb, sizeof(*cmd));
}
}
-exit:
- BT_DBG("Leave");
-
return ret;
}
static int btmrvl_tx_pkt(struct btmrvl_private *priv, struct sk_buff *skb)
{
- u8 ret = 0;
+ int ret = 0;
- BT_DBG("Enter");
-
- if (!skb || !skb->data) {
- BT_DBG("Leave");
+ if (!skb || !skb->data)
return -EINVAL;
- }
if (!skb->len || ((skb->len + BTM_HEADER_LEN) > BTM_UPLD_SIZE)) {
BT_ERR("Tx Error: Bad skb length %d : %d",
skb->len, BTM_UPLD_SIZE);
- BT_DBG("Leave");
return -EINVAL;
}
BT_ERR("Tx Error: realloc_headroom failed %d",
BTM_HEADER_LEN);
skb = tmp;
- BT_DBG("Leave");
return -EINVAL;
}
if (priv->hw_host_to_card)
ret = priv->hw_host_to_card(priv, skb->data, skb->len);
- BT_DBG("Leave");
-
return ret;
}
static void btmrvl_init_adapter(struct btmrvl_private *priv)
{
- BT_DBG("Enter");
-
skb_queue_head_init(&priv->adapter->tx_queue);
priv->adapter->ps_state = PS_AWAKE;
init_waitqueue_head(&priv->adapter->cmd_wait_q);
-
- BT_DBG("Leave");
}
static void btmrvl_free_adapter(struct btmrvl_private *priv)
{
- BT_DBG("Enter");
-
skb_queue_purge(&priv->adapter->tx_queue);
kfree(priv->adapter);
priv->adapter = NULL;
-
- BT_DBG("Leave");
}
static int btmrvl_ioctl(struct hci_dev *hdev,
unsigned int cmd, unsigned long arg)
{
- BT_DBG("Enter");
-
- BT_DBG("Leave");
-
return -ENOIOCTLCMD;
}
static void btmrvl_destruct(struct hci_dev *hdev)
{
- BT_DBG("Enter");
-
- BT_DBG("Leave");
}
static int btmrvl_send_frame(struct sk_buff *skb)
struct hci_dev *hdev = (struct hci_dev *) skb->dev;
struct btmrvl_private *priv = NULL;
- BT_DBG("Enter: type=%d, len=%d", skb->pkt_type, skb->len);
+ BT_DBG("type=%d, len=%d", skb->pkt_type, skb->len);
if (!hdev || !hdev->driver_data) {
BT_ERR("Frame for unknown HCI device");
- BT_DBG("Leave");
return -ENODEV;
}
BT_ERR("Failed testing HCI_RUNING, flags=%lx", hdev->flags);
print_hex_dump_bytes("data: ", DUMP_PREFIX_OFFSET,
skb->data, skb->len);
- BT_DBG("Leave");
return -EBUSY;
}
wake_up_interruptible(&priv->main_thread.wait_q);
- BT_DBG("Leave");
-
return 0;
}
{
struct btmrvl_private *priv = hdev->driver_data;
- BT_DBG("Enter");
-
skb_queue_purge(&priv->adapter->tx_queue);
- BT_DBG("Leave");
-
return 0;
}
{
struct btmrvl_private *priv = hdev->driver_data;
- BT_DBG("Enter");
-
- if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) {
- BT_DBG("Leave");
+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
return 0;
- }
skb_queue_purge(&priv->adapter->tx_queue);
- BT_DBG("Leave");
-
return 0;
}
static int btmrvl_open(struct hci_dev *hdev)
{
- BT_DBG("Enter");
-
set_bit(HCI_RUNNING, &hdev->flags);
- BT_DBG("Leave");
-
return 0;
}
struct sk_buff *skb;
ulong flags;
- BT_DBG("Enter");
-
init_waitqueue_entry(&wait, current);
current->flags |= PF_NOFREEZE;
}
}
- BT_DBG("Leave");
-
return 0;
}
struct btmrvl_private *priv;
int ret;
- BT_DBG("Enter");
-
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
if (!priv) {
BT_ERR("Can not allocate priv");
btmrvl_debugfs_init(hdev);
#endif
- BT_DBG("Leave");
return priv;
err_hci_register_dev:
kfree(priv);
err_priv:
- BT_DBG("Leave");
-
return NULL;
}
EXPORT_SYMBOL_GPL(btmrvl_add_card);
{
struct hci_dev *hdev;
- BT_DBG("Enter");
-
hdev = priv->btmrvl_dev.hcidev;
wake_up_interruptible(&priv->adapter->cmd_wait_q);
kfree(priv);
- BT_DBG("Leave");
-
return 0;
}
EXPORT_SYMBOL_GPL(btmrvl_remove_card);