bcm-knet.h (4045B)
1 /* 2 * Copyright 2017 Broadcom 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License, version 2, as 6 * published by the Free Software Foundation (the "GPL"). 7 * 8 * This program is distributed in the hope that it will be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * General Public License version 2 (GPLv2) for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * version 2 (GPLv2) along with this source code. 15 */ 16 /* 17 * $Id: bcm-knet.h,v 1.4 Broadcom SDK $ 18 * $Copyright: (c) 2005 Broadcom Corp. 19 * All Rights Reserved.$ 20 */ 21 #ifndef __LINUX_BCM_KNET_H__ 22 #define __LINUX_BCM_KNET_H__ 23 24 #ifndef __KERNEL__ 25 #include <stdint.h> 26 #endif 27 28 typedef struct { 29 int rc; 30 int len; 31 int bufsz; 32 int reserved; 33 uint64_t buf; 34 } bkn_ioctl_t; 35 36 #ifdef __KERNEL__ 37 38 /* 39 * Call-back interfaces for other Linux kernel drivers. 40 */ 41 #include <linux/skbuff.h> 42 43 typedef struct { 44 uint32 netif_user_data; 45 uint32 filter_user_data; 46 uint16 dcb_type; 47 int port; 48 uint64_t ts; 49 uint32 hwts; 50 } knet_skb_cb_t; 51 52 #define KNET_SKB_CB(_skb) ((knet_skb_cb_t *)_skb->cb) 53 54 typedef struct sk_buff * 55 (*knet_skb_cb_f)(struct sk_buff *skb, int dev_no, void *meta); 56 57 typedef int 58 (*knet_filter_cb_f)(uint8_t *pkt, int size, int dev_no, void *meta, 59 int chan, kcom_filter_t *filter); 60 61 typedef int 62 (*knet_hw_tstamp_enable_cb_f)(int dev_no, int phys_port, int tx_type); 63 64 typedef int 65 (*knet_hw_tstamp_tx_time_get_cb_f)(int dev_no, int phys_port, uint8_t *pkt, uint64_t *ts); 66 67 typedef int 68 (*knet_hw_tstamp_tx_meta_get_cb_f)(int dev_no, int hwts, int hdrlen, struct sk_buff *skb, uint64_t *ts, uint32_t **md); 69 70 typedef int 71 (*knet_hw_tstamp_ptp_clock_index_cb_f)(int dev_no); 72 73 typedef int 74 (*knet_hw_tstamp_rx_time_upscale_cb_f)(int dev_no, int phys_port, struct sk_buff *skb, uint32_t *meta, uint64_t *ts); 75 76 typedef int 77 (*knet_hw_tstamp_ioctl_cmd_cb_f)(kcom_msg_clock_cmd_t *kmsg, int len, int dcb_type); 78 79 extern int 80 bkn_rx_skb_cb_register(knet_skb_cb_f rx_cb); 81 82 extern int 83 bkn_rx_skb_cb_unregister(knet_skb_cb_f rx_cb); 84 85 extern int 86 bkn_tx_skb_cb_register(knet_skb_cb_f tx_cb); 87 88 extern int 89 bkn_tx_skb_cb_unregister(knet_skb_cb_f tx_cb); 90 91 extern int 92 bkn_filter_cb_register(knet_filter_cb_f filter_cb); 93 94 extern int 95 bkn_filter_cb_unregister(knet_filter_cb_f filter_cb); 96 97 extern int 98 bkn_hw_tstamp_enable_cb_register(knet_hw_tstamp_enable_cb_f hw_tstamp_enable_cb); 99 100 extern int 101 bkn_hw_tstamp_enable_cb_unregister(knet_hw_tstamp_enable_cb_f hw_tstamp_enable_cb); 102 103 extern int 104 bkn_hw_tstamp_disable_cb_register(knet_hw_tstamp_enable_cb_f hw_tstamp_disable_cb); 105 106 extern int 107 bkn_hw_tstamp_disable_cb_unregister(knet_hw_tstamp_enable_cb_f hw_tstamp_disable_cb); 108 109 extern int 110 bkn_hw_tstamp_tx_time_get_cb_register(knet_hw_tstamp_tx_time_get_cb_f hw_tstamp_tx_time_get_cb); 111 112 extern int 113 bkn_hw_tstamp_tx_time_get_cb_unregister(knet_hw_tstamp_tx_time_get_cb_f hw_tstamp_tx_time_get_cb); 114 115 extern int 116 bkn_hw_tstamp_tx_meta_get_cb_register(knet_hw_tstamp_tx_meta_get_cb_f hw_tstamp_tx_meta_get_cb); 117 118 extern int 119 bkn_hw_tstamp_tx_meta_get_cb_unregister(knet_hw_tstamp_tx_meta_get_cb_f hw_tstamp_tx_meta_get_cb); 120 121 extern int 122 bkn_hw_tstamp_ptp_clock_index_cb_register(knet_hw_tstamp_ptp_clock_index_cb_f hw_tstamp_ptp_clock_index_cb); 123 124 extern int 125 bkn_hw_tstamp_ptp_clock_index_cb_unregister(knet_hw_tstamp_ptp_clock_index_cb_f hw_tstamp_ptp_clock_index_cb); 126 127 extern int 128 bkn_hw_tstamp_rx_time_upscale_cb_register(knet_hw_tstamp_rx_time_upscale_cb_f hw_tstamp_rx_time_upscale_cb); 129 130 extern int 131 bkn_hw_tstamp_rx_time_upscale_cb_unregister(knet_hw_tstamp_rx_time_upscale_cb_f hw_tstamp_rx_time_upscale_cb); 132 133 extern int 134 bkn_hw_tstamp_ioctl_cmd_cb_register(knet_hw_tstamp_ioctl_cmd_cb_f hw_tstamp_ioctl_cmd_cb); 135 136 extern int 137 bkn_hw_tstamp_ioctl_cmd_cb_unregister(knet_hw_tstamp_ioctl_cmd_cb_f hw_tstamp_ioctl_cmd_cb); 138 139 #endif 140 141 #endif /* __LINUX_BCM_KNET_H__ */