]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.drivers/ixgbe-add-bcna-support
Add a patch to fix Intel E100 wake-on-lan problems.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.drivers / ixgbe-add-bcna-support
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]);