]>
Commit | Line | Data |
---|---|---|
00e5a55c BS |
1 | Subject: DCB: Add BCNA support to ixgbe |
2 | From: Hannes Reinecke <hare@suse.de> | |
3 | Date: Thu Nov 6 13:05:27 2008 +0100: | |
4 | Git: 5091837c7ddfb47111ce456b9addd1476418dcd3 | |
5 | ||
6 | Signed-off-by: John Fastabend <john.r.fastabend@intel.com> | |
7 | Signed-off-by: Hannes Reinecke <hare@suse.de> | |
8 | ||
9 | diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ixgbe/ixgbe_dcb_nl.c | |
10 | index ca2537e..d8db691 100644 | |
11 | --- a/drivers/net/ixgbe/ixgbe_dcb_nl.c | |
12 | +++ b/drivers/net/ixgbe/ixgbe_dcb_nl.c | |
13 | @@ -93,6 +93,8 @@ int ixgbe_copy_dcb_cfg(struct ixgbe_dcb_config *src_dcb_cfg, | |
14 | dst_dcb_cfg->bcn.rp_admin_mode[i - DCB_BCN_ATTR_RP_0] = | |
15 | src_dcb_cfg->bcn.rp_admin_mode[i - DCB_BCN_ATTR_RP_0]; | |
16 | } | |
17 | + dst_dcb_cfg->bcn.bcna_option[0] = src_dcb_cfg->bcn.bcna_option[0]; | |
18 | + dst_dcb_cfg->bcn.bcna_option[1] = src_dcb_cfg->bcn.bcna_option[1]; | |
19 | dst_dcb_cfg->bcn.rp_alpha = src_dcb_cfg->bcn.rp_alpha; | |
20 | dst_dcb_cfg->bcn.rp_beta = src_dcb_cfg->bcn.rp_beta; | |
21 | dst_dcb_cfg->bcn.rp_gd = src_dcb_cfg->bcn.rp_gd; | |
22 | @@ -451,6 +453,12 @@ static void ixgbe_dcbnl_getbcncfg(struct net_device *netdev, int enum_index, | |
23 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | |
24 | ||
25 | switch (enum_index) { | |
26 | + case DCB_BCN_ATTR_BCNA_0: | |
27 | + *setting = adapter->dcb_cfg.bcn.bcna_option[0]; | |
28 | + break; | |
29 | + case DCB_BCN_ATTR_BCNA_1: | |
30 | + *setting = adapter->dcb_cfg.bcn.bcna_option[1]; | |
31 | + break; | |
32 | case DCB_BCN_ATTR_ALPHA: | |
33 | *setting = adapter->dcb_cfg.bcn.rp_alpha; | |
34 | break; | |
35 | @@ -510,6 +518,18 @@ static void ixgbe_dcbnl_setbcncfg(struct net_device *netdev, int enum_index, | |
36 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | |
37 | ||
38 | switch (enum_index) { | |
39 | + case DCB_BCN_ATTR_BCNA_0: | |
40 | + adapter->temp_dcb_cfg.bcn.bcna_option[0] = setting; | |
41 | + if (adapter->temp_dcb_cfg.bcn.bcna_option[0] != | |
42 | + adapter->dcb_cfg.bcn.bcna_option[0]) | |
43 | + adapter->dcb_set_bitmap |= BIT_BCN; | |
44 | + break; | |
45 | + case DCB_BCN_ATTR_BCNA_1: | |
46 | + adapter->temp_dcb_cfg.bcn.bcna_option[1] = setting; | |
47 | + if (adapter->temp_dcb_cfg.bcn.bcna_option[1] != | |
48 | + adapter->dcb_cfg.bcn.bcna_option[1]) | |
49 | + adapter->dcb_set_bitmap |= BIT_BCN; | |
50 | + break; | |
51 | case DCB_BCN_ATTR_ALPHA: | |
52 | adapter->temp_dcb_cfg.bcn.rp_alpha = setting; | |
53 | if (adapter->temp_dcb_cfg.bcn.rp_alpha != | |
54 | diff --git a/include/linux/dcbnl.h b/include/linux/dcbnl.h | |
55 | index 2d5c6fb..e752f2b 100644 | |
56 | --- a/include/linux/dcbnl.h | |
57 | +++ b/include/linux/dcbnl.h | |
58 | @@ -291,6 +291,8 @@ enum dcbnl_bcn_attrs{ | |
59 | DCB_BCN_ATTR_RP_7, | |
60 | DCB_BCN_ATTR_RP_ALL, | |
61 | ||
62 | + DCB_BCN_ATTR_BCNA_0, | |
63 | + DCB_BCN_ATTR_BCNA_1, | |
64 | DCB_BCN_ATTR_ALPHA, | |
65 | DCB_BCN_ATTR_BETA, | |
66 | DCB_BCN_ATTR_GD, | |
67 | diff --git a/net/dcb/dcbnl.c b/net/dcb/dcbnl.c | |
68 | index 76b08ec..f5e2b0b 100644 | |
69 | --- a/net/dcb/dcbnl.c | |
70 | +++ b/net/dcb/dcbnl.c | |
71 | @@ -106,6 +106,8 @@ static struct nla_policy dcbnl_bcn_nest[DCB_BCN_ATTR_MAX + 1] = { | |
72 | [DCB_BCN_ATTR_RP_6] = {.type = NLA_U8}, | |
73 | [DCB_BCN_ATTR_RP_7] = {.type = NLA_U8}, | |
74 | [DCB_BCN_ATTR_RP_ALL] = {.type = NLA_FLAG}, | |
75 | + [DCB_BCN_ATTR_BCNA_0] = {.type = NLA_U32}, | |
76 | + [DCB_BCN_ATTR_BCNA_1] = {.type = NLA_U32}, | |
77 | [DCB_BCN_ATTR_ALPHA] = {.type = NLA_U32}, | |
78 | [DCB_BCN_ATTR_BETA] = {.type = NLA_U32}, | |
79 | [DCB_BCN_ATTR_GD] = {.type = NLA_U32}, | |
80 | @@ -893,7 +895,7 @@ static int dcbnl_bcn_getcfg(struct net_device *netdev, struct nlattr **tb, | |
81 | goto err_bcn; | |
82 | } | |
83 | ||
84 | - for (i = DCB_BCN_ATTR_ALPHA; i <= DCB_BCN_ATTR_RI; i++) { | |
85 | + for (i = DCB_BCN_ATTR_BCNA_0; i <= DCB_BCN_ATTR_RI; i++) { | |
86 | if (!getall && !bcn_tb[i]) | |
87 | continue; | |
88 | ||
89 | @@ -951,7 +953,7 @@ static int dcbnl_bcn_setcfg(struct net_device *netdev, struct nlattr **tb, | |
90 | data[i]->nla_type - DCB_BCN_ATTR_RP_0, value_byte); | |
91 | } | |
92 | ||
93 | - for (i = DCB_BCN_ATTR_ALPHA; i <= DCB_BCN_ATTR_RI; i++) { | |
94 | + for (i = DCB_BCN_ATTR_BCNA_0; i <= DCB_BCN_ATTR_RI; i++) { | |
95 | if (data[i] == NULL) | |
96 | continue; | |
97 | value_int = nla_get_u32(data[i]); |