openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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__ */