diff options
author | Don Skidmore <donald.c.skidmore@intel.com> | 2008-12-21 23:10:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-21 23:10:29 -0500 |
commit | f4314e815e87b4ab1c9b1115dd5853cd20ca999c (patch) | |
tree | 4a8784070f58420814528ca0abd5cf3e12753ce5 /drivers/net/ixgbe | |
parent | 1486a61ebcd2711532f8163d30babc40e11e7b40 (diff) |
net: add DCNA attribute to the BCN interface for DCB
Adds the Backward Congestion Notification Address (BCNA) attribute to the
Backward Congestion Notification (BCN) interface for Data Center Bridging
(DCB), which was missing. Receive the BCNA attribute in the ixgbe driver.
The BCNA attribute is for a switch to inform the endstation about the physical
port identification in order to support BCN on aggregated links.
Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Signed-off-by: Eric W Multanen <eric.w.multanen@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ixgbe')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_dcb_nl.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ixgbe/ixgbe_dcb_nl.c index 7d158a5c545b..8ac639d0da03 100644 --- a/drivers/net/ixgbe/ixgbe_dcb_nl.c +++ b/drivers/net/ixgbe/ixgbe_dcb_nl.c | |||
@@ -93,6 +93,8 @@ int ixgbe_copy_dcb_cfg(struct ixgbe_dcb_config *src_dcb_cfg, | |||
93 | dst_dcb_cfg->bcn.rp_admin_mode[i - DCB_BCN_ATTR_RP_0] = | 93 | dst_dcb_cfg->bcn.rp_admin_mode[i - DCB_BCN_ATTR_RP_0] = |
94 | src_dcb_cfg->bcn.rp_admin_mode[i - DCB_BCN_ATTR_RP_0]; | 94 | src_dcb_cfg->bcn.rp_admin_mode[i - DCB_BCN_ATTR_RP_0]; |
95 | } | 95 | } |
96 | dst_dcb_cfg->bcn.bcna_option[0] = src_dcb_cfg->bcn.bcna_option[0]; | ||
97 | dst_dcb_cfg->bcn.bcna_option[1] = src_dcb_cfg->bcn.bcna_option[1]; | ||
96 | dst_dcb_cfg->bcn.rp_alpha = src_dcb_cfg->bcn.rp_alpha; | 98 | dst_dcb_cfg->bcn.rp_alpha = src_dcb_cfg->bcn.rp_alpha; |
97 | dst_dcb_cfg->bcn.rp_beta = src_dcb_cfg->bcn.rp_beta; | 99 | dst_dcb_cfg->bcn.rp_beta = src_dcb_cfg->bcn.rp_beta; |
98 | dst_dcb_cfg->bcn.rp_gd = src_dcb_cfg->bcn.rp_gd; | 100 | dst_dcb_cfg->bcn.rp_gd = src_dcb_cfg->bcn.rp_gd; |
@@ -457,6 +459,12 @@ static void ixgbe_dcbnl_getbcncfg(struct net_device *netdev, int enum_index, | |||
457 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 459 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
458 | 460 | ||
459 | switch (enum_index) { | 461 | switch (enum_index) { |
462 | case DCB_BCN_ATTR_BCNA_0: | ||
463 | *setting = adapter->dcb_cfg.bcn.bcna_option[0]; | ||
464 | break; | ||
465 | case DCB_BCN_ATTR_BCNA_1: | ||
466 | *setting = adapter->dcb_cfg.bcn.bcna_option[1]; | ||
467 | break; | ||
460 | case DCB_BCN_ATTR_ALPHA: | 468 | case DCB_BCN_ATTR_ALPHA: |
461 | *setting = adapter->dcb_cfg.bcn.rp_alpha; | 469 | *setting = adapter->dcb_cfg.bcn.rp_alpha; |
462 | break; | 470 | break; |
@@ -516,6 +524,18 @@ static void ixgbe_dcbnl_setbcncfg(struct net_device *netdev, int enum_index, | |||
516 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 524 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
517 | 525 | ||
518 | switch (enum_index) { | 526 | switch (enum_index) { |
527 | case DCB_BCN_ATTR_BCNA_0: | ||
528 | adapter->temp_dcb_cfg.bcn.bcna_option[0] = setting; | ||
529 | if (adapter->temp_dcb_cfg.bcn.bcna_option[0] != | ||
530 | adapter->dcb_cfg.bcn.bcna_option[0]) | ||
531 | adapter->dcb_set_bitmap |= BIT_BCN; | ||
532 | break; | ||
533 | case DCB_BCN_ATTR_BCNA_1: | ||
534 | adapter->temp_dcb_cfg.bcn.bcna_option[1] = setting; | ||
535 | if (adapter->temp_dcb_cfg.bcn.bcna_option[1] != | ||
536 | adapter->dcb_cfg.bcn.bcna_option[1]) | ||
537 | adapter->dcb_set_bitmap |= BIT_BCN; | ||
538 | break; | ||
519 | case DCB_BCN_ATTR_ALPHA: | 539 | case DCB_BCN_ATTR_ALPHA: |
520 | adapter->temp_dcb_cfg.bcn.rp_alpha = setting; | 540 | adapter->temp_dcb_cfg.bcn.rp_alpha = setting; |
521 | if (adapter->temp_dcb_cfg.bcn.rp_alpha != | 541 | if (adapter->temp_dcb_cfg.bcn.rp_alpha != |