Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git]
/
kernel
/
drivers
/
net
/
wireless
/
brcm80211
/
brcmfmac
/
fwsignal.c
diff --git
a/kernel/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
b/kernel/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
index
f0dda0e
..
086cac3
100644
(file)
--- a/
kernel/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
+++ b/
kernel/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
@@
-635,7
+635,7
@@
static int brcmf_fws_hanger_pushpkt(struct brcmf_fws_hanger *h,
return 0;
}
return 0;
}
-static int brcmf_fws_hanger_poppkt(struct brcmf_fws_hanger *h,
+static in
line in
t brcmf_fws_hanger_poppkt(struct brcmf_fws_hanger *h,
u32 slot_id, struct sk_buff **pktout,
bool remove_item)
{
u32 slot_id, struct sk_buff **pktout,
bool remove_item)
{
@@
-972,7
+972,7
@@
static void
brcmf_fws_flow_control_check(struct brcmf_fws_info *fws, struct pktq *pq,
u8 if_id)
{
brcmf_fws_flow_control_check(struct brcmf_fws_info *fws, struct pktq *pq,
u8 if_id)
{
- struct brcmf_if *ifp =
fws->drvr->iflist[!if_id ? 0 : if_id + 1]
;
+ struct brcmf_if *ifp =
brcmf_get_ifp(fws->drvr, if_id)
;
if (WARN_ON(!ifp))
return;
if (WARN_ON(!ifp))
return;
@@
-1398,7
+1398,7
@@
done:
}
static int brcmf_fws_txstatus_suppressed(struct brcmf_fws_info *fws, int fifo,
}
static int brcmf_fws_txstatus_suppressed(struct brcmf_fws_info *fws, int fifo,
- struct sk_buff *skb,
u8 ifidx,
+ struct sk_buff *skb,
u32 genbit, u16 seq)
{
struct brcmf_fws_mac_descriptor *entry = brcmf_skbcb(skb)->mac;
u32 genbit, u16 seq)
{
struct brcmf_fws_mac_descriptor *entry = brcmf_skbcb(skb)->mac;
@@
-1448,7
+1448,7
@@
brcmf_fws_txs_process(struct brcmf_fws_info *fws, u8 flags, u32 hslot,
struct sk_buff *skb;
struct brcmf_skbuff_cb *skcb;
struct brcmf_fws_mac_descriptor *entry = NULL;
struct sk_buff *skb;
struct brcmf_skbuff_cb *skcb;
struct brcmf_fws_mac_descriptor *entry = NULL;
-
u8 ifidx
;
+
struct brcmf_if *ifp
;
brcmf_dbg(DATA, "flags %d\n", flags);
brcmf_dbg(DATA, "flags %d\n", flags);
@@
-1497,15
+1497,16
@@
brcmf_fws_txs_process(struct brcmf_fws_info *fws, u8 flags, u32 hslot,
}
brcmf_fws_macdesc_return_req_credit(skb);
}
brcmf_fws_macdesc_return_req_credit(skb);
- if (brcmf_proto_hdrpull(fws->drvr, false, &ifidx, skb)) {
+ ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
+ if (ret) {
brcmu_pkt_buf_free_skb(skb);
return -EINVAL;
}
if (!remove_from_hanger)
brcmu_pkt_buf_free_skb(skb);
return -EINVAL;
}
if (!remove_from_hanger)
- ret = brcmf_fws_txstatus_suppressed(fws, fifo, skb,
ifidx,
+ ret = brcmf_fws_txstatus_suppressed(fws, fifo, skb,
genbit, seq);
if (remove_from_hanger || ret)
genbit, seq);
if (remove_from_hanger || ret)
- brcmf_txfinalize(
fws->drvr, skb, ifidx
, true);
+ brcmf_txfinalize(
ifp, skb
, true);
return 0;
}
return 0;
}
@@
-1615,11
+1616,10
@@
static int brcmf_fws_notify_bcmc_credit_support(struct brcmf_if *ifp,
return 0;
}
return 0;
}
-int brcmf_fws_hdrpull(struct brcmf_pub *drvr, int ifidx, s16 signal_len,
- struct sk_buff *skb)
+void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb)
{
struct brcmf_skb_reorder_data *rd;
{
struct brcmf_skb_reorder_data *rd;
- struct brcmf_fws_info *fws = drvr->fws;
+ struct brcmf_fws_info *fws =
ifp->
drvr->fws;
u8 *signal_data;
s16 data_len;
u8 type;
u8 *signal_data;
s16 data_len;
u8 type;
@@
-1629,20
+1629,20
@@
int brcmf_fws_hdrpull(struct brcmf_pub *drvr, int ifidx, s16 signal_len,
s32 err;
brcmf_dbg(HDRS, "enter: ifidx %d, skblen %u, sig %d\n",
s32 err;
brcmf_dbg(HDRS, "enter: ifidx %d, skblen %u, sig %d\n",
- if
idx, skb->len, signal_
len);
+ if
p->ifidx, skb->len, sig
len);
- WARN_ON(sig
nal_
len > skb->len);
+ WARN_ON(siglen > skb->len);
- if (!sig
nal_
len)
- return
0
;
+ if (!siglen)
+ return;
/* if flow control disabled, skip to packet data and leave */
if ((!fws) || (!fws->fw_signals)) {
/* if flow control disabled, skip to packet data and leave */
if ((!fws) || (!fws->fw_signals)) {
- skb_pull(skb, sig
nal_
len);
- return
0
;
+ skb_pull(skb, siglen);
+ return;
}
fws->stats.header_pulls++;
}
fws->stats.header_pulls++;
- data_len = sig
nal_
len;
+ data_len = siglen;
signal_data = skb->data;
status = BRCMF_FWS_RET_OK_NOSCHEDULE;
signal_data = skb->data;
status = BRCMF_FWS_RET_OK_NOSCHEDULE;
@@
-1730,14
+1730,12
@@
int brcmf_fws_hdrpull(struct brcmf_pub *drvr, int ifidx, s16 signal_len,
/* signalling processing result does
* not affect the actual ethernet packet.
*/
/* signalling processing result does
* not affect the actual ethernet packet.
*/
- skb_pull(skb, sig
nal_
len);
+ skb_pull(skb, siglen);
/* this may be a signal-only packet
*/
if (skb->len == 0)
fws->stats.header_only_pkt++;
/* this may be a signal-only packet
*/
if (skb->len == 0)
fws->stats.header_only_pkt++;
-
- return 0;
}
static u8 brcmf_fws_precommit_skb(struct brcmf_fws_info *fws, int fifo,
}
static u8 brcmf_fws_precommit_skb(struct brcmf_fws_info *fws, int fifo,
@@
-1848,7
+1846,7
@@
static int brcmf_fws_commit_skb(struct brcmf_fws_info *fws, int fifo,
entry->transit_count--;
if (entry->suppressed)
entry->suppr_transit_count--;
entry->transit_count--;
if (entry->suppressed)
entry->suppr_transit_count--;
-
brcmf_proto_hdrpull(fws->drvr, false, &ifidx, skb
);
+
(void)brcmf_proto_hdrpull(fws->drvr, false, skb, NULL
);
goto rollback;
}
goto rollback;
}
@@
-1904,7
+1902,7
@@
int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb)
if (fws->avoid_queueing) {
rc = brcmf_proto_txdata(drvr, ifp->ifidx, 0, skb);
if (rc < 0)
if (fws->avoid_queueing) {
rc = brcmf_proto_txdata(drvr, ifp->ifidx, 0, skb);
if (rc < 0)
- brcmf_txfinalize(
drvr, skb, ifp->ifidx
, false);
+ brcmf_txfinalize(
ifp, skb
, false);
return rc;
}
return rc;
}
@@
-1928,7
+1926,7
@@
int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb)
brcmf_fws_schedule_deq(fws);
} else {
brcmf_err("drop skb: no hanger slot\n");
brcmf_fws_schedule_deq(fws);
} else {
brcmf_err("drop skb: no hanger slot\n");
- brcmf_txfinalize(
drvr, skb, ifp->ifidx
, false);
+ brcmf_txfinalize(
ifp, skb
, false);
rc = -ENOMEM;
}
brcmf_fws_unlock(fws);
rc = -ENOMEM;
}
brcmf_fws_unlock(fws);
@@
-2008,8
+2006,9
@@
static void brcmf_fws_dequeue_worker(struct work_struct *worker)
ret = brcmf_proto_txdata(drvr, ifidx, 0, skb);
brcmf_fws_lock(fws);
if (ret < 0)
ret = brcmf_proto_txdata(drvr, ifidx, 0, skb);
brcmf_fws_lock(fws);
if (ret < 0)
- brcmf_txfinalize(drvr, skb, ifidx,
- false);
+ brcmf_txfinalize(brcmf_get_ifp(drvr,
+ ifidx),
+ skb, false);
if (fws->bus_flow_blocked)
break;
}
if (fws->bus_flow_blocked)
break;
}
@@
-2117,6
+2116,7
@@
static int brcmf_debugfs_fws_stats_read(struct seq_file *seq, void *data)
int brcmf_fws_init(struct brcmf_pub *drvr)
{
struct brcmf_fws_info *fws;
int brcmf_fws_init(struct brcmf_pub *drvr)
{
struct brcmf_fws_info *fws;
+ struct brcmf_if *ifp;
u32 tlv = BRCMF_FWS_FLAGS_RSSI_SIGNALS;
int rc;
u32 mode;
u32 tlv = BRCMF_FWS_FLAGS_RSSI_SIGNALS;
int rc;
u32 mode;
@@
-2176,21
+2176,22
@@
int brcmf_fws_init(struct brcmf_pub *drvr)
* continue. Set mode back to none indicating not enabled.
*/
fws->fw_signals = true;
* continue. Set mode back to none indicating not enabled.
*/
fws->fw_signals = true;
- if (brcmf_fil_iovar_int_set(drvr->iflist[0], "tlv", tlv)) {
+ ifp = brcmf_get_ifp(drvr, 0);
+ if (brcmf_fil_iovar_int_set(ifp, "tlv", tlv)) {
brcmf_err("failed to set bdcv2 tlv signaling\n");
fws->fcmode = BRCMF_FWS_FCMODE_NONE;
fws->fw_signals = false;
}
brcmf_err("failed to set bdcv2 tlv signaling\n");
fws->fcmode = BRCMF_FWS_FCMODE_NONE;
fws->fw_signals = false;
}
- if (brcmf_fil_iovar_int_set(
drvr->iflist[0]
, "ampdu_hostreorder", 1))
+ if (brcmf_fil_iovar_int_set(
ifp
, "ampdu_hostreorder", 1))
brcmf_dbg(INFO, "enabling AMPDU host-reorder failed\n");
/* Enable seq number reuse, if supported */
brcmf_dbg(INFO, "enabling AMPDU host-reorder failed\n");
/* Enable seq number reuse, if supported */
- if (brcmf_fil_iovar_int_get(
drvr->iflist[0]
, "wlfc_mode", &mode) == 0) {
+ if (brcmf_fil_iovar_int_get(
ifp
, "wlfc_mode", &mode) == 0) {
if (BRCMF_FWS_MODE_GET_REUSESEQ(mode)) {
mode = 0;
BRCMF_FWS_MODE_SET_REUSESEQ(mode, 1);
if (BRCMF_FWS_MODE_GET_REUSESEQ(mode)) {
mode = 0;
BRCMF_FWS_MODE_SET_REUSESEQ(mode, 1);
- if (brcmf_fil_iovar_int_set(
drvr->iflist[0]
,
+ if (brcmf_fil_iovar_int_set(
ifp
,
"wlfc_mode", mode) == 0) {
BRCMF_FWS_MODE_SET_REUSESEQ(fws->mode, 1);
}
"wlfc_mode", mode) == 0) {
BRCMF_FWS_MODE_SET_REUSESEQ(fws->mode, 1);
}