Initial API changes to ipv4 and freq

Change-Id: I5a0e3e97ab4df4a6455169e23d814d4db330889d
Signed-off-by: Thomas Wu <wthomas@codeaurora.org>
diff --git a/nss_if.h b/nss_if.h
new file mode 100755
index 0000000..4d72ec4
--- /dev/null
+++ b/nss_if.h
@@ -0,0 +1,161 @@
+/*
+ * NSS Interface Messages
+ */
+
+#ifndef __NSS_IF_H
+#define __NSS_IF_H
+
+/*
+ * Message numbers
+ */
+enum nss_if_message_types {
+	NSS_IF_OPEN,
+	NSS_IF_CLOSE,
+	NSS_IF_LINK_STATE_NOTIFY,
+	NSS_IF_MTU_CHANGE,
+	NSS_IF_MAC_ADDR_SET,
+	NSS_IF_MSS_SET,
+	NSS_IF_STATS_SYNC,
+	NSS_IF_ISHAPER_ASSIGN,
+	NSS_IF_BSHAPER_ASSIGN,
+	NSS_IF_ISHAPER_UNASSIGN,
+	NSS_IF_BSHAPER_UNASSIGN,
+	NSS_IF_ISHAPER_CONFIG,
+	NSS_IF_BSHAPER_CONFIG,
+	NSS_IF_MAX_MSG_TYPES
+};
+
+enum nss_if_error_types {
+	NSS_IF_ERROR_NO_ISHAPERS,
+	NSS_IF_ERROR_NO_BSHAPERS,
+	NSS_IF_ERROR_NO_ISHAPER,
+	NSS_IF_ERROR_NO_BSHAPER,
+	NSS_IF_ERROR_ISHAPER_OLD,
+	NSS_IF_ERROR_B_SHAPER_OLD,
+	NSS_IF_ERROR_I_SHAPER_CONFIG_FAILED,
+	NSS_IF_ERROR_B_SHAPER_CONFIG_FAILED,
+	NSS_IF_ERROR_TYPE_UNKNOWN,
+	NSS_IF_ERROR_TYPE_EOPEN,
+};
+
+/*
+ * Interface open command
+ */
+struct nss_if_open {
+	uint32_t tx_desc_ring;		/* Tx descriptor ring address */
+	uint32_t rx_desc_ring;		/* Rx descriptor ring address */
+};
+
+/*
+ * Interface close command
+ */
+struct nss_if_close {
+	uint32_t reserved;		/* Place holder */
+};
+
+/*
+ * Link state notification to NSS
+ */
+struct nss_if_link_state_notify {
+	uint32_t state;			/* Link State (UP/DOWN), speed/duplex settings */
+};
+
+/*
+ * Interface mtu change
+ */
+struct nss_if_mtu_change {
+	uint16_t min_buf_size;		/* Changed min buf size value */
+};
+
+/*
+ * The MSS (Maximum Segment Size) structure.
+ */
+struct nss_if_mss_set {
+	uint16_t mss;			/* MSS value */
+};
+
+/*
+ * The NSS MAC address structure.
+ */
+struct nss_if_mac_address_set {
+	uint8_t mac_addr[ETH_ALEN];	/* MAC address */
+};
+
+/*
+ * The NSS per-GMAC statistics sync structure.
+ */
+struct nss_if_stats_sync {
+	uint32_t rx_bytes;		/* Number of RX bytes */
+	uint32_t rx_packets;		/* Number of RX packets */
+	uint32_t rx_errors;		/* Number of RX errors */
+	uint32_t rx_receive_errors;	/* Number of RX receive errors */
+	uint32_t rx_overflow_errors;	/* Number of RX overflow errors */
+	uint32_t rx_descriptor_errors;	/* Number of RX descriptor errors */
+	uint32_t rx_watchdog_timeout_errors;
+					/* Number of RX watchdog timeout errors */
+	uint32_t rx_crc_errors;		/* Number of RX CRC errors */
+	uint32_t rx_late_collision_errors;
+					/* Number of RX late collision errors */
+	uint32_t rx_dribble_bit_errors;	/* Number of RX dribble bit errors */
+	uint32_t rx_length_errors;	/* Number of RX length errors */
+	uint32_t rx_ip_header_errors;	/* Number of RX IP header errors */
+	uint32_t rx_ip_payload_errors;	/* Number of RX IP payload errors */
+	uint32_t rx_no_buffer_errors;	/* Number of RX no-buffer errors */
+	uint32_t rx_transport_csum_bypassed;
+					/* Number of RX packets where the transport checksum was bypassed */
+	uint32_t tx_bytes;		/* Number of TX bytes */
+	uint32_t tx_packets;		/* Number of TX packets */
+	uint32_t tx_collisions;		/* Number of TX collisions */
+	uint32_t tx_errors;		/* Number of TX errors */
+	uint32_t tx_jabber_timeout_errors;
+					/* Number of TX jabber timeout errors */
+	uint32_t tx_frame_flushed_errors;
+					/* Number of TX frame flushed errors */
+	uint32_t tx_loss_of_carrier_errors;
+					/* Number of TX loss of carrier errors */
+	uint32_t tx_no_carrier_errors;	/* Number of TX no carrier errors */
+	uint32_t tx_late_collision_errors;
+					/* Number of TX late collision errors */
+	uint32_t tx_excessive_collision_errors;
+					/* Number of TX excessive collision errors */
+	uint32_t tx_excessive_deferral_errors;
+					/* Number of TX excessive deferral errors */
+	uint32_t tx_underflow_errors;	/* Number of TX underflow errors */
+	uint32_t tx_ip_header_errors;	/* Number of TX IP header errors */
+	uint32_t tx_ip_payload_errors;	/* Number of TX IP payload errors */
+	uint32_t tx_dropped;		/* Number of TX dropped packets */
+	uint32_t hw_errs[10];		/* GMAC DMA error counters */
+	uint32_t rx_missed;		/* Number of RX packets missed by the DMA */
+	uint32_t fifo_overflows;	/* Number of RX FIFO overflows signalled by the DMA */
+	uint32_t rx_scatter_errors;	/* Number of scattered frames received by the DMA */
+	uint32_t gmac_total_ticks;	/* Total clock ticks spend inside the GMAC */
+	uint32_t gmac_worst_case_ticks;	/* Worst case iteration of the GMAC in ticks */
+	uint32_t gmac_iterations;	/* Number of iterations around the GMAC */
+};
+
+/*
+ * Message structure to send/receive phys i/f commands
+ */
+struct nss_if_msg {
+	struct nss_cmn_msg cm;			/* Message Header */
+	union {
+		struct nss_if_link_state_notify link_state_notify;	/* Message: notify link status */
+		struct nss_if_open open;	/* Message: open interface */
+		struct nss_if_close close;	/* Message: close interface */
+		struct nss_if_mtu_change mtu_change;	/* Message: MTU change notification */
+		struct nss_if_mss_set mss_set;	/* Message: set MSS */
+		struct nss_if_mac_address_set mac_address_set;	/* Message: set MAC address for i/f */
+		struct nss_if_stats_sync stats_sync;	/* Message: statistics sync */
+	} msg;
+};
+
+
+struct nss_ctx_instance;
+
+typedef void (*nss_if_msg_callback_t)(void *app_data, struct nss_if_msg *msg);
+typedef void (*nss_if_data_callback_t)(void *app_data, struct sk_buff *nbuf);
+
+extern nss_tx_status_t nss_if_tx(struct nss_ctx_instance *nss_ctx, struct nss_if_msg *msg);
+extern void *nss_if_notify_register(uint32_t if_num, nss_if_msg_callback_t msg_cb, void *app_data);
+extern void *nss_if_data_register(uint32_t if_num, struct net_device *netdev, nss_if_data_callback_t cb, void *app_data);
+#endif /*  __NSS_IF_H */