File diff 1efda0e3054b → 052c0cbc4bbf
vmkdrivers/src_9/include/linux/netdevice.h
Show inline comments
...
 
@@ -299,6 +299,40 @@ typedef enum {
 
   NETPOLL_BACKUP = 1,
 
} vmklnx_poll_type;
 

	
 
/*
 
 * since all pointers are 4 bytes or even 8 bytes aligned,
 
 * let's simply embed the poll_type in the lower bits of vmk_NetPoll->priv
 
 * final pointer value = (original priv pointer | poll_type)
 
 */
 
#define POLLPRIV_TYPE_BITS	1
 
#define POLLPRIV_TYPE_MASK	((1 << POLLPRIV_TYPE_BITS) - 1)
 

	
 
static inline void *pollpriv_embed(void *priv, vmklnx_poll_type poll_type)
 
{
 
        VMK_ASSERT(priv);
 
        VMK_ASSERT((((unsigned long) priv) & POLLPRIV_TYPE_MASK) == 0);
 
        VMK_ASSERT(poll_type <= POLLPRIV_TYPE_MASK);
 
        return (void *)(((unsigned long )priv) | poll_type);
 
}
 

	
 
static inline vmklnx_poll_type pollpriv_type(void *priv)
 
{
 
        VMK_ASSERT(priv);
 
        return (vmklnx_poll_type)(((unsigned long)priv) & POLLPRIV_TYPE_MASK);
 
}
 

	
 
static inline struct napi_struct *pollpriv_napi(void *priv)
 
{
 
        VMK_ASSERT(pollpriv_type(priv) == NETPOLL_DEFAULT);
 
        return (struct napi_struct *) (((unsigned long)priv) & (~POLLPRIV_TYPE_MASK));
 
}
 

	
 
static inline struct net_device *pollpriv_net_device(void *priv)
 
{
 
        VMK_ASSERT(pollpriv_type(priv) == NETPOLL_BACKUP);
 
        return (struct net_device *)  (((unsigned long)priv) & (~POLLPRIV_TYPE_MASK));
 
}
 

	
 
struct napi_struct {
 
        unsigned long           state;
 
        int                     weight;