71 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2021 pureLiFi4 */5 6#ifndef PLFXLC_CHIP_H7#define PLFXLC_CHIP_H8 9#include <net/mac80211.h>10 11#include "usb.h"12 13enum unit_type {14 STA = 0,15 AP = 1,16};17 18enum {19 PLFXLC_RADIO_OFF = 0,20 PLFXLC_RADIO_ON = 1,21};22 23struct plfxlc_chip {24 struct plfxlc_usb usb;25 struct mutex mutex; /* lock to protect chip data */26 enum unit_type unit_type;27 u16 link_led;28 u8 beacon_set;29 u16 beacon_interval;30};31 32struct plfxlc_mc_hash {33 u32 low;34 u32 high;35};36 37#define plfxlc_chip_dev(chip) (&(chip)->usb.intf->dev)38 39void plfxlc_chip_init(struct plfxlc_chip *chip,40 struct ieee80211_hw *hw,41 struct usb_interface *intf);42 43void plfxlc_chip_release(struct plfxlc_chip *chip);44 45void plfxlc_chip_disable_rxtx(struct plfxlc_chip *chip);46 47int plfxlc_chip_init_hw(struct plfxlc_chip *chip);48 49int plfxlc_chip_enable_rxtx(struct plfxlc_chip *chip);50 51int plfxlc_chip_set_rate(struct plfxlc_chip *chip, u8 rate);52 53int plfxlc_set_beacon_interval(struct plfxlc_chip *chip, u16 interval,54 u8 dtim_period, int type);55 56int plfxlc_chip_switch_radio(struct plfxlc_chip *chip, u16 value);57 58static inline struct plfxlc_chip *plfxlc_usb_to_chip(struct plfxlc_usb59 *usb)60{61 return container_of(usb, struct plfxlc_chip, usb);62}63 64static inline void plfxlc_mc_add_all(struct plfxlc_mc_hash *hash)65{66 hash->low = 0xffffffff;67 hash->high = 0xffffffff;68}69 70#endif /* PLFXLC_CHIP_H */71