Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a873342 authored by Hante Meuleman's avatar Hante Meuleman Committed by John W. Linville
Browse files

brcmfmac: add hostap supoort.



This patch adds support for host AP mode.

Reviewed-by: default avatarArend Van Spriel <arend@broadcom.com>
Reviewed-by: default avatarFranky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarHante Meuleman <meuleman@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 5db6e956
Loading
Loading
Loading
Loading
+29 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@
 * IO codes that are interpreted by dongle firmware
 * IO codes that are interpreted by dongle firmware
 ******************************************************************************/
 ******************************************************************************/
#define BRCMF_C_UP				2
#define BRCMF_C_UP				2
#define BRCMF_C_DOWN				3
#define BRCMF_C_SET_PROMISC			10
#define BRCMF_C_SET_PROMISC			10
#define BRCMF_C_GET_RATE			12
#define BRCMF_C_GET_RATE			12
#define BRCMF_C_GET_INFRA			19
#define BRCMF_C_GET_INFRA			19
@@ -50,7 +51,10 @@
#define BRCMF_C_REASSOC				53
#define BRCMF_C_REASSOC				53
#define BRCMF_C_SET_ROAM_TRIGGER		55
#define BRCMF_C_SET_ROAM_TRIGGER		55
#define BRCMF_C_SET_ROAM_DELTA			57
#define BRCMF_C_SET_ROAM_DELTA			57
#define BRCMF_C_GET_BCNPRD			75
#define BRCMF_C_SET_BCNPRD			76
#define BRCMF_C_GET_DTIMPRD			77
#define BRCMF_C_GET_DTIMPRD			77
#define BRCMF_C_SET_DTIMPRD			78
#define BRCMF_C_SET_COUNTRY			84
#define BRCMF_C_SET_COUNTRY			84
#define BRCMF_C_GET_PM				85
#define BRCMF_C_GET_PM				85
#define BRCMF_C_SET_PM				86
#define BRCMF_C_SET_PM				86
@@ -134,6 +138,9 @@


#define WLC_BSS_RSSI_ON_CHANNEL		0x0002
#define WLC_BSS_RSSI_ON_CHANNEL		0x0002


#define BRCMF_MAXRATES_IN_SET		16	/* max # of rates in rateset */
#define BRCMF_STA_ASSOC			0x10		/* Associated */

struct brcmf_event_msg {
struct brcmf_event_msg {
	__be16 version;
	__be16 version;
	__be16 flags;
	__be16 flags;
@@ -566,6 +573,28 @@ struct brcmf_channel_info_le {
	__le32 scan_channel;
	__le32 scan_channel;
};
};


struct brcmf_sta_info_le {
	__le16	ver;		/* version of this struct */
	__le16	len;		/* length in bytes of this structure */
	__le16	cap;		/* sta's advertised capabilities */
	__le32	flags;		/* flags defined below */
	__le32	idle;		/* time since data pkt rx'd from sta */
	u8	ea[ETH_ALEN];		/* Station address */
	__le32	count;			/* # rates in this set */
	u8	rates[BRCMF_MAXRATES_IN_SET];	/* rates in 500kbps units */
						/* w/hi bit set if basic */
	__le32	in;		/* seconds elapsed since associated */
	__le32	listen_interval_inms; /* Min Listen interval in ms for STA */
	__le32	tx_pkts;	/* # of packets transmitted */
	__le32	tx_failures;	/* # of packets failed */
	__le32	rx_ucast_pkts;	/* # of unicast packets received */
	__le32	rx_mcast_pkts;	/* # of multicast packets received */
	__le32	tx_rate;	/* Rate of last successful tx frame */
	__le32	rx_rate;	/* Rate of last successful rx frame */
	__le32	rx_decrypt_succeeds;	/* # of packet decrypted successfully */
	__le32	rx_decrypt_failures;	/* # of packet decrypted failed */
};

/* Bus independent dongle command */
/* Bus independent dongle command */
struct brcmf_dcmd {
struct brcmf_dcmd {
	uint cmd;		/* common dongle cmd definition */
	uint cmd;		/* common dongle cmd definition */
+916 −50

File changed.

Preview size limit exceeded, changes collapsed.

+17 −1
Original line number Original line Diff line number Diff line
@@ -125,6 +125,7 @@ do { \
#define WL_ESCAN_ACTION_ABORT		3
#define WL_ESCAN_ACTION_ABORT		3


#define WL_AUTH_SHARED_KEY		1	/* d11 shared authentication */
#define WL_AUTH_SHARED_KEY		1	/* d11 shared authentication */
#define IE_MAX_LEN			512


/* dongle status */
/* dongle status */
enum wl_status {
enum wl_status {
@@ -132,7 +133,9 @@ enum wl_status {
	WL_STATUS_SCANNING,
	WL_STATUS_SCANNING,
	WL_STATUS_SCAN_ABORTING,
	WL_STATUS_SCAN_ABORTING,
	WL_STATUS_CONNECTING,
	WL_STATUS_CONNECTING,
	WL_STATUS_CONNECTED
	WL_STATUS_CONNECTED,
	WL_STATUS_AP_CREATING,
	WL_STATUS_AP_CREATED
};
};


/* wi-fi mode */
/* wi-fi mode */
@@ -285,6 +288,17 @@ struct escan_info {
	struct net_device *ndev;
	struct net_device *ndev;
};
};


/* Structure to hold WPS, WPA IEs for a AP */
struct ap_info {
	u8 probe_res_ie[IE_MAX_LEN];
	u8 beacon_ie[IE_MAX_LEN];
	u32 probe_res_ie_len;
	u32 beacon_ie_len;
	u8 *wpa_ie;
	u8 *rsn_ie;
	bool security_mode;
};

/**
/**
 * struct brcmf_pno_param_le - PNO scan configuration parameters
 * struct brcmf_pno_param_le - PNO scan configuration parameters
 *
 *
@@ -407,6 +421,7 @@ struct brcmf_pno_scanresults_le {
 * @escan_timeout: Timer for catch scan timeout.
 * @escan_timeout: Timer for catch scan timeout.
 * @escan_timeout_work: scan timeout worker.
 * @escan_timeout_work: scan timeout worker.
 * @escan_ioctl_buf: dongle command buffer for escan commands.
 * @escan_ioctl_buf: dongle command buffer for escan commands.
 * @ap_info: host ap information.
 * @ci: used to link this structure to netdev private data.
 * @ci: used to link this structure to netdev private data.
 */
 */
struct brcmf_cfg80211_priv {
struct brcmf_cfg80211_priv {
@@ -448,6 +463,7 @@ struct brcmf_cfg80211_priv {
	struct timer_list escan_timeout;
	struct timer_list escan_timeout;
	struct work_struct escan_timeout_work;
	struct work_struct escan_timeout_work;
	u8 *escan_ioctl_buf;
	u8 *escan_ioctl_buf;
	struct ap_info *ap_info;
};
};


static inline struct wiphy *cfg_to_wiphy(struct brcmf_cfg80211_priv *w)
static inline struct wiphy *cfg_to_wiphy(struct brcmf_cfg80211_priv *w)