New upstream version 17.08
[deb_dpdk.git] / drivers / net / bnxt / bnxt_cpr.h
index 83e5376..a6e8785 100644 (file)
@@ -33,6 +33,7 @@
 
 #ifndef _BNXT_CPR_H_
 #define _BNXT_CPR_H_
+#include <stdbool.h>
 
 #include <rte_io.h>
 
                    RING_CMP(((cpr)->cp_ring_struct), raw_cons)),       \
                    ((cpr)->cp_doorbell))
 
+#define B_CP_DB_ARM(cpr)       rte_write32((DB_KEY_CP), ((cpr)->cp_doorbell))
+#define B_CP_DB_DISARM(cpr)    (*(uint32_t *)((cpr)->cp_doorbell) = \
+                                DB_KEY_CP | DB_IRQ_DIS)
+
+#define B_CP_DB_IDX_ARM(cpr, cons)                                     \
+               (*(uint32_t *)((cpr)->cp_doorbell) = (DB_CP_REARM_FLAGS | \
+                               (cons)))
+
+#define B_CP_DB_IDX_DISARM(cpr, cons)  do {                            \
+               rte_smp_wmb();                                          \
+               (*(uint32_t *)((cpr)->cp_doorbell) = (DB_CP_FLAGS |     \
+                               (cons));                                \
+} while (0)
 #define B_CP_DIS_DB(cpr, raw_cons)                                     \
        rte_write32((DB_CP_FLAGS |                                      \
                    RING_CMP(((cpr)->cp_ring_struct), raw_cons)),       \
@@ -75,6 +89,8 @@ struct bnxt_cp_ring_info {
        uint32_t                hw_stats_ctx_id;
 
        struct bnxt_ring        *cp_ring_struct;
+       uint16_t                cp_cons;
+       bool                    v;
 };
 
 #define RX_CMP_L2_ERRORS                                               \
@@ -82,6 +98,7 @@ struct bnxt_cp_ring_info {
 
 
 struct bnxt;
+int bnxt_alloc_def_cp_ring(struct bnxt *bp);
 void bnxt_free_def_cp_ring(struct bnxt *bp);
 int bnxt_init_def_ring_struct(struct bnxt *bp, unsigned int socket_id);
 void bnxt_handle_async_event(struct bnxt *bp, struct cmpl_base *cmp);