ks_hostif.h (16167B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Driver for KeyStream wireless LAN 4 * 5 * Copyright (c) 2005-2008 KeyStream Corp. 6 * Copyright (C) 2009 Renesas Technology Corp. 7 */ 8 9#ifndef _KS_HOSTIF_H_ 10#define _KS_HOSTIF_H_ 11 12#include <linux/compiler.h> 13#include <linux/ieee80211.h> 14 15/* 16 * HOST-MAC I/F events 17 */ 18#define HIF_DATA_REQ 0xE001 19#define HIF_DATA_IND 0xE801 20#define HIF_MIB_GET_REQ 0xE002 21#define HIF_MIB_GET_CONF 0xE802 22#define HIF_MIB_SET_REQ 0xE003 23#define HIF_MIB_SET_CONF 0xE803 24#define HIF_POWER_MGMT_REQ 0xE004 25#define HIF_POWER_MGMT_CONF 0xE804 26#define HIF_START_REQ 0xE005 27#define HIF_START_CONF 0xE805 28#define HIF_CONNECT_IND 0xE806 29#define HIF_STOP_REQ 0xE006 30#define HIF_STOP_CONF 0xE807 31#define HIF_PS_ADH_SET_REQ 0xE007 32#define HIF_PS_ADH_SET_CONF 0xE808 33#define HIF_INFRA_SET_REQ 0xE008 34#define HIF_INFRA_SET_CONF 0xE809 35#define HIF_ADH_SET_REQ 0xE009 36#define HIF_ADH_SET_CONF 0xE80A 37#define HIF_AP_SET_REQ 0xE00A 38#define HIF_AP_SET_CONF 0xE80B 39#define HIF_ASSOC_INFO_IND 0xE80C 40#define HIF_MIC_FAILURE_REQ 0xE00B 41#define HIF_MIC_FAILURE_CONF 0xE80D 42#define HIF_SCAN_REQ 0xE00C 43#define HIF_SCAN_CONF 0xE80E 44#define HIF_PHY_INFO_REQ 0xE00D 45#define HIF_PHY_INFO_CONF 0xE80F 46#define HIF_SLEEP_REQ 0xE00E 47#define HIF_SLEEP_CONF 0xE810 48#define HIF_PHY_INFO_IND 0xE811 49#define HIF_SCAN_IND 0xE812 50#define HIF_INFRA_SET2_REQ 0xE00F 51#define HIF_INFRA_SET2_CONF 0xE813 52#define HIF_ADH_SET2_REQ 0xE010 53#define HIF_ADH_SET2_CONF 0xE814 54 55#define HIF_REQ_MAX 0xE010 56 57/* 58 * HOST-MAC I/F data structure 59 * Byte alignment Little Endian 60 */ 61 62struct hostif_hdr { 63 __le16 size; 64 __le16 event; 65} __packed; 66 67struct hostif_data_request { 68 struct hostif_hdr header; 69 __le16 auth_type; 70#define TYPE_DATA 0x0000 71#define TYPE_AUTH 0x0001 72 __le16 reserved; 73 u8 data[]; 74} __packed; 75 76#define TYPE_PMK1 0x0001 77#define TYPE_GMK1 0x0002 78#define TYPE_GMK2 0x0003 79 80#define CHANNEL_LIST_MAX_SIZE 14 81struct channel_list { 82 u8 size; 83 u8 body[CHANNEL_LIST_MAX_SIZE]; 84 u8 pad; 85} __packed; 86 87/** 88 * enum mib_attribute - Management Information Base attribute 89 * Attribute value used for accessing and updating MIB 90 * 91 * @DOT11_MAC_ADDRESS: MAC Address (R) 92 * @DOT11_PRODUCT_VERSION: FirmWare Version (R) 93 * @DOT11_RTS_THRESHOLD: RTS Threshold (R/W) 94 * @DOT11_FRAGMENTATION_THRESHOLD: Fragment Threshold (R/W) 95 * @DOT11_PRIVACY_INVOKED: WEP ON/OFF (W) 96 * @DOT11_WEP_DEFAULT_KEY_ID: WEP Index (W) 97 * @DOT11_WEP_DEFAULT_KEY_VALUE1: WEP Key#1(TKIP AES: PairwiseTemporalKey) (W) 98 * @DOT11_WEP_DEFAULT_KEY_VALUE2: WEP Key#2(TKIP AES: GroupKey1) (W) 99 * @DOT11_WEP_DEFAULT_KEY_VALUE3: WEP Key#3(TKIP AES: GroupKey2) (W) 100 * @DOT11_WEP_DEFAULT_KEY_VALUE4: WEP Key#4 (W) 101 * @DOT11_WEP_LIST: WEP LIST 102 * @DOT11_DESIRED_SSID: SSID 103 * @DOT11_CURRENT_CHANNEL: channel set 104 * @DOT11_OPERATION_RATE_SET: rate set 105 * @LOCAL_AP_SEARCH_INTERVAL: AP search interval (R/W) 106 * @LOCAL_CURRENTADDRESS: MAC Address change (W) 107 * @LOCAL_MULTICAST_ADDRESS: Multicast Address (W) 108 * @LOCAL_MULTICAST_FILTER: Multicast Address Filter enable/disable (W) 109 * @LOCAL_SEARCHED_AP_LIST: AP list (R) 110 * @LOCAL_LINK_AP_STATUS: Link AP status (R) 111 * @LOCAL_PACKET_STATISTICS: tx,rx packets statistics 112 * @LOCAL_AP_SCAN_LIST_TYPE_SET: AP_SCAN_LIST_TYPE 113 * @DOT11_RSN_ENABLED: WPA enable/disable (W) 114 * @LOCAL_RSN_MODE: RSN mode WPA/WPA2 (W) 115 * @DOT11_RSN_CONFIG_MULTICAST_CIPHER: GroupKeyCipherSuite (W) 116 * @DOT11_RSN_CONFIG_UNICAST_CIPHER: PairwiseKeyCipherSuite (W) 117 * @DOT11_RSN_CONFIG_AUTH_SUITE: AuthenticationKeyManagementSuite (W) 118 * @DOT11_RSN_CONFIG_VERSION: RSN version (W) 119 * @LOCAL_RSN_CONFIG_ALL: RSN CONFIG ALL (W) 120 * @DOT11_PMK_TSC: PMK_TSC (W) 121 * @DOT11_GMK1_TSC: GMK1_TSC (W) 122 * @DOT11_GMK2_TSC: GMK2_TSC (W) 123 * @DOT11_GMK3_TSC: GMK3_TSC 124 * @LOCAL_PMK: Pairwise Master Key cache (W) 125 * @LOCAL_REGION: Region setting 126 * @LOCAL_WPS_ENABLE: WiFi Protected Setup 127 * @LOCAL_WPS_PROBE_REQ: WPS Probe Request 128 * @LOCAL_GAIN: Carrer sense threshold for demo ato show 129 * @LOCAL_EEPROM_SUM: EEPROM checksum information 130 */ 131enum mib_attribute { 132 DOT11_MAC_ADDRESS = 0x21010100, 133 DOT11_PRODUCT_VERSION = 0x31024100, 134 DOT11_RTS_THRESHOLD = 0x21020100, 135 DOT11_FRAGMENTATION_THRESHOLD = 0x21050100, 136 DOT11_PRIVACY_INVOKED = 0x15010100, 137 DOT11_WEP_DEFAULT_KEY_ID = 0x15020100, 138 DOT11_WEP_DEFAULT_KEY_VALUE1 = 0x13020101, 139 DOT11_WEP_DEFAULT_KEY_VALUE2 = 0x13020102, 140 DOT11_WEP_DEFAULT_KEY_VALUE3 = 0x13020103, 141 DOT11_WEP_DEFAULT_KEY_VALUE4 = 0x13020104, 142 DOT11_WEP_LIST = 0x13020100, 143 DOT11_DESIRED_SSID = 0x11090100, 144 DOT11_CURRENT_CHANNEL = 0x45010100, 145 DOT11_OPERATION_RATE_SET = 0x11110100, 146 LOCAL_AP_SEARCH_INTERVAL = 0xF1010100, 147 LOCAL_CURRENTADDRESS = 0xF1050100, 148 LOCAL_MULTICAST_ADDRESS = 0xF1060100, 149 LOCAL_MULTICAST_FILTER = 0xF1060200, 150 LOCAL_SEARCHED_AP_LIST = 0xF1030100, 151 LOCAL_LINK_AP_STATUS = 0xF1040100, 152 LOCAL_PACKET_STATISTICS = 0xF1020100, 153 LOCAL_AP_SCAN_LIST_TYPE_SET = 0xF1030200, 154 DOT11_RSN_ENABLED = 0x15070100, 155 LOCAL_RSN_MODE = 0x56010100, 156 DOT11_RSN_CONFIG_MULTICAST_CIPHER = 0x51040100, 157 DOT11_RSN_CONFIG_UNICAST_CIPHER = 0x52020100, 158 DOT11_RSN_CONFIG_AUTH_SUITE = 0x53020100, 159 DOT11_RSN_CONFIG_VERSION = 0x51020100, 160 LOCAL_RSN_CONFIG_ALL = 0x5F010100, 161 DOT11_PMK_TSC = 0x55010100, 162 DOT11_GMK1_TSC = 0x55010101, 163 DOT11_GMK2_TSC = 0x55010102, 164 DOT11_GMK3_TSC = 0x55010103, 165 LOCAL_PMK = 0x58010100, 166 LOCAL_REGION = 0xF10A0100, 167 LOCAL_WPS_ENABLE = 0xF10B0100, 168 LOCAL_WPS_PROBE_REQ = 0xF10C0100, 169 LOCAL_GAIN = 0xF10D0100, 170 LOCAL_EEPROM_SUM = 0xF10E0100 171}; 172 173struct hostif_mib_get_request { 174 struct hostif_hdr header; 175 __le32 mib_attribute; 176} __packed; 177 178/** 179 * enum mib_data_type - Message Information Base data type. 180 * @MIB_VALUE_TYPE_NULL: NULL type 181 * @MIB_VALUE_TYPE_INT: INTEGER type 182 * @MIB_VALUE_TYPE_BOOL: BOOL type 183 * @MIB_VALUE_TYPE_COUNT32: unused 184 * @MIB_VALUE_TYPE_OSTRING: Chunk of memory 185 */ 186enum mib_data_type { 187 MIB_VALUE_TYPE_NULL = 0, 188 MIB_VALUE_TYPE_INT, 189 MIB_VALUE_TYPE_BOOL, 190 MIB_VALUE_TYPE_COUNT32, 191 MIB_VALUE_TYPE_OSTRING 192}; 193 194struct hostif_mib_value { 195 __le16 size; 196 __le16 type; 197 u8 body[]; 198} __packed; 199 200struct hostif_mib_get_confirm_t { 201 struct hostif_hdr header; 202 __le32 mib_status; 203#define MIB_SUCCESS 0 204#define MIB_INVALID 1 205#define MIB_READ_ONLY 2 206#define MIB_WRITE_ONLY 3 207 __le32 mib_attribute; 208 struct hostif_mib_value mib_value; 209} __packed; 210 211struct hostif_mib_set_request_t { 212 struct hostif_hdr header; 213 __le32 mib_attribute; 214 struct hostif_mib_value mib_value; 215} __packed; 216 217struct hostif_power_mgmt_request { 218 struct hostif_hdr header; 219 __le32 mode; 220#define POWER_ACTIVE 1 221#define POWER_SAVE 2 222 __le32 wake_up; 223#define SLEEP_FALSE 0 224#define SLEEP_TRUE 1 /* not used */ 225 __le32 receive_dtims; 226#define DTIM_FALSE 0 227#define DTIM_TRUE 1 228} __packed; 229 230enum power_mgmt_mode_type { 231 POWER_MGMT_ACTIVE, 232 POWER_MGMT_SAVE1, 233 POWER_MGMT_SAVE2 234}; 235 236#define RESULT_SUCCESS 0 237#define RESULT_INVALID_PARAMETERS 1 238#define RESULT_NOT_SUPPORTED 2 239/* #define RESULT_ALREADY_RUNNING 3 */ 240#define RESULT_ALREADY_RUNNING 7 241 242struct hostif_start_request { 243 struct hostif_hdr header; 244 __le16 mode; 245#define MODE_PSEUDO_ADHOC 0 246#define MODE_INFRASTRUCTURE 1 247#define MODE_AP 2 /* not used */ 248#define MODE_ADHOC 3 249} __packed; 250 251struct ssid { 252 u8 size; 253 u8 body[IEEE80211_MAX_SSID_LEN]; 254 u8 ssid_pad; 255} __packed; 256 257#define RATE_SET_MAX_SIZE 16 258struct rate_set8 { 259 u8 size; 260 u8 body[8]; 261 u8 rate_pad; 262} __packed; 263 264struct fh_parms { 265 __le16 dwell_time; 266 u8 hop_set; 267 u8 hop_pattern; 268 u8 hop_index; 269} __packed; 270 271struct ds_parms { 272 u8 channel; 273} __packed; 274 275struct cf_parms { 276 u8 count; 277 u8 period; 278 __le16 max_duration; 279 __le16 dur_remaining; 280} __packed; 281 282struct ibss_parms { 283 __le16 atim_window; 284} __packed; 285 286struct rsn_t { 287 u8 size; 288#define RSN_BODY_SIZE 64 289 u8 body[RSN_BODY_SIZE]; 290} __packed; 291 292struct erp_params_t { 293 u8 erp_info; 294} __packed; 295 296struct rate_set16 { 297 u8 size; 298 u8 body[16]; 299 u8 rate_pad; 300} __packed; 301 302struct ap_info { 303 u8 bssid[6]; /* +00 */ 304 u8 rssi; /* +06 */ 305 u8 sq; /* +07 */ 306 u8 noise; /* +08 */ 307 u8 pad0; /* +09 */ 308 __le16 beacon_period; /* +10 */ 309 __le16 capability; /* +12 */ 310 u8 frame_type; /* +14 */ 311 u8 ch_info; /* +15 */ 312 __le16 body_size; /* +16 */ 313 u8 body[1024]; /* +18 */ 314 /* +1032 */ 315} __packed; 316 317struct link_ap_info { 318 u8 bssid[6]; /* +00 */ 319 u8 rssi; /* +06 */ 320 u8 sq; /* +07 */ 321 u8 noise; /* +08 */ 322 u8 pad0; /* +09 */ 323 __le16 beacon_period; /* +10 */ 324 __le16 capability; /* +12 */ 325 struct rate_set8 rate_set; /* +14 */ 326 struct fh_parms fh_parameter; /* +24 */ 327 struct ds_parms ds_parameter; /* +29 */ 328 struct cf_parms cf_parameter; /* +30 */ 329 struct ibss_parms ibss_parameter; /* +36 */ 330 struct erp_params_t erp_parameter; /* +38 */ 331 u8 pad1; /* +39 */ 332 struct rate_set8 ext_rate_set; /* +40 */ 333 u8 DTIM_period; /* +50 */ 334 u8 rsn_mode; /* +51 */ 335#define RSN_MODE_NONE 0 336#define RSN_MODE_WPA 1 337#define RSN_MODE_WPA2 2 338 struct { 339 u8 size; /* +52 */ 340 u8 body[128]; /* +53 */ 341 } __packed rsn; 342} __packed; 343 344#define RESULT_CONNECT 0 345#define RESULT_DISCONNECT 1 346 347struct hostif_stop_request { 348 struct hostif_hdr header; 349} __packed; 350 351#define D_11B_ONLY_MODE 0 352#define D_11G_ONLY_MODE 1 353#define D_11BG_COMPATIBLE_MODE 2 354#define D_11A_ONLY_MODE 3 355 356#define CTS_MODE_FALSE 0 357#define CTS_MODE_TRUE 1 358 359struct hostif_request { 360 __le16 phy_type; 361 __le16 cts_mode; 362 __le16 scan_type; 363 __le16 capability; 364 struct rate_set16 rate_set; 365} __packed; 366 367/** 368 * struct hostif_ps_adhoc_set_request - pseudo adhoc mode 369 * @capability: bit5 : preamble 370 * bit6 : pbcc - Not supported always 0 371 * bit10 : ShortSlotTime 372 * bit13 : DSSS-OFDM - Not supported always 0 373 */ 374struct hostif_ps_adhoc_set_request { 375 struct hostif_hdr header; 376 struct hostif_request request; 377 __le16 channel; 378} __packed; 379 380#define AUTH_TYPE_OPEN_SYSTEM 0 381#define AUTH_TYPE_SHARED_KEY 1 382 383/** 384 * struct hostif_infrastructure_set_request 385 * @capability: bit5 : preamble 386 * bit6 : pbcc - Not supported always 0 387 * bit10 : ShortSlotTime 388 * bit13 : DSSS-OFDM - Not supported always 0 389 */ 390struct hostif_infrastructure_set_request { 391 struct hostif_hdr header; 392 struct hostif_request request; 393 struct ssid ssid; 394 __le16 beacon_lost_count; 395 __le16 auth_type; 396 struct channel_list channel_list; 397 u8 bssid[ETH_ALEN]; 398} __packed; 399 400/** 401 * struct hostif_adhoc_set_request 402 * @capability: bit5 : preamble 403 * bit6 : pbcc - Not supported always 0 404 * bit10 : ShortSlotTime 405 * bit13 : DSSS-OFDM - Not supported always 0 406 */ 407struct hostif_adhoc_set_request { 408 struct hostif_hdr header; 409 struct hostif_request request; 410 struct ssid ssid; 411 __le16 channel; 412} __packed; 413 414/** 415 * struct hostif_adhoc_set2_request 416 * @capability: bit5 : preamble 417 * bit6 : pbcc - Not supported always 0 418 * bit10 : ShortSlotTime 419 * bit13 : DSSS-OFDM - Not supported always 0 420 */ 421struct hostif_adhoc_set2_request { 422 struct hostif_hdr header; 423 struct hostif_request request; 424 __le16 reserved; 425 struct ssid ssid; 426 struct channel_list channel_list; 427 u8 bssid[ETH_ALEN]; 428} __packed; 429 430struct association_request { 431 u8 type; 432 u8 pad; 433 __le16 capability; 434 __le16 listen_interval; 435 u8 ap_address[6]; 436 __le16 req_ies_size; 437} __packed; 438 439struct association_response { 440 u8 type; 441 u8 pad; 442 __le16 capability; 443 __le16 status; 444 __le16 association_id; 445 __le16 resp_ies_size; 446} __packed; 447 448struct hostif_bss_scan_request { 449 struct hostif_hdr header; 450 u8 scan_type; 451#define ACTIVE_SCAN 0 452#define PASSIVE_SCAN 1 453 u8 pad[3]; 454 __le32 ch_time_min; 455 __le32 ch_time_max; 456 struct channel_list channel_list; 457 struct ssid ssid; 458} __packed; 459 460struct hostif_phy_information_request { 461 struct hostif_hdr header; 462 __le16 type; 463#define NORMAL_TYPE 0 464#define TIME_TYPE 1 465 __le16 time; /* unit 100ms */ 466} __packed; 467 468enum sleep_mode_type { 469 SLP_ACTIVE, 470 SLP_SLEEP 471}; 472 473struct hostif_sleep_request { 474 struct hostif_hdr header; 475} __packed; 476 477struct hostif_mic_failure_request { 478 struct hostif_hdr header; 479 __le16 failure_count; 480 __le16 timer; 481} __packed; 482 483#define BASIC_RATE 0x80 484#define RATE_MASK 0x7F 485 486#define TX_RATE_AUTO 0xff 487#define TX_RATE_1M_FIXED 0 488#define TX_RATE_2M_FIXED 1 489#define TX_RATE_1_2M_AUTO 2 490#define TX_RATE_5M_FIXED 3 491#define TX_RATE_11M_FIXED 4 492 493#define TX_RATE_FULL_AUTO 0 494#define TX_RATE_11_AUTO 1 495#define TX_RATE_11B_AUTO 2 496#define TX_RATE_11BG_AUTO 3 497#define TX_RATE_MANUAL_AUTO 4 498#define TX_RATE_FIXED 5 499 500/* 11b rate */ 501#define TX_RATE_1M ((u8)(10 / 5)) /* 11b 11g basic rate */ 502#define TX_RATE_2M ((u8)(20 / 5)) /* 11b 11g basic rate */ 503#define TX_RATE_5M ((u8)(55 / 5)) /* 11g basic rate */ 504#define TX_RATE_11M ((u8)(110 / 5)) /* 11g basic rate */ 505 506/* 11g rate */ 507#define TX_RATE_6M ((u8)(60 / 5)) /* 11g basic rate */ 508#define TX_RATE_12M ((u8)(120 / 5)) /* 11g basic rate */ 509#define TX_RATE_24M ((u8)(240 / 5)) /* 11g basic rate */ 510#define TX_RATE_9M ((u8)(90 / 5)) 511#define TX_RATE_18M ((u8)(180 / 5)) 512#define TX_RATE_36M ((u8)(360 / 5)) 513#define TX_RATE_48M ((u8)(480 / 5)) 514#define TX_RATE_54M ((u8)(540 / 5)) 515 516static inline bool is_11b_rate(u8 rate) 517{ 518 return (((rate & RATE_MASK) == TX_RATE_1M) || 519 ((rate & RATE_MASK) == TX_RATE_2M) || 520 ((rate & RATE_MASK) == TX_RATE_5M) || 521 ((rate & RATE_MASK) == TX_RATE_11M)); 522} 523 524static inline bool is_ofdm_rate(u8 rate) 525{ 526 return (((rate & RATE_MASK) == TX_RATE_6M) || 527 ((rate & RATE_MASK) == TX_RATE_12M) || 528 ((rate & RATE_MASK) == TX_RATE_24M) || 529 ((rate & RATE_MASK) == TX_RATE_9M) || 530 ((rate & RATE_MASK) == TX_RATE_18M) || 531 ((rate & RATE_MASK) == TX_RATE_36M) || 532 ((rate & RATE_MASK) == TX_RATE_48M) || 533 ((rate & RATE_MASK) == TX_RATE_54M)); 534} 535 536static inline bool is_11bg_rate(u8 rate) 537{ 538 return (is_11b_rate(rate) || is_ofdm_rate(rate)); 539} 540 541static inline bool is_ofdm_ext_rate(u8 rate) 542{ 543 return (((rate & RATE_MASK) == TX_RATE_9M) || 544 ((rate & RATE_MASK) == TX_RATE_18M) || 545 ((rate & RATE_MASK) == TX_RATE_36M) || 546 ((rate & RATE_MASK) == TX_RATE_48M) || 547 ((rate & RATE_MASK) == TX_RATE_54M)); 548} 549 550enum connect_status_type { 551 CONNECT_STATUS, 552 DISCONNECT_STATUS 553}; 554 555enum preamble_type { 556 LONG_PREAMBLE, 557 SHORT_PREAMBLE 558}; 559 560enum multicast_filter_type { 561 MCAST_FILTER_MCAST, 562 MCAST_FILTER_MCASTALL, 563 MCAST_FILTER_PROMISC, 564}; 565 566#define NIC_MAX_MCAST_LIST 32 567 568#define HIF_EVENT_MASK 0xE800 569 570static inline bool is_hif_ind(unsigned short event) 571{ 572 return (((event & HIF_EVENT_MASK) == HIF_EVENT_MASK) && 573 (((event & ~HIF_EVENT_MASK) == 0x0001) || 574 ((event & ~HIF_EVENT_MASK) == 0x0006) || 575 ((event & ~HIF_EVENT_MASK) == 0x000C) || 576 ((event & ~HIF_EVENT_MASK) == 0x0011) || 577 ((event & ~HIF_EVENT_MASK) == 0x0012))); 578} 579 580static inline bool is_hif_conf(unsigned short event) 581{ 582 return (((event & HIF_EVENT_MASK) == HIF_EVENT_MASK) && 583 ((event & ~HIF_EVENT_MASK) > 0x0000) && 584 ((event & ~HIF_EVENT_MASK) < 0x0012) && 585 !is_hif_ind(event)); 586} 587 588#ifdef __KERNEL__ 589 590#include "ks_wlan.h" 591 592/* function prototype */ 593int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *skb); 594void hostif_receive(struct ks_wlan_private *priv, unsigned char *p, 595 unsigned int size); 596void hostif_sme_enqueue(struct ks_wlan_private *priv, u16 event); 597int hostif_init(struct ks_wlan_private *priv); 598void hostif_exit(struct ks_wlan_private *priv); 599int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, 600 void (*complete_handler)(struct ks_wlan_private *priv, 601 struct sk_buff *skb), 602 struct sk_buff *skb); 603void send_packet_complete(struct ks_wlan_private *priv, struct sk_buff *skb); 604 605void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv); 606int ks_wlan_hw_power_save(struct ks_wlan_private *priv); 607 608#define KS7010_SIZE_ALIGNMENT 32 609 610static inline size_t hif_align_size(size_t size) 611{ 612 return ALIGN(size, KS7010_SIZE_ALIGNMENT); 613} 614 615#endif /* __KERNEL__ */ 616 617#endif /* _KS_HOSTIF_H_ */