X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fcnxk%2Froc_nix.h;h=45aca8380d4b4d3c43b27b134d5d1d8041bbd5ca;hb=218d022e1f3f4b5b54ebe7c02c51fb1b495e4398;hp=638f82789af82574a5b1eba1e403356fab053c73;hpb=1c518ee11e31a296888d6851654651db4ef02d3b;p=dpdk.git diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h index 638f82789a..45aca8380d 100644 --- a/drivers/common/cnxk/roc_nix.h +++ b/drivers/common/cnxk/roc_nix.h @@ -17,6 +17,11 @@ enum roc_nix_sq_max_sqe_sz { roc_nix_maxsqesz_w8 = NIX_MAXSQESZ_W8, }; +/* Range to adjust PTP frequency. Valid range is + * (-ROC_NIX_PTP_FREQ_ADJUST, ROC_NIX_PTP_FREQ_ADJUST) + */ +#define ROC_NIX_PTP_FREQ_ADJUST (1 << 9) + /* NIX LF RX offload configuration flags. * These are input flags to roc_nix_lf_alloc:rx_cfg */ @@ -42,6 +47,49 @@ enum roc_nix_sq_max_sqe_sz { #define ROC_NIX_VWQE_MAX_SIZE_LOG2 11 #define ROC_NIX_VWQE_MIN_SIZE_LOG2 2 +struct roc_nix_stats { + /* Rx */ + uint64_t rx_octs; + uint64_t rx_ucast; + uint64_t rx_bcast; + uint64_t rx_mcast; + uint64_t rx_drop; + uint64_t rx_drop_octs; + uint64_t rx_fcs; + uint64_t rx_err; + uint64_t rx_drop_bcast; + uint64_t rx_drop_mcast; + uint64_t rx_drop_l3_bcast; + uint64_t rx_drop_l3_mcast; + /* Tx */ + uint64_t tx_ucast; + uint64_t tx_bcast; + uint64_t tx_mcast; + uint64_t tx_drop; + uint64_t tx_octs; +}; + +struct roc_nix_stats_queue { + PLT_STD_C11 + union { + struct { + /* Rx */ + uint64_t rx_pkts; + uint64_t rx_octs; + uint64_t rx_drop_pkts; + uint64_t rx_drop_octs; + uint64_t rx_error_pkts; + }; + struct { + /* Tx */ + uint64_t tx_pkts; + uint64_t tx_octs; + uint64_t tx_drop_pkts; + uint64_t tx_drop_octs; + }; + }; +}; + struct roc_nix_rq { /* Input parameters */ uint16_t qid; @@ -110,6 +158,14 @@ struct roc_nix_link_info { uint64_t port : 8; }; +struct roc_nix_ipsec_cfg { + uint32_t sa_size; + uint32_t tag_const; + plt_iova_t iova; + uint16_t max_sa; + uint8_t tt; +}; + /* Link status update callback */ typedef void (*link_status_t)(struct roc_nix *roc_nix, struct roc_nix_link_info *link); @@ -156,6 +212,8 @@ int __roc_api roc_nix_max_pkt_len(struct roc_nix *roc_nix); int __roc_api roc_nix_lf_alloc(struct roc_nix *roc_nix, uint32_t nb_rxq, uint32_t nb_txq, uint64_t rx_cfg); int __roc_api roc_nix_lf_free(struct roc_nix *roc_nix); +int __roc_api roc_nix_lf_inl_ipsec_cfg(struct roc_nix *roc_nix, + struct roc_nix_ipsec_cfg *cfg, bool enb); /* IRQ */ void __roc_api roc_nix_rx_queue_intr_enable(struct roc_nix *roc_nix, @@ -205,6 +263,33 @@ int __roc_api roc_nix_npc_rx_ena_dis(struct roc_nix *roc_nix, bool enable); int __roc_api roc_nix_npc_mcast_config(struct roc_nix *roc_nix, bool mcast_enable, bool prom_enable); +/* RSS */ +void __roc_api roc_nix_rss_key_default_fill(struct roc_nix *roc_nix, + uint8_t key[ROC_NIX_RSS_KEY_LEN]); +void __roc_api roc_nix_rss_key_set(struct roc_nix *roc_nix, + const uint8_t key[ROC_NIX_RSS_KEY_LEN]); +void __roc_api roc_nix_rss_key_get(struct roc_nix *roc_nix, + uint8_t key[ROC_NIX_RSS_KEY_LEN]); +int __roc_api roc_nix_rss_reta_set(struct roc_nix *roc_nix, uint8_t group, + uint16_t reta[ROC_NIX_RSS_RETA_MAX]); +int __roc_api roc_nix_rss_reta_get(struct roc_nix *roc_nix, uint8_t group, + uint16_t reta[ROC_NIX_RSS_RETA_MAX]); +int __roc_api roc_nix_rss_flowkey_set(struct roc_nix *roc_nix, uint8_t *alg_idx, + uint32_t flowkey, uint8_t group, + int mcam_index); +int __roc_api roc_nix_rss_default_setup(struct roc_nix *roc_nix, + uint32_t flowkey); + +/* Stats */ +int __roc_api roc_nix_stats_get(struct roc_nix *roc_nix, + struct roc_nix_stats *stats); +int __roc_api roc_nix_stats_reset(struct roc_nix *roc_nix); +int __roc_api roc_nix_stats_queue_get(struct roc_nix *roc_nix, uint16_t qid, + bool is_rx, + struct roc_nix_stats_queue *qstats); +int __roc_api roc_nix_stats_queue_reset(struct roc_nix *roc_nix, uint16_t qid, + bool is_rx); + /* Queue */ int __roc_api roc_nix_rq_init(struct roc_nix *roc_nix, struct roc_nix_rq *rq, bool ena); @@ -217,6 +302,17 @@ int __roc_api roc_nix_cq_fini(struct roc_nix_cq *cq); int __roc_api roc_nix_sq_init(struct roc_nix *roc_nix, struct roc_nix_sq *sq); int __roc_api roc_nix_sq_fini(struct roc_nix_sq *sq); +/* PTP */ +int __roc_api roc_nix_ptp_rx_ena_dis(struct roc_nix *roc_nix, int enable); +int __roc_api roc_nix_ptp_tx_ena_dis(struct roc_nix *roc_nix, int enable); +int __roc_api roc_nix_ptp_clock_read(struct roc_nix *roc_nix, uint64_t *clock, + uint64_t *tsc, uint8_t is_pmu); +int __roc_api roc_nix_ptp_sync_time_adjust(struct roc_nix *roc_nix, + int64_t delta); +int __roc_api roc_nix_ptp_info_cb_register(struct roc_nix *roc_nix, + ptp_info_update_t ptp_update); +void __roc_api roc_nix_ptp_info_cb_unregister(struct roc_nix *roc_nix); + /* MCAST*/ int __roc_api roc_nix_mcast_mcam_entry_alloc(struct roc_nix *roc_nix, uint16_t nb_entries,