197ba1527SYonatan Nachum /* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ 297ba1527SYonatan Nachum /* 397ba1527SYonatan Nachum * Copyright 2026 Amazon.com, Inc. or its affiliates. All rights reserved. 497ba1527SYonatan Nachum */ 597ba1527SYonatan Nachum 697ba1527SYonatan Nachum #ifndef _EFA_AH_CACHE_H_ 797ba1527SYonatan Nachum #define _EFA_AH_CACHE_H_ 897ba1527SYonatan Nachum 997ba1527SYonatan Nachum #include <linux/refcount.h> 1097ba1527SYonatan Nachum #include <linux/rhashtable.h> 1197ba1527SYonatan Nachum 1297ba1527SYonatan Nachum #define EFA_AH_GID_SIZE 16 1397ba1527SYonatan Nachum 1497ba1527SYonatan Nachum struct efa_ah_cache_key { 1597ba1527SYonatan Nachum u8 gid[EFA_AH_GID_SIZE]; 1697ba1527SYonatan Nachum u16 pd; 1797ba1527SYonatan Nachum }; 1897ba1527SYonatan Nachum 1997ba1527SYonatan Nachum struct efa_ah_cache_entry { 2097ba1527SYonatan Nachum struct efa_ah_cache_key key; 2197ba1527SYonatan Nachum u16 ah; 2297ba1527SYonatan Nachum unsigned int usecnt; 2397ba1527SYonatan Nachum refcount_t refcount; 2497ba1527SYonatan Nachum struct rhash_head linkage; 2597ba1527SYonatan Nachum struct mutex lock; /* Serializes device commands per cache entry */ 2697ba1527SYonatan Nachum }; 2797ba1527SYonatan Nachum 2897ba1527SYonatan Nachum struct efa_ah_cache { 2997ba1527SYonatan Nachum struct rhashtable hashtable; 3097ba1527SYonatan Nachum struct mutex lock; /* Protects AH cache hashtable */ 3197ba1527SYonatan Nachum }; 3297ba1527SYonatan Nachum 3397ba1527SYonatan Nachum int efa_ah_cache_init(struct efa_ah_cache *ah_cache); 3497ba1527SYonatan Nachum void efa_ah_cache_destroy(struct efa_ah_cache *ah_cache); 35*234895faSYonatan Nachum struct efa_ah_cache_entry *efa_ah_cache_get(struct efa_ah_cache *ah_cache, u16 pd, u8 *gid); 36*234895faSYonatan Nachum struct efa_ah_cache_entry *efa_ah_cache_lookup(struct efa_ah_cache *ah_cache, u16 pd, u8 *gid); 37*234895faSYonatan Nachum void efa_ah_cache_put(struct efa_ah_cache *ah_cache, struct efa_ah_cache_entry *entry); 3897ba1527SYonatan Nachum 3997ba1527SYonatan Nachum #endif /* _EFA_AH_CACHE_H_ */ 40