qcacmn: Add CB ftype for DMS packets

Directed Multicast Service (DMS) allows a client to request the AP
to convert multicast frames that match a certain traffic classifier
into unicast frames for the client. This request can be sent either
as a DMS Request Information Element in the Association/Reassociation
Request frame or explicitly via a DMS Request Action Frame after the
client has completed association. If the AP accepts the DMS Request,
all multicast frames matching the traffic classifier specified in the
DMS Request will be unicasted directly to the client as an AMSDU.
The original multicast frame will still be transmitted for the benefit
of those clients that do not support or request for DMS.

Add new CB ftype to differentiate data packets intended for DMS subscribed
clients

CRs-Fixed: 2056341
Change-Id: I687e4f4d182869753e2c3670ec07aa64f95fda1b
This commit is contained in:
Sathish Kumar
2018-07-16 14:40:46 +05:30
کامیت شده توسط nshrivas
والد c224b9e9c7
کامیت 8b2d1c7c05
2فایلهای تغییر یافته به همراه30 افزوده شده و 16 حذف شده

مشاهده پرونده

@@ -457,6 +457,32 @@ enum qdf_proto_type {
QDF_PROTO_TYPE_MAX
};
/**
* cb_ftype - Frame type information in skb cb
* @CB_FTYPE_INVALID - Invalid
* @CB_FTYPE_MCAST2UCAST - Multicast to Unicast converted packet
* @CB_FTYPE_TSO - TCP Segmentation Offload
* @CB_FTYPE_TSO_SG - TSO Scatter Gather
* @CB_FTYPE_SG - Scatter Gather
* @CB_FTYPE_INTRABSS_FWD - Intra BSS forwarding
* @CB_FTYPE_RX_INFO - Rx information
* @CB_FTYPE_MESH_RX_INFO - Mesh Rx information
* @CB_FTYPE_MESH_TX_INFO - Mesh Tx information
* @CB_FTYPE_DMS - Directed Multicast Service
*/
enum cb_ftype {
CB_FTYPE_INVALID = 0,
CB_FTYPE_MCAST2UCAST = 1,
CB_FTYPE_TSO = 2,
CB_FTYPE_TSO_SG = 3,
CB_FTYPE_SG = 4,
CB_FTYPE_INTRABSS_FWD = 5,
CB_FTYPE_RX_INFO = 6,
CB_FTYPE_MESH_RX_INFO = 7,
CB_FTYPE_MESH_TX_INFO = 8,
CB_FTYPE_DMS = 9,
};
/**
* qdf_proto_subtype - subtype of packet
* @QDF_PROTO_EAPOL_M1 - EAPOL 1/4
@@ -830,13 +856,13 @@ qdf_nbuf_set_vdev_ctx(qdf_nbuf_t buf, uint8_t vdev_id)
}
static inline void
qdf_nbuf_set_tx_ftype(qdf_nbuf_t buf, uint8_t type)
qdf_nbuf_set_tx_ftype(qdf_nbuf_t buf, enum cb_ftype type)
{
__qdf_nbuf_set_tx_ftype(buf, type);
}
static inline void
qdf_nbuf_set_rx_ftype(qdf_nbuf_t buf, uint8_t type)
qdf_nbuf_set_rx_ftype(qdf_nbuf_t buf, enum cb_ftype type)
{
__qdf_nbuf_set_rx_ftype(buf, type);
}
@@ -849,12 +875,12 @@ qdf_nbuf_get_vdev_ctx(qdf_nbuf_t buf)
return __qdf_nbuf_get_vdev_ctx(buf);
}
static inline uint8_t qdf_nbuf_get_tx_ftype(qdf_nbuf_t buf)
static inline enum cb_ftype qdf_nbuf_get_tx_ftype(qdf_nbuf_t buf)
{
return __qdf_nbuf_get_tx_ftype(buf);
}
static inline uint8_t qdf_nbuf_get_rx_ftype(qdf_nbuf_t buf)
static inline enum cb_ftype qdf_nbuf_get_rx_ftype(qdf_nbuf_t buf)
{
return __qdf_nbuf_get_rx_ftype(buf);
}