⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipoib.h

📁 linux内核源码
💻 H
📖 第 1 页 / 共 2 页
字号:
struct ipoib_neigh {	struct ipoib_ah    *ah;#ifdef CONFIG_INFINIBAND_IPOIB_CM	struct ipoib_cm_tx *cm;#endif	union ib_gid        dgid;	struct sk_buff_head queue;	struct neighbour   *neighbour;	struct net_device *dev;	struct list_head    list;};/* * We stash a pointer to our private neighbour information after our * hardware address in neigh->ha.  The ALIGN() expression here makes * sure that this pointer is stored aligned so that an unaligned * load is not needed to dereference it. */static inline struct ipoib_neigh **to_ipoib_neigh(struct neighbour *neigh){	return (void*) neigh + ALIGN(offsetof(struct neighbour, ha) +				     INFINIBAND_ALEN, sizeof(void *));}struct ipoib_neigh *ipoib_neigh_alloc(struct neighbour *neigh,				      struct net_device *dev);void ipoib_neigh_free(struct net_device *dev, struct ipoib_neigh *neigh);extern struct workqueue_struct *ipoib_workqueue;/* functions */int ipoib_poll(struct napi_struct *napi, int budget);void ipoib_ib_completion(struct ib_cq *cq, void *dev_ptr);struct ipoib_ah *ipoib_create_ah(struct net_device *dev,				 struct ib_pd *pd, struct ib_ah_attr *attr);void ipoib_free_ah(struct kref *kref);static inline void ipoib_put_ah(struct ipoib_ah *ah){	kref_put(&ah->ref, ipoib_free_ah);}int ipoib_open(struct net_device *dev);int ipoib_add_pkey_attr(struct net_device *dev);int ipoib_add_umcast_attr(struct net_device *dev);void ipoib_send(struct net_device *dev, struct sk_buff *skb,		struct ipoib_ah *address, u32 qpn);void ipoib_reap_ah(struct work_struct *work);void ipoib_flush_paths(struct net_device *dev);struct ipoib_dev_priv *ipoib_intf_alloc(const char *format);int ipoib_ib_dev_init(struct net_device *dev, struct ib_device *ca, int port);void ipoib_ib_dev_flush(struct work_struct *work);void ipoib_pkey_event(struct work_struct *work);void ipoib_ib_dev_cleanup(struct net_device *dev);int ipoib_ib_dev_open(struct net_device *dev);int ipoib_ib_dev_up(struct net_device *dev);int ipoib_ib_dev_down(struct net_device *dev, int flush);int ipoib_ib_dev_stop(struct net_device *dev, int flush);int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port);void ipoib_dev_cleanup(struct net_device *dev);void ipoib_mcast_join_task(struct work_struct *work);void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb);void ipoib_mcast_restart_task(struct work_struct *work);int ipoib_mcast_start_thread(struct net_device *dev);int ipoib_mcast_stop_thread(struct net_device *dev, int flush);void ipoib_mcast_dev_down(struct net_device *dev);void ipoib_mcast_dev_flush(struct net_device *dev);#ifdef CONFIG_INFINIBAND_IPOIB_DEBUGstruct ipoib_mcast_iter *ipoib_mcast_iter_init(struct net_device *dev);int ipoib_mcast_iter_next(struct ipoib_mcast_iter *iter);void ipoib_mcast_iter_read(struct ipoib_mcast_iter *iter,				  union ib_gid *gid,				  unsigned long *created,				  unsigned int *queuelen,				  unsigned int *complete,				  unsigned int *send_only);struct ipoib_path_iter *ipoib_path_iter_init(struct net_device *dev);int ipoib_path_iter_next(struct ipoib_path_iter *iter);void ipoib_path_iter_read(struct ipoib_path_iter *iter,			  struct ipoib_path *path);#endifint ipoib_mcast_attach(struct net_device *dev, u16 mlid,		       union ib_gid *mgid);int ipoib_mcast_detach(struct net_device *dev, u16 mlid,		       union ib_gid *mgid);int ipoib_init_qp(struct net_device *dev);int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca);void ipoib_transport_dev_cleanup(struct net_device *dev);void ipoib_event(struct ib_event_handler *handler,		 struct ib_event *record);int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey);int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey);void ipoib_pkey_poll(struct work_struct *work);int ipoib_pkey_dev_delay_open(struct net_device *dev);void ipoib_drain_cq(struct net_device *dev);#ifdef CONFIG_INFINIBAND_IPOIB_CM#define IPOIB_FLAGS_RC          0x80#define IPOIB_FLAGS_UC          0x40/* We don't support UC connections at the moment */#define IPOIB_CM_SUPPORTED(ha)   (ha[0] & (IPOIB_FLAGS_RC))static inline int ipoib_cm_admin_enabled(struct net_device *dev){	struct ipoib_dev_priv *priv = netdev_priv(dev);	return IPOIB_CM_SUPPORTED(dev->dev_addr) &&		test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);}static inline int ipoib_cm_enabled(struct net_device *dev, struct neighbour *n){	struct ipoib_dev_priv *priv = netdev_priv(dev);	return IPOIB_CM_SUPPORTED(n->ha) &&		test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);}static inline int ipoib_cm_up(struct ipoib_neigh *neigh){	return test_bit(IPOIB_FLAG_OPER_UP, &neigh->cm->flags);}static inline struct ipoib_cm_tx *ipoib_cm_get(struct ipoib_neigh *neigh){	return neigh->cm;}static inline void ipoib_cm_set(struct ipoib_neigh *neigh, struct ipoib_cm_tx *tx){	neigh->cm = tx;}void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_tx *tx);int ipoib_cm_dev_open(struct net_device *dev);void ipoib_cm_dev_stop(struct net_device *dev);int ipoib_cm_dev_init(struct net_device *dev);int ipoib_cm_add_mode_attr(struct net_device *dev);void ipoib_cm_dev_cleanup(struct net_device *dev);struct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path *path,				    struct ipoib_neigh *neigh);void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx);void ipoib_cm_skb_too_long(struct net_device* dev, struct sk_buff *skb,			   unsigned int mtu);void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc);void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc);#elsestruct ipoib_cm_tx;static inline int ipoib_cm_admin_enabled(struct net_device *dev){	return 0;}static inline int ipoib_cm_enabled(struct net_device *dev, struct neighbour *n){	return 0;}static inline int ipoib_cm_up(struct ipoib_neigh *neigh){	return 0;}static inline struct ipoib_cm_tx *ipoib_cm_get(struct ipoib_neigh *neigh){	return NULL;}static inline void ipoib_cm_set(struct ipoib_neigh *neigh, struct ipoib_cm_tx *tx){}static inlinevoid ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_tx *tx){	return;}static inlineint ipoib_cm_dev_open(struct net_device *dev){	return 0;}static inlinevoid ipoib_cm_dev_stop(struct net_device *dev){	return;}static inlineint ipoib_cm_dev_init(struct net_device *dev){	return -ENOSYS;}static inlinevoid ipoib_cm_dev_cleanup(struct net_device *dev){	return;}static inlinestruct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path *path,				    struct ipoib_neigh *neigh){	return NULL;}static inlinevoid ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx){	return;}static inlineint ipoib_cm_add_mode_attr(struct net_device *dev){	return 0;}static inline void ipoib_cm_skb_too_long(struct net_device* dev, struct sk_buff *skb,					 unsigned int mtu){	dev_kfree_skb_any(skb);}static inline void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc){}static inline void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc){}#endif#ifdef CONFIG_INFINIBAND_IPOIB_DEBUGvoid ipoib_create_debug_files(struct net_device *dev);void ipoib_delete_debug_files(struct net_device *dev);int ipoib_register_debugfs(void);void ipoib_unregister_debugfs(void);#elsestatic inline void ipoib_create_debug_files(struct net_device *dev) { }static inline void ipoib_delete_debug_files(struct net_device *dev) { }static inline int ipoib_register_debugfs(void) { return 0; }static inline void ipoib_unregister_debugfs(void) { }#endif#define ipoib_printk(level, priv, format, arg...)	\	printk(level "%s: " format, ((struct ipoib_dev_priv *) priv)->dev->name , ## arg)#define ipoib_warn(priv, format, arg...)		\	ipoib_printk(KERN_WARNING, priv, format , ## arg)extern int ipoib_sendq_size;extern int ipoib_recvq_size;extern struct ib_sa_client ipoib_sa_client;#ifdef CONFIG_INFINIBAND_IPOIB_DEBUGextern int ipoib_debug_level;#define ipoib_dbg(priv, format, arg...)			\	do {					        \		if (ipoib_debug_level > 0)			\			ipoib_printk(KERN_DEBUG, priv, format , ## arg); \	} while (0)#define ipoib_dbg_mcast(priv, format, arg...)		\	do {					        \		if (mcast_debug_level > 0)		\			ipoib_printk(KERN_DEBUG, priv, format , ## arg); \	} while (0)#else /* CONFIG_INFINIBAND_IPOIB_DEBUG */#define ipoib_dbg(priv, format, arg...)			\	do { (void) (priv); } while (0)#define ipoib_dbg_mcast(priv, format, arg...)		\	do { (void) (priv); } while (0)#endif /* CONFIG_INFINIBAND_IPOIB_DEBUG */#ifdef CONFIG_INFINIBAND_IPOIB_DEBUG_DATA#define ipoib_dbg_data(priv, format, arg...)		\	do {					        \		if (data_debug_level > 0)		\			ipoib_printk(KERN_DEBUG, priv, format , ## arg); \	} while (0)#else /* CONFIG_INFINIBAND_IPOIB_DEBUG_DATA */#define ipoib_dbg_data(priv, format, arg...)		\	do { (void) (priv); } while (0)#endif /* CONFIG_INFINIBAND_IPOIB_DEBUG_DATA */#define IPOIB_GID_FMT		"%2.2x%2.2x:%2.2x%2.2x:%2.2x%2.2x:%2.2x%2.2x:" \				"%2.2x%2.2x:%2.2x%2.2x:%2.2x%2.2x:%2.2x%2.2x"#define IPOIB_GID_RAW_ARG(gid)	((u8 *)(gid))[0], \				((u8 *)(gid))[1], \				((u8 *)(gid))[2], \				((u8 *)(gid))[3], \				((u8 *)(gid))[4], \				((u8 *)(gid))[5], \				((u8 *)(gid))[6], \				((u8 *)(gid))[7], \				((u8 *)(gid))[8], \				((u8 *)(gid))[9], \				((u8 *)(gid))[10],\				((u8 *)(gid))[11],\				((u8 *)(gid))[12],\				((u8 *)(gid))[13],\				((u8 *)(gid))[14],\				((u8 *)(gid))[15]#define IPOIB_GID_ARG(gid)	IPOIB_GID_RAW_ARG((gid).raw)#define IPOIB_QPN(ha) (be32_to_cpup((__be32 *) ha) & 0xffffff)#endif /* _IPOIB_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -