71 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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 */
 |