Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[pandora-kernel.git] / drivers / net / bnx2x / bnx2x_link.h
index 82bc021..6a7708d 100644 (file)
@@ -250,6 +250,8 @@ struct link_params {
 #define FEATURE_CONFIG_PFC_ENABLED                     (1<<1)
 #define FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY                (1<<2)
 #define FEATURE_CONFIG_BC_SUPPORTS_DUAL_PHY_OPT_MDL_VRFY       (1<<3)
+#define FEATURE_CONFIG_AUTOGREEEN_ENABLED                      (1<<9)
+#define FEATURE_CONFIG_BC_SUPPORTS_SFP_TX_DISABLED             (1<<10)
        /* Will be populated during common init */
        struct bnx2x_phy phy[MAX_PHYS];
 
@@ -271,6 +273,10 @@ struct link_vars {
        u8 phy_flags;
 #define PHY_XGXS_FLAG                  (1<<0)
 #define PHY_SGMII_FLAG                 (1<<1)
+#define PHY_PHYSICAL_LINK_FLAG         (1<<2)
+#define PHY_HALF_OPEN_CONN_FLAG                (1<<3)
+#define PHY_OVER_CURRENT_FLAG          (1<<4)
+#define PHY_TX_ERROR_CHECK_FLAG                (1<<5)
 
        u8 mac_type;
 #define MAC_TYPE_NONE          0
@@ -292,7 +298,9 @@ struct link_vars {
        u32 link_status;
        u8 fault_detected;
        u8 rsrv1;
-       u16 rsrv2;
+       u16 periodic_flags;
+#define PERIODIC_FLAGS_LINK_EVENT      0x0001
+
        u32 aeu_int_mask;
 };
 
@@ -411,6 +419,38 @@ struct bnx2x_nig_brb_pfc_port_params {
        u32 cos1_pauseable;
 };
 
+
+/* ETS port configuration params */
+struct bnx2x_ets_bw_params {
+       u8 bw;
+};
+
+struct bnx2x_ets_sp_params {
+       /**
+        * valid values are 0 - 5. 0 is highest strict priority.
+        * There can't be two COS's with the same pri.
+        */
+       u8 pri;
+};
+
+enum bnx2x_cos_state {
+       bnx2x_cos_state_strict = 0,
+       bnx2x_cos_state_bw = 1,
+};
+
+struct bnx2x_ets_cos_params {
+       enum bnx2x_cos_state state ;
+       union {
+               struct bnx2x_ets_bw_params bw_params;
+               struct bnx2x_ets_sp_params sp_params;
+       } params;
+};
+
+struct bnx2x_ets_params {
+       u8 num_of_cos; /* Number of valid COS entries*/
+       struct bnx2x_ets_cos_params cos[DCBX_MAX_NUM_COS];
+};
+
 /**
  * Used to update the PFC attributes in EMAC, BMAC, NIG and BRB
  * when link is already up
@@ -421,7 +461,8 @@ int bnx2x_update_pfc(struct link_params *params,
 
 
 /* Used to configure the ETS to disable */
-void bnx2x_ets_disabled(struct link_params *params);
+int bnx2x_ets_disabled(struct link_params *params,
+                      struct link_vars *vars);
 
 /* Used to configure the ETS to BW limited */
 void bnx2x_ets_bw_limit(const struct link_params *params, const u32 cos0_bw,
@@ -430,6 +471,11 @@ void bnx2x_ets_bw_limit(const struct link_params *params, const u32 cos0_bw,
 /* Used to configure the ETS to strict */
 int bnx2x_ets_strict(const struct link_params *params, const u8 strict_cos);
 
+
+/*  Configure the COS to ETS according to BW and SP settings.*/
+int bnx2x_ets_e3b0_config(const struct link_params *params,
+                        const struct link_vars *vars,
+                        const struct bnx2x_ets_params *ets_params);
 /* Read pfc statistic*/
 void bnx2x_pfc_statistic(struct link_params *params, struct link_vars *vars,
                                                 u32 pfc_frames_sent[2],
@@ -440,4 +486,7 @@ void bnx2x_init_mod_abs_int(struct bnx2x *bp, struct link_vars *vars,
 
 int bnx2x_sfp_module_detection(struct bnx2x_phy *phy,
                               struct link_params *params);
+
+void bnx2x_period_func(struct link_params *params, struct link_vars *vars);
+
 #endif /* BNX2X_LINK_H */