117 lines
2.9 KiB
C
Executable File
117 lines
2.9 KiB
C
Executable File
#ifndef _NVT_BUS_H_
|
|
#define _NVT_BUS_H_
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/skbuff.h>
|
|
#include <linux/netdevice.h>
|
|
|
|
#include "nvt_diag.h"
|
|
#include "nvt_bus_usbif.h"
|
|
#include "nvt_bus_sdioif.h"
|
|
#include "nvt_bus_mailboxif.h"
|
|
|
|
|
|
/**
|
|
*@NVT_BUS_STATE_DOWN: bus is not ready for transfering
|
|
*@NVT_BUS_STATE_UP: bus is ready for transfering
|
|
*
|
|
*/
|
|
enum nvt_bus_state {
|
|
NVT_BUS_STATE_DOWN,
|
|
NVT_BUS_STATE_UP,
|
|
};
|
|
|
|
struct _nvt_bus;
|
|
|
|
struct _nvt_wdev_bus_ops {
|
|
s32 (*init)(struct _nvt_bus *);
|
|
s32 (*stop)(struct _nvt_bus *);
|
|
s32 (*tx_data)(struct _nvt_bus *, struct sk_buff *);
|
|
s32 (*tx_ctrl)(struct _nvt_bus *, u8 *data, u32 data_len);
|
|
s32 (*rx_ctrl)(struct _nvt_bus *, u8 *data, u32 data_len);
|
|
s32 (*suspend)(struct _nvt_bus *);
|
|
s32 (*resume)(struct _nvt_bus *);
|
|
|
|
};
|
|
|
|
struct _nvt_bus_statistic {
|
|
u64 pkt_tx_cnt;
|
|
u64 pkt_rx_cnt;
|
|
u64 pkt_tx_err_cnt;
|
|
u64 pkt_rx_err_cnt;
|
|
|
|
u64 ctl_tx_cnt;
|
|
u64 ctl_rx_cnt;
|
|
u64 ctl_tx_err_cnt;
|
|
u64 ctl_rx_err_cnt;
|
|
};
|
|
|
|
#ifdef BUS_UTILIZATION
|
|
enum nvt_bus_utilization_tx_mode {
|
|
NVT_BUS_BU_TX_VARIABLE_LEN = 0,
|
|
NVT_BUS_BU_TX_ALL_ONE,
|
|
NVT_BUS_BU_TX_ALL_ZERO,
|
|
NVT_BUS_BU_TX_SEQ,
|
|
NVT_BUS_BU_TX_RANDOM,
|
|
NVT_BUS_BU_TX_MAX
|
|
};
|
|
|
|
struct _nvt_bus_utilization {
|
|
bool tx_enable;
|
|
bool rx_enable;
|
|
u32 tx_mode;
|
|
s32 tx_total_cnt;
|
|
s32 tx_runtime_cnt;
|
|
s32 rx_total_cnt;
|
|
s32 rx_runtime_cnt;
|
|
u64 start_time;
|
|
u64 end_time;
|
|
u64 total_pkt_size_in_byte;
|
|
};
|
|
#endif
|
|
|
|
struct _nvt_bus {
|
|
u32 chip;
|
|
u32 chip_rev;
|
|
union {
|
|
struct _nvt_wdev_usb *nvt_wdev_usb;
|
|
struct _nvt_wdev_sdio *nvt_wdev_sdio;
|
|
struct _nvt_wdev_mailbox wdev_mailbox;
|
|
} type;
|
|
struct _nvt_wdev_bus_ops nvt_wdev_bus_ops;
|
|
struct _nvt_diag nvt_diag;
|
|
struct device *dev;
|
|
struct _nvt_adapter *nvt_adapter;
|
|
enum nvt_bus_state state;
|
|
struct _nvt_bus_statistic statistic;
|
|
struct _nvt_icfg_pkt_buff *icfg_pkg_buff;
|
|
void (*tx_done_callback)(struct sk_buff *, s32 status_code);
|
|
s32 fw_rdy_completed;
|
|
wait_queue_head_t fw_rdy_wait;
|
|
|
|
#ifdef BUS_UTILIZATION
|
|
struct _nvt_bus_utilization *nvt_bu;
|
|
#endif
|
|
|
|
};
|
|
|
|
extern s32 nvt_bus_txdata(struct _nvt_bus *nvt_bus, struct sk_buff *skb);
|
|
extern struct _nvt_bus *nvt_bus_attach(struct device *,
|
|
struct _nvt_wdev_bus_ops);
|
|
extern s32 nvt_bus_detach(struct device *);
|
|
extern s32 nvt_bus_register_txdone_callback(struct _nvt_bus *nvt_bus,
|
|
void (*txdone_cb)(struct sk_buff *, s32 status_code));
|
|
|
|
#ifdef BUS_UTILIZATION
|
|
extern s32 nvt_bus_bu_tx_on(struct _nvt_bus *nvt_bus, bool on,
|
|
u32 pkt_cnt);
|
|
extern s32 nvt_bus_bu_rx_on(struct _nvt_bus *nvt_bus, bool on,
|
|
u32 pkt_cnt);
|
|
extern void nvt_bus_bu_show_result(struct _nvt_bus *nvt_bus, bool is_tx);
|
|
|
|
#endif
|
|
|
|
|
|
#endif
|
|
|