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