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
*/
#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;
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);
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,
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);
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,