2007-01-19 06:04:14 +03:00
/*
2007-01-31 06:44:35 +03:00
* Copyright ( c ) 2006 - 2007 Chelsio , Inc . All rights reserved .
2007-01-19 06:04:14 +03:00
*
* This software is available to you under a choice of one of two
* licenses . You may choose to be licensed under the terms of the GNU
* General Public License ( GPL ) Version 2 , available from the file
* COPYING in the main directory of this source tree , or the
* OpenIB . org BSD license below :
*
* Redistribution and use in source and binary forms , with or
* without modification , are permitted provided that the following
* conditions are met :
*
* - Redistributions of source code must retain the above
* copyright notice , this list of conditions and the following
* disclaimer .
*
* - Redistributions in binary form must reproduce the above
* copyright notice , this list of conditions and the following
* disclaimer in the documentation and / or other materials
* provided with the distribution .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND ,
* EXPRESS OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY , FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT . IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER LIABILITY , WHETHER IN AN
* ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM , OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE .
*/
# ifndef _CHELSIO_DEFS_H
# define _CHELSIO_DEFS_H
# include <linux/skbuff.h>
# include <net/tcp.h>
# include "t3cdev.h"
# include "cxgb3_offload.h"
# define VALIDATE_TID 1
void * cxgb_alloc_mem ( unsigned long size ) ;
void cxgb_free_mem ( void * addr ) ;
void cxgb_neigh_update ( struct neighbour * neigh ) ;
void cxgb_redirect ( struct dst_entry * old , struct dst_entry * new ) ;
/*
* Map an ATID or STID to their entries in the corresponding TID tables .
*/
static inline union active_open_entry * atid2entry ( const struct tid_info * t ,
unsigned int atid )
{
return & t - > atid_tab [ atid - t - > atid_base ] ;
}
static inline union listen_entry * stid2entry ( const struct tid_info * t ,
unsigned int stid )
{
return & t - > stid_tab [ stid - t - > stid_base ] ;
}
/*
* Find the connection corresponding to a TID .
*/
static inline struct t3c_tid_entry * lookup_tid ( const struct tid_info * t ,
unsigned int tid )
{
2007-04-17 22:06:30 +04:00
struct t3c_tid_entry * t3c_tid = tid < t - > ntids ?
& ( t - > tid_tab [ tid ] ) : NULL ;
return ( t3c_tid & & t3c_tid - > client ) ? t3c_tid : NULL ;
2007-01-19 06:04:14 +03:00
}
/*
* Find the connection corresponding to a server TID .
*/
static inline struct t3c_tid_entry * lookup_stid ( const struct tid_info * t ,
unsigned int tid )
{
if ( tid < t - > stid_base | | tid > = t - > stid_base + t - > nstids )
return NULL ;
return & ( stid2entry ( t , tid ) - > t3c_tid ) ;
}
/*
* Find the connection corresponding to an active - open TID .
*/
static inline struct t3c_tid_entry * lookup_atid ( const struct tid_info * t ,
unsigned int tid )
{
if ( tid < t - > atid_base | | tid > = t - > atid_base + t - > natids )
return NULL ;
return & ( atid2entry ( t , tid ) - > t3c_tid ) ;
}
int process_rx ( struct t3cdev * dev , struct sk_buff * * skbs , int n ) ;
int attach_t3cdev ( struct t3cdev * dev ) ;
void detach_t3cdev ( struct t3cdev * dev ) ;
# endif