46 lines · c
1/*2 * This file is part of the Chelsio T4 Ethernet driver for Linux.3 * Copyright (C) 2003-2014 Chelsio Communications. All rights reserved.4 *5 * Written by Deepak (deepak.s@chelsio.com)6 *7 * This program is distributed in the hope that it will be useful, but WITHOUT8 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or9 * FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file included in this10 * release for licensing terms and conditions.11 */12 13#include <linux/refcount.h>14 15struct clip_entry {16 spinlock_t lock; /* Hold while modifying clip reference */17 refcount_t refcnt;18 struct list_head list;19 union {20 struct sockaddr_in addr;21 struct sockaddr_in6 addr6;22 };23};24 25struct clip_tbl {26 unsigned int clipt_start;27 unsigned int clipt_size;28 rwlock_t lock;29 atomic_t nfree;30 struct list_head ce_free_head;31 void *cl_list;32 struct list_head hash_list[] __counted_by(clipt_size);33};34 35enum {36 CLIPT_MIN_HASH_BUCKETS = 2,37};38 39struct clip_tbl *t4_init_clip_tbl(unsigned int clipt_start,40 unsigned int clipt_end);41int cxgb4_clip_get(const struct net_device *dev, const u32 *lip, u8 v6);42void cxgb4_clip_release(const struct net_device *dev, const u32 *lip, u8 v6);43int clip_tbl_show(struct seq_file *seq, void *v);44int cxgb4_update_root_dev_clip(struct net_device *dev);45void t4_cleanup_clip_tbl(struct adapter *adap);46