1 /* 2 * Copyright (c) 2011-2015, 2017-2019 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 /* 20 * 21 * This file dph_hash_table.h contains the definition of the scheduler class. 22 * 23 * Author: Sandesh Goel 24 * Date: 02/25/02 25 * History:- 26 * Date Modified by Modification Information 27 * -------------------------------------------------------------------- 28 * 29 */ 30 31 #ifndef __DPH_HASH_TABLE_H__ 32 #define __DPH_HASH_TABLE_H__ 33 34 #include "ani_global.h" 35 /* Compare MAC addresses, return true if same */ dph_compare_mac_addr(uint8_t addr1[],uint8_t addr2[])36 static inline uint8_t dph_compare_mac_addr(uint8_t addr1[], uint8_t addr2[]) 37 { 38 return (addr1[0] == addr2[0]) && 39 (addr1[1] == addr2[1]) && 40 (addr1[2] == addr2[2]) && 41 (addr1[3] == addr2[3]) && 42 (addr1[4] == addr2[4]) && (addr1[5] == addr2[5]); 43 } 44 45 /** 46 * struct dph_hash_table - DPH hash table 47 * @pHashTable: The actual hash table 48 * @pDphNodeArray: The state array 49 * @size: The size of the hash table 50 */ 51 struct dph_hash_table { 52 tpDphHashNode *pHashTable; 53 tDphHashNode *pDphNodeArray; 54 uint16_t size; 55 }; 56 57 tpDphHashNode dph_lookup_hash_entry(struct mac_context *mac, uint8_t staAddr[], 58 uint16_t *pStaId, 59 struct dph_hash_table *hash_table); 60 61 /* Get a pointer to the hash node */ 62 tpDphHashNode dph_get_hash_entry(struct mac_context *mac, uint16_t staId, 63 struct dph_hash_table *hash_table); 64 65 /* Add an entry to the hash table */ 66 tpDphHashNode dph_add_hash_entry(struct mac_context *mac, 67 tSirMacAddr staAddr, 68 uint16_t staId, 69 struct dph_hash_table *hash_table); 70 71 /* Delete an entry from the hash table */ 72 QDF_STATUS dph_delete_hash_entry(struct mac_context *mac, 73 tSirMacAddr staAddr, uint16_t staId, 74 struct dph_hash_table *hash_table); 75 76 /** 77 * dph_hash_table_init - Initialize a DPH Hash Table 78 * @mac: Global MAC Context 79 * @hash_table: Pointer to the Hash Table to initialize 80 */ 81 void dph_hash_table_init(struct mac_context *mac, 82 struct dph_hash_table *hash_table); 83 84 /* Initialize STA state */ 85 tpDphHashNode dph_init_sta_state(struct mac_context *mac, 86 tSirMacAddr staAddr, 87 uint16_t staId, 88 struct dph_hash_table *hash_table); 89 90 #endif 91