12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2021 pureLiFi
- */
- #ifndef PLFXLC_CHIP_H
- #define PLFXLC_CHIP_H
- #include <net/mac80211.h>
- #include "usb.h"
- enum unit_type {
- STA = 0,
- AP = 1,
- };
- enum {
- PLFXLC_RADIO_OFF = 0,
- PLFXLC_RADIO_ON = 1,
- };
- struct plfxlc_chip {
- struct plfxlc_usb usb;
- struct mutex mutex; /* lock to protect chip data */
- enum unit_type unit_type;
- u16 link_led;
- u8 beacon_set;
- u16 beacon_interval;
- };
- struct plfxlc_mc_hash {
- u32 low;
- u32 high;
- };
- #define plfxlc_chip_dev(chip) (&(chip)->usb.intf->dev)
- void plfxlc_chip_init(struct plfxlc_chip *chip,
- struct ieee80211_hw *hw,
- struct usb_interface *intf);
- void plfxlc_chip_release(struct plfxlc_chip *chip);
- void plfxlc_chip_disable_rxtx(struct plfxlc_chip *chip);
- int plfxlc_chip_init_hw(struct plfxlc_chip *chip);
- int plfxlc_chip_enable_rxtx(struct plfxlc_chip *chip);
- int plfxlc_chip_set_rate(struct plfxlc_chip *chip, u8 rate);
- int plfxlc_set_beacon_interval(struct plfxlc_chip *chip, u16 interval,
- u8 dtim_period, int type);
- int plfxlc_chip_switch_radio(struct plfxlc_chip *chip, u16 value);
- static inline struct plfxlc_chip *plfxlc_usb_to_chip(struct plfxlc_usb
- *usb)
- {
- return container_of(usb, struct plfxlc_chip, usb);
- }
- static inline void plfxlc_mc_add_all(struct plfxlc_mc_hash *hash)
- {
- hash->low = 0xffffffff;
- hash->high = 0xffffffff;
- }
- #endif /* PLFXLC_CHIP_H */
|