X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_pmd_e1000%2Fe1000%2Fe1000_osdep.h;h=d04ec732f6e478c15e1025bf885151edf1760dbc;hb=3eb6bdd89e49db7ca1b9b5827b8aa194ecfb2e60;hp=bf03bbf5f7e57835ea829fd158112b66100060cc;hpb=7ea63c1f744ee50825fdfe6b6284224c29639f1a;p=dpdk.git diff --git a/lib/librte_pmd_e1000/e1000/e1000_osdep.h b/lib/librte_pmd_e1000/e1000/e1000_osdep.h index bf03bbf5f7..d04ec732f6 100644 --- a/lib/librte_pmd_e1000/e1000/e1000_osdep.h +++ b/lib/librte_pmd_e1000/e1000/e1000_osdep.h @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2001-2011, Intel Corporation + Copyright (c) 2001-2014, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without @@ -42,39 +42,42 @@ #include #include #include +#include +#include #include "../e1000_logs.h" -/* Remove some compiler warnings for the files in this dir */ -#ifdef __INTEL_COMPILER -#pragma warning(disable:2259) /* conversion may lose significant bits */ -#pragma warning(disable:869) /* Parameter was never referenced */ -#pragma warning(disable:181) /* Arg incompatible with format string */ -#else -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wformat" -#pragma GCC diagnostic ignored "-Wuninitialized" -#if (((__GNUC__) >= 4) && ((__GNUC_MINOR__) >= 7)) -#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" -#endif -#endif - #define DELAY(x) rte_delay_us(x) #define usec_delay(x) DELAY(x) +#define usec_delay_irq(x) DELAY(x) #define msec_delay(x) DELAY(1000*(x)) #define msec_delay_irq(x) DELAY(1000*(x)) -#define DEBUGFUNC(F) DEBUGOUT(F); -#define DEBUGOUT(S, args...) PMD_DRV_LOG(DEBUG, S, ##args) +#define DEBUGFUNC(F) DEBUGOUT(F "\n"); +#define DEBUGOUT(S, args...) PMD_DRV_LOG_RAW(DEBUG, S, ##args) #define DEBUGOUT1(S, args...) DEBUGOUT(S, ##args) #define DEBUGOUT2(S, args...) DEBUGOUT(S, ##args) #define DEBUGOUT3(S, args...) DEBUGOUT(S, ##args) #define DEBUGOUT6(S, args...) DEBUGOUT(S, ##args) #define DEBUGOUT7(S, args...) DEBUGOUT(S, ##args) +#define UNREFERENCED_PARAMETER(_p) +#define UNREFERENCED_1PARAMETER(_p) +#define UNREFERENCED_2PARAMETER(_p, _q) +#define UNREFERENCED_3PARAMETER(_p, _q, _r) +#define UNREFERENCED_4PARAMETER(_p, _q, _r, _s) + #define FALSE 0 #define TRUE 1 +#define CMD_MEM_WRT_INVALIDATE 0x0010 /* BIT_4 */ + +/* Mutex used in the shared code */ +#define E1000_MUTEX uintptr_t +#define E1000_MUTEX_INIT(mutex) (*(mutex) = 0) +#define E1000_MUTEX_LOCK(mutex) (*(mutex) = 1) +#define E1000_MUTEX_UNLOCK(mutex) (*(mutex) = 0) + typedef uint64_t u64; typedef uint32_t u32; typedef uint16_t u16; @@ -94,7 +97,7 @@ typedef int bool; #define E1000_PCI_REG(reg) (*((volatile uint32_t *)(reg))) #define E1000_PCI_REG_WRITE(reg, value) do { \ - E1000_PCI_REG((reg)) = (value); \ + E1000_PCI_REG((reg)) = (rte_cpu_to_le_32(value)); \ } while (0) #define E1000_PCI_REG_ADDR(hw, reg) \ @@ -105,9 +108,22 @@ typedef int bool; static inline uint32_t e1000_read_addr(volatile void* addr) { - return E1000_PCI_REG(addr); + return rte_le_to_cpu_32(E1000_PCI_REG(addr)); } +/* Necessary defines */ +#define E1000_MRQC_ENABLE_MASK 0x00000007 +#define E1000_MRQC_RSS_FIELD_IPV6_EX 0x00080000 +#define E1000_ALL_FULL_DUPLEX ( \ + ADVERTISE_10_FULL | ADVERTISE_100_FULL | ADVERTISE_1000_FULL) + +#define M88E1543_E_PHY_ID 0x01410EA0 +#define NAHUM6LP_HW +#define ULP_SUPPORT + +#define E1000_RCTL_DTYP_MASK 0x00000C00 /* Descriptor type mask */ +#define E1000_MRQC_RSS_FIELD_IPV6_EX 0x00080000 + /* Register READ/WRITE macros */ #define E1000_READ_REG(hw, reg) \ @@ -125,6 +141,43 @@ static inline uint32_t e1000_read_addr(volatile void* addr) #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY +#define E1000_ACCESS_PANIC(x, hw, reg, value) \ + rte_panic("%s:%u\t" RTE_STR(x) "(%p, 0x%x, 0x%x)", \ + __FILE__, __LINE__, (hw), (reg), (unsigned int)(value)) + +/* + * To be able to do IO write, we need to map IO BAR + * (bar 2/4 depending on device). + * Right now mapping multiple BARs is not supported by DPDK. + * Fortunatelly we need it only for legacy hw support. + */ + +#define E1000_WRITE_REG_IO(hw, reg, value) \ + E1000_WRITE_REG(hw, reg, value) + +/* + * Not implemented. + */ + +#define E1000_READ_FLASH_REG(hw, reg) \ + (E1000_ACCESS_PANIC(E1000_READ_FLASH_REG, hw, reg, 0), 0) + +#define E1000_READ_FLASH_REG16(hw, reg) \ + (E1000_ACCESS_PANIC(E1000_READ_FLASH_REG16, hw, reg, 0), 0) + +#define E1000_WRITE_FLASH_REG(hw, reg, value) \ + E1000_ACCESS_PANIC(E1000_WRITE_FLASH_REG, hw, reg, value) + +#define E1000_WRITE_FLASH_REG16(hw, reg, value) \ + E1000_ACCESS_PANIC(E1000_WRITE_FLASH_REG16, hw, reg, value) + #define STATIC static +#ifndef ETH_ADDR_LEN +#define ETH_ADDR_LEN 6 +#endif + +#define false FALSE +#define true TRUE + #endif /* _E1000_OSDEP_H_ */