brintos

brintos / linux-shallow public Read only

0
0
Text · 3.1 KiB · a08fc76 Raw
110 lines · c
1/*2 * Copyright (c) 2006-2008 Chelsio, Inc. All rights reserved.3 *4 * This software is available to you under a choice of one of two5 * licenses.  You may choose to be licensed under the terms of the GNU6 * General Public License (GPL) Version 2, available from the file7 * COPYING in the main directory of this source tree, or the8 * OpenIB.org BSD license below:9 *10 *     Redistribution and use in source and binary forms, with or11 *     without modification, are permitted provided that the following12 *     conditions are met:13 *14 *      - Redistributions of source code must retain the above15 *        copyright notice, this list of conditions and the following16 *        disclaimer.17 *18 *      - Redistributions in binary form must reproduce the above19 *        copyright notice, this list of conditions and the following20 *        disclaimer in the documentation and/or other materials21 *        provided with the distribution.22 *23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE30 * SOFTWARE.31 */32#ifndef _CHELSIO_DEFS_H33#define _CHELSIO_DEFS_H34 35#include <linux/skbuff.h>36#include <net/tcp.h>37 38#include "t3cdev.h"39 40#include "cxgb3_offload.h"41 42#define VALIDATE_TID 143 44/*45 * Map an ATID or STID to their entries in the corresponding TID tables.46 */47static inline union active_open_entry *atid2entry(const struct tid_info *t,48						  unsigned int atid)49{50	return &t->atid_tab[atid - t->atid_base];51}52 53static inline union listen_entry *stid2entry(const struct tid_info *t,54					     unsigned int stid)55{56	return &t->stid_tab[stid - t->stid_base];57}58 59/*60 * Find the connection corresponding to a TID.61 */62static inline struct t3c_tid_entry *lookup_tid(const struct tid_info *t,63					       unsigned int tid)64{65	struct t3c_tid_entry *t3c_tid = tid < t->ntids ?66	    &(t->tid_tab[tid]) : NULL;67 68	return (t3c_tid && t3c_tid->client) ? t3c_tid : NULL;69}70 71/*72 * Find the connection corresponding to a server TID.73 */74static inline struct t3c_tid_entry *lookup_stid(const struct tid_info *t,75						unsigned int tid)76{77	union listen_entry *e;78 79	if (tid < t->stid_base || tid >= t->stid_base + t->nstids)80		return NULL;81 82	e = stid2entry(t, tid);83	if ((void *)e->next >= (void *)t->tid_tab &&84	    (void *)e->next < (void *)&t->atid_tab[t->natids])85		return NULL;86 87	return &e->t3c_tid;88}89 90/*91 * Find the connection corresponding to an active-open TID.92 */93static inline struct t3c_tid_entry *lookup_atid(const struct tid_info *t,94						unsigned int tid)95{96	union active_open_entry *e;97 98	if (tid < t->atid_base || tid >= t->atid_base + t->natids)99		return NULL;100 101	e = atid2entry(t, tid);102	if ((void *)e->next >= (void *)t->tid_tab &&103	    (void *)e->next < (void *)&t->atid_tab[t->natids])104		return NULL;105 106	return &e->t3c_tid;107}108 109#endif110