bcm-knet.h (3061B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 */ 7 #ifndef __LINUX_BCM_KNET_H__ 8 #define __LINUX_BCM_KNET_H__ 9 10 #ifndef __KERNEL__ 11 #include <stdint.h> 12 #endif 13 14 typedef struct { 15 int rc; 16 int len; 17 int bufsz; 18 int reserved; 19 uint64_t buf; 20 } bkn_ioctl_t; 21 22 #ifdef __KERNEL__ 23 24 /* 25 * Call-back interfaces for other Linux kernel drivers. 26 */ 27 #include <linux/skbuff.h> 28 29 typedef struct { 30 uint32 netif_user_data; 31 uint32 filter_user_data; 32 uint16 dcb_type; 33 int port; 34 } knet_skb_cb_t; 35 36 #define KNET_SKB_CB(_skb) ((knet_skb_cb_t *)_skb->cb) 37 38 typedef struct sk_buff * 39 (*knet_skb_cb_f)(struct sk_buff *skb, int dev_no, void *meta); 40 41 typedef int 42 (*knet_filter_cb_f)(uint8_t *pkt, int size, int dev_no, void *meta, 43 int chan, kcom_filter_t *filter); 44 45 typedef int 46 (*knet_hw_tstamp_enable_cb_f)(int dev_no, int port); 47 48 typedef int 49 (*knet_hw_tstamp_tx_time_get_cb_f)(int dev_no, int port, uint8_t *pkt, uint64_t *ts); 50 51 typedef int 52 (*knet_hw_tstamp_tx_meta_get_cb_f)(int dev_no, struct sk_buff *skb, uint32_t **md); 53 54 typedef int 55 (*knet_hw_tstamp_ptp_clock_index_cb_f)(int dev_no); 56 57 typedef int 58 (*knet_hw_tstamp_rx_time_upscale_cb_f)(int dev_no, uint64_t *ts); 59 60 extern int 61 bkn_rx_skb_cb_register(knet_skb_cb_f rx_cb); 62 63 extern int 64 bkn_rx_skb_cb_unregister(knet_skb_cb_f rx_cb); 65 66 extern int 67 bkn_tx_skb_cb_register(knet_skb_cb_f tx_cb); 68 69 extern int 70 bkn_tx_skb_cb_unregister(knet_skb_cb_f tx_cb); 71 72 extern int 73 bkn_filter_cb_register(knet_filter_cb_f filter_cb); 74 75 extern int 76 bkn_filter_cb_unregister(knet_filter_cb_f filter_cb); 77 78 extern int 79 bkn_hw_tstamp_enable_cb_register(knet_hw_tstamp_enable_cb_f hw_tstamp_enable_cb); 80 81 extern int 82 bkn_hw_tstamp_enable_cb_unregister(knet_hw_tstamp_enable_cb_f hw_tstamp_enable_cb); 83 84 extern int 85 bkn_hw_tstamp_disable_cb_register(knet_hw_tstamp_enable_cb_f hw_tstamp_disable_cb); 86 87 extern int 88 bkn_hw_tstamp_disable_cb_unregister(knet_hw_tstamp_enable_cb_f hw_tstamp_disable_cb); 89 90 extern int 91 bkn_hw_tstamp_tx_time_get_cb_register(knet_hw_tstamp_tx_time_get_cb_f hw_tstamp_tx_time_get_cb); 92 93 extern int 94 bkn_hw_tstamp_tx_time_get_cb_unregister(knet_hw_tstamp_tx_time_get_cb_f hw_tstamp_tx_time_get_cb); 95 96 extern int 97 bkn_hw_tstamp_tx_meta_get_cb_register(knet_hw_tstamp_tx_meta_get_cb_f hw_tstamp_tx_meta_get_cb); 98 99 extern int 100 bkn_hw_tstamp_tx_meta_get_cb_unregister(knet_hw_tstamp_tx_meta_get_cb_f hw_tstamp_tx_meta_get_cb); 101 102 extern int 103 bkn_hw_tstamp_ptp_clock_index_cb_register(knet_hw_tstamp_ptp_clock_index_cb_f hw_tstamp_ptp_clock_index_cb); 104 105 extern int 106 bkn_hw_tstamp_ptp_clock_index_cb_unregister(knet_hw_tstamp_ptp_clock_index_cb_f hw_tstamp_ptp_clock_index_cb); 107 108 extern int 109 bkn_hw_tstamp_rx_time_upscale_cb_register(knet_hw_tstamp_rx_time_upscale_cb_f hw_tstamp_rx_time_upscale_cb); 110 111 extern int 112 bkn_hw_tstamp_rx_time_upscale_cb_unregister(knet_hw_tstamp_rx_time_upscale_cb_f hw_tstamp_rx_time_upscale_cb); 113 114 #endif 115 116 #endif /* __LINUX_BCM_KNET_H__ */