* [PATCH net-next 0/4] cxgb4 DCB updates
@ 2015-07-17 20:12 Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 1/4] cxgb4 : Only pass app selector of 0 or 3 to firmware Anish Bhatt
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Anish Bhatt @ 2015-07-17 20:12 UTC (permalink / raw)
To: netdev; +Cc: davem, hariprasad, Anish Bhatt
The following patchset covers changes to work better with the userspace
tools cgdcbxd and cgrulesengd and improves firmware support for
host-managed mode.
Also exports traffic class information that was previously not being
exported via dcbnl_ops and unfifies how app selector information is passed
to firmware.
Anish Bhatt (4):
cxgb4 : Only pass app selector of 0 or 3 to firmware
cxgb4 : Allow firmware DCB info to be queried in host state
cxgb4 : Fill in number of DCB traffic classes supported
cxgb4 : Fill DCB priority in vlan control headers
drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c | 42 ++++++++++++++++++--------
drivers/net/ethernet/chelsio/cxgb4/sge.c | 14 ++++++---
drivers/net/ethernet/chelsio/cxgb4/t4_msg.h | 3 ++
3 files changed, 42 insertions(+), 17 deletions(-)
--
2.4.6
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net-next 1/4] cxgb4 : Only pass app selector of 0 or 3 to firmware
2015-07-17 20:12 [PATCH net-next 0/4] cxgb4 DCB updates Anish Bhatt
@ 2015-07-17 20:12 ` Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 2/4] cxgb4 : Allow firmware DCB info to be queried in host state Anish Bhatt
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Anish Bhatt @ 2015-07-17 20:12 UTC (permalink / raw)
To: netdev; +Cc: davem, hariprasad, Anish Bhatt
This keeps app format passed to firmware the same irrespective
of DCBx version in use.
Signed-off-by: Anish Bhatt <anish@chelsio.com>
---
drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
index 6074680bc985..7f7c4ba0d4f4 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
@@ -794,7 +794,9 @@ static int __cxgb4_getapp(struct net_device *dev, u8 app_idtype, u16 app_id,
*/
static int cxgb4_getapp(struct net_device *dev, u8 app_idtype, u16 app_id)
{
- return __cxgb4_getapp(dev, app_idtype, app_id, 0);
+ /* Convert app_idtype to firmware format before querying */
+ return __cxgb4_getapp(dev, app_idtype == DCB_APP_IDTYPE_ETHTYPE ?
+ app_idtype : 3, app_id, 0);
}
/* Write a new Application User Priority Map for the specified Application ID
@@ -1133,7 +1135,7 @@ static int cxgb4_getpeerapp_tbl(struct net_device *dev, struct dcb_app *table)
if (!pcmd.u.dcb.app_priority.protocolid)
break;
- table[i].selector = pcmd.u.dcb.app_priority.sel_field;
+ table[i].selector = (pcmd.u.dcb.app_priority.sel_field + 1);
table[i].protocol =
be16_to_cpu(pcmd.u.dcb.app_priority.protocolid);
table[i].priority =
--
2.4.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next 2/4] cxgb4 : Allow firmware DCB info to be queried in host state
2015-07-17 20:12 [PATCH net-next 0/4] cxgb4 DCB updates Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 1/4] cxgb4 : Only pass app selector of 0 or 3 to firmware Anish Bhatt
@ 2015-07-17 20:12 ` Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 3/4] cxgb4 : Fill in number of DCB traffic classes supported Anish Bhatt
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Anish Bhatt @ 2015-07-17 20:12 UTC (permalink / raw)
To: netdev; +Cc: davem, hariprasad, Anish Bhatt
Since finally DCB traffic management is still handled by firmware,
allow firmware to be fully programmed and queried even in host
managed state for the cases where this was previously rejected.
Signed-off-by: Anish Bhatt <anish@chelsio.com>
---
drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c | 32 +++++++++++++++++---------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
index 7f7c4ba0d4f4..56a81b8f7c54 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
@@ -31,6 +31,15 @@ static const char * const dcb_ver_array[] = {
"Auto Negotiated"
};
+static inline bool cxgb4_dcb_state_synced(enum cxgb4_dcb_state state)
+{
+ if (state == CXGB4_DCB_STATE_FW_ALLSYNCED ||
+ state == CXGB4_DCB_STATE_HOST)
+ return true;
+ else
+ return false;
+}
+
/* Initialize a port's Data Center Bridging state. Typically used after a
* Link Down event.
*/
@@ -603,7 +612,7 @@ static void cxgb4_getpfccfg(struct net_device *dev, int priority, u8 *pfccfg)
struct port_info *pi = netdev2pinfo(dev);
struct port_dcb_info *dcb = &pi->dcb;
- if (dcb->state != CXGB4_DCB_STATE_FW_ALLSYNCED ||
+ if (!cxgb4_dcb_state_synced(dcb->state) ||
priority >= CXGB4_MAX_PRIORITY)
*pfccfg = 0;
else
@@ -620,7 +629,7 @@ static void cxgb4_setpfccfg(struct net_device *dev, int priority, u8 pfccfg)
struct adapter *adap = pi->adapter;
int err;
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED ||
+ if (!cxgb4_dcb_state_synced(pi->dcb.state) ||
priority >= CXGB4_MAX_PRIORITY)
return;
@@ -732,7 +741,7 @@ static u8 cxgb4_getpfcstate(struct net_device *dev)
{
struct port_info *pi = netdev2pinfo(dev);
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (!cxgb4_dcb_state_synced(pi->dcb.state))
return false;
return pi->dcb.pfcen != 0;
@@ -756,7 +765,7 @@ static int __cxgb4_getapp(struct net_device *dev, u8 app_idtype, u16 app_id,
struct adapter *adap = pi->adapter;
int i;
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (!cxgb4_dcb_state_synced(pi->dcb.state))
return 0;
for (i = 0; i < CXGB4_MAX_DCBX_APP_SUPPORTED; i++) {
@@ -810,7 +819,7 @@ static int __cxgb4_setapp(struct net_device *dev, u8 app_idtype, u16 app_id,
int i, err;
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (!cxgb4_dcb_state_synced(pi->dcb.state))
return -EINVAL;
/* DCB info gets thrown away on link up */
@@ -898,10 +907,11 @@ cxgb4_ieee_negotiation_complete(struct net_device *dev,
struct port_info *pi = netdev2pinfo(dev);
struct port_dcb_info *dcb = &pi->dcb;
- if (dcb_subtype && !(dcb->msgs & dcb_subtype))
- return 0;
+ if (dcb->state == CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (dcb_subtype && !(dcb->msgs & dcb_subtype))
+ return 0;
- return (dcb->state == CXGB4_DCB_STATE_FW_ALLSYNCED &&
+ return (cxgb4_dcb_state_synced(dcb->state) &&
(dcb->supported & DCB_CAP_DCBX_VER_IEEE));
}
@@ -1059,7 +1069,7 @@ static u8 cxgb4_setdcbx(struct net_device *dev, u8 dcb_request)
/* Can't enable DCB if we haven't successfully negotiated it.
*/
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (!cxgb4_dcb_state_synced(pi->dcb.state))
return 1;
/* There's currently no mechanism to allow for the firmware DCBX
@@ -1082,7 +1092,7 @@ static int cxgb4_getpeer_app(struct net_device *dev,
struct adapter *adap = pi->adapter;
int i, err = 0;
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (!cxgb4_dcb_state_synced(pi->dcb.state))
return 1;
info->willing = 0;
@@ -1116,7 +1126,7 @@ static int cxgb4_getpeerapp_tbl(struct net_device *dev, struct dcb_app *table)
struct adapter *adap = pi->adapter;
int i, err = 0;
- if (pi->dcb.state != CXGB4_DCB_STATE_FW_ALLSYNCED)
+ if (!cxgb4_dcb_state_synced(pi->dcb.state))
return 1;
for (i = 0; i < CXGB4_MAX_DCBX_APP_SUPPORTED; i++) {
--
2.4.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next 3/4] cxgb4 : Fill in number of DCB traffic classes supported
2015-07-17 20:12 [PATCH net-next 0/4] cxgb4 DCB updates Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 1/4] cxgb4 : Only pass app selector of 0 or 3 to firmware Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 2/4] cxgb4 : Allow firmware DCB info to be queried in host state Anish Bhatt
@ 2015-07-17 20:12 ` Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 4/4] cxgb4 : Fill DCB priority in vlan control headers Anish Bhatt
2015-07-21 7:23 ` [PATCH net-next 0/4] cxgb4 DCB updates David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Anish Bhatt @ 2015-07-17 20:12 UTC (permalink / raw)
To: netdev; +Cc: davem, hariprasad, Anish Bhatt
Signed-off-by: Anish Bhatt <anish@chelsio.com>
---
drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
index 56a81b8f7c54..052c660aca80 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
@@ -1193,6 +1193,8 @@ static int cxgb4_cee_peer_getpg(struct net_device *dev, struct cee_pg *pg)
for (i = 0; i < CXGB4_MAX_PRIORITY; i++)
pg->pg_bw[i] = pcmd.u.dcb.pgrate.pgrate[i];
+ pg->tcs_supported = pcmd.u.dcb.pgrate.num_tcs_supported;
+
return 0;
}
@@ -1210,6 +1212,8 @@ static int cxgb4_cee_peer_getpfc(struct net_device *dev, struct cee_pfc *pfc)
*/
pfc->pfc_en = bitswap_1(pi->dcb.pfcen);
+ pfc->tcs_supported = pi->dcb.pfc_num_tcs_supported;
+
return 0;
}
--
2.4.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next 4/4] cxgb4 : Fill DCB priority in vlan control headers
2015-07-17 20:12 [PATCH net-next 0/4] cxgb4 DCB updates Anish Bhatt
` (2 preceding siblings ...)
2015-07-17 20:12 ` [PATCH net-next 3/4] cxgb4 : Fill in number of DCB traffic classes supported Anish Bhatt
@ 2015-07-17 20:12 ` Anish Bhatt
2015-07-21 7:23 ` [PATCH net-next 0/4] cxgb4 DCB updates David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Anish Bhatt @ 2015-07-17 20:12 UTC (permalink / raw)
To: netdev; +Cc: davem, hariprasad, Anish Bhatt
Signed-off-by: Anish Bhatt <anish@chelsio.com>
---
drivers/net/ethernet/chelsio/cxgb4/sge.c | 14 ++++++++++----
drivers/net/ethernet/chelsio/cxgb4/t4_msg.h | 3 +++
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index 942db078f33a..d4248d74f560 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -1137,7 +1137,7 @@ cxgb_fcoe_offload(struct sk_buff *skb, struct adapter *adap,
*/
netdev_tx_t t4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
{
- u32 wr_mid;
+ u32 wr_mid, ctrl0;
u64 cntrl, *end;
int qidx, credits;
unsigned int flits, ndesc;
@@ -1274,9 +1274,15 @@ out_free: dev_kfree_skb_any(skb);
#endif /* CONFIG_CHELSIO_T4_FCOE */
}
- cpl->ctrl0 = htonl(TXPKT_OPCODE_V(CPL_TX_PKT_XT) |
- TXPKT_INTF_V(pi->tx_chan) |
- TXPKT_PF_V(adap->pf));
+ ctrl0 = TXPKT_OPCODE_V(CPL_TX_PKT_XT) | TXPKT_INTF_V(pi->tx_chan) |
+ TXPKT_PF_V(adap->pf);
+#ifdef CONFIG_CHELSIO_T4_DCB
+ if (is_t4(adap->params.chip))
+ ctrl0 |= TXPKT_OVLAN_IDX_V(q->dcb_prio);
+ else
+ ctrl0 |= TXPKT_T5_OVLAN_IDX_V(q->dcb_prio);
+#endif
+ cpl->ctrl0 = htonl(ctrl0);
cpl->pack = htons(0);
cpl->len = htons(skb->len);
cpl->ctrl1 = cpu_to_be64(cntrl);
diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_msg.h b/drivers/net/ethernet/chelsio/cxgb4/t4_msg.h
index 132cb8fc0bf7..b99144afd4ec 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/t4_msg.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_msg.h
@@ -660,6 +660,9 @@ struct cpl_tx_pkt {
#define TXPKT_OVLAN_IDX_S 12
#define TXPKT_OVLAN_IDX_V(x) ((x) << TXPKT_OVLAN_IDX_S)
+#define TXPKT_T5_OVLAN_IDX_S 12
+#define TXPKT_T5_OVLAN_IDX_V(x) ((x) << TXPKT_T5_OVLAN_IDX_S)
+
#define TXPKT_INTF_S 16
#define TXPKT_INTF_V(x) ((x) << TXPKT_INTF_S)
--
2.4.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net-next 0/4] cxgb4 DCB updates
2015-07-17 20:12 [PATCH net-next 0/4] cxgb4 DCB updates Anish Bhatt
` (3 preceding siblings ...)
2015-07-17 20:12 ` [PATCH net-next 4/4] cxgb4 : Fill DCB priority in vlan control headers Anish Bhatt
@ 2015-07-21 7:23 ` David Miller
4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2015-07-21 7:23 UTC (permalink / raw)
To: anish; +Cc: netdev, hariprasad
From: Anish Bhatt <anish@chelsio.com>
Date: Fri, 17 Jul 2015 13:12:29 -0700
> The following patchset covers changes to work better with the userspace
> tools cgdcbxd and cgrulesengd and improves firmware support for
> host-managed mode.
>
> Also exports traffic class information that was previously not being
> exported via dcbnl_ops and unfifies how app selector information is passed
> to firmware.
Series applied, thank you.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-07-21 7:23 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-17 20:12 [PATCH net-next 0/4] cxgb4 DCB updates Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 1/4] cxgb4 : Only pass app selector of 0 or 3 to firmware Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 2/4] cxgb4 : Allow firmware DCB info to be queried in host state Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 3/4] cxgb4 : Fill in number of DCB traffic classes supported Anish Bhatt
2015-07-17 20:12 ` [PATCH net-next 4/4] cxgb4 : Fill DCB priority in vlan control headers Anish Bhatt
2015-07-21 7:23 ` [PATCH net-next 0/4] cxgb4 DCB updates David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).