18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */ 28c2ecf20Sopenharmony_ci/* Copyright (c) 2015-2016 Quantenna Communications. All rights reserved. */ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#ifndef _QTN_FMAC_TRANS_H_ 58c2ecf20Sopenharmony_ci#define _QTN_FMAC_TRANS_H_ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <linux/kernel.h> 88c2ecf20Sopenharmony_ci#include <linux/module.h> 98c2ecf20Sopenharmony_ci#include <linux/skbuff.h> 108c2ecf20Sopenharmony_ci#include <linux/mutex.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include "qlink.h" 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define QTNF_CMD_FLAG_RESP_REQ BIT(0) 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#define QTNF_MAX_CMD_BUF_SIZE 2048 178c2ecf20Sopenharmony_ci#define QTNF_DEF_CMD_HROOM 4 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_cistruct qtnf_bus; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_cistruct qtnf_cmd_ctl_node { 228c2ecf20Sopenharmony_ci struct completion cmd_resp_completion; 238c2ecf20Sopenharmony_ci struct sk_buff *resp_skb; 248c2ecf20Sopenharmony_ci u16 seq_num; 258c2ecf20Sopenharmony_ci bool waiting_for_resp; 268c2ecf20Sopenharmony_ci spinlock_t resp_lock; /* lock for resp_skb & waiting_for_resp changes */ 278c2ecf20Sopenharmony_ci}; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistruct qtnf_qlink_transport { 308c2ecf20Sopenharmony_ci struct qtnf_cmd_ctl_node curr_cmd; 318c2ecf20Sopenharmony_ci struct sk_buff_head event_queue; 328c2ecf20Sopenharmony_ci size_t event_queue_max_len; 338c2ecf20Sopenharmony_ci}; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_civoid qtnf_trans_init(struct qtnf_bus *bus); 368c2ecf20Sopenharmony_civoid qtnf_trans_free(struct qtnf_bus *bus); 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciint qtnf_trans_send_next_cmd(struct qtnf_bus *bus); 398c2ecf20Sopenharmony_ciint qtnf_trans_handle_rx_ctl_packet(struct qtnf_bus *bus, struct sk_buff *skb); 408c2ecf20Sopenharmony_ciint qtnf_trans_send_cmd_with_resp(struct qtnf_bus *bus, 418c2ecf20Sopenharmony_ci struct sk_buff *cmd_skb, 428c2ecf20Sopenharmony_ci struct sk_buff **response_skb); 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci#endif /* _QTN_FMAC_TRANS_H_ */ 45